diff options
Diffstat (limited to 'deps/v8/src/compiler/js-operator.cc')
-rw-r--r-- | deps/v8/src/compiler/js-operator.cc | 43 |
1 files changed, 15 insertions, 28 deletions
diff --git a/deps/v8/src/compiler/js-operator.cc b/deps/v8/src/compiler/js-operator.cc index 5b5e6589d2..0ddf859cff 100644 --- a/deps/v8/src/compiler/js-operator.cc +++ b/deps/v8/src/compiler/js-operator.cc @@ -9,9 +9,9 @@ #include "src/base/lazy-instance.h" #include "src/compiler/opcodes.h" #include "src/compiler/operator.h" -#include "src/feedback-vector.h" #include "src/handles-inl.h" #include "src/objects-inl.h" +#include "src/vector-slot-pair.h" namespace v8 { namespace internal { @@ -28,29 +28,6 @@ CallFrequency CallFrequencyOf(Operator const* op) { return OpParameter<CallFrequency>(op); } -VectorSlotPair::VectorSlotPair() {} - - -int VectorSlotPair::index() const { - return vector_.is_null() ? -1 : FeedbackVector::GetIndex(slot_); -} - - -bool operator==(VectorSlotPair const& lhs, VectorSlotPair const& rhs) { - return lhs.slot() == rhs.slot() && - lhs.vector().location() == rhs.vector().location(); -} - - -bool operator!=(VectorSlotPair const& lhs, VectorSlotPair const& rhs) { - return !(lhs == rhs); -} - - -size_t hash_value(VectorSlotPair const& p) { - return base::hash_combine(p.slot(), p.vector().location()); -} - std::ostream& operator<<(std::ostream& os, ConstructForwardVarargsParameters const& p) { @@ -599,6 +576,7 @@ CompareOperationHint CompareOperationHintOf(const Operator* op) { V(LoadMessage, Operator::kNoThrow | Operator::kNoWrite, 0, 1) \ V(StoreMessage, Operator::kNoRead | Operator::kNoThrow, 1, 0) \ V(GeneratorRestoreContinuation, Operator::kNoThrow, 1, 1) \ + V(GeneratorRestoreInputOrDebugPos, Operator::kNoThrow, 1, 1) \ V(StackCheck, Operator::kNoWrite, 0, 0) \ V(Debugger, Operator::kNoProperties, 0, 0) \ V(GetSuperConstructor, Operator::kNoWrite, 1, 1) @@ -645,6 +623,7 @@ struct JSOperatorGlobalCache final { Name##Operator<BinaryOperationHint::kNumberOrOddball> \ k##Name##NumberOrOddballOperator; \ Name##Operator<BinaryOperationHint::kString> k##Name##StringOperator; \ + Name##Operator<BinaryOperationHint::kBigInt> k##Name##BigIntOperator; \ Name##Operator<BinaryOperationHint::kAny> k##Name##AnyOperator; BINARY_OP_LIST(BINARY_OP) #undef BINARY_OP @@ -667,6 +646,7 @@ struct JSOperatorGlobalCache final { k##Name##InternalizedStringOperator; \ Name##Operator<CompareOperationHint::kString> k##Name##StringOperator; \ Name##Operator<CompareOperationHint::kSymbol> k##Name##SymbolOperator; \ + Name##Operator<CompareOperationHint::kBigInt> k##Name##BigIntOperator; \ Name##Operator<CompareOperationHint::kReceiver> k##Name##ReceiverOperator; \ Name##Operator<CompareOperationHint::kAny> k##Name##AnyOperator; COMPARE_OP_LIST(COMPARE_OP) @@ -703,6 +683,8 @@ CACHED_OP_LIST(CACHED_OP) return &cache_.k##Name##NumberOrOddballOperator; \ case BinaryOperationHint::kString: \ return &cache_.k##Name##StringOperator; \ + case BinaryOperationHint::kBigInt: \ + return &cache_.k##Name##BigIntOperator; \ case BinaryOperationHint::kAny: \ return &cache_.k##Name##AnyOperator; \ } \ @@ -729,6 +711,8 @@ BINARY_OP_LIST(BINARY_OP) return &cache_.k##Name##StringOperator; \ case CompareOperationHint::kSymbol: \ return &cache_.k##Name##SymbolOperator; \ + case CompareOperationHint::kBigInt: \ + return &cache_.k##Name##BigIntOperator; \ case CompareOperationHint::kReceiver: \ return &cache_.k##Name##ReceiverOperator; \ case CompareOperationHint::kAny: \ @@ -763,8 +747,10 @@ const Operator* JSOperatorBuilder::CallForwardVarargs(size_t arity, const Operator* JSOperatorBuilder::Call(size_t arity, CallFrequency frequency, VectorSlotPair const& feedback, - ConvertReceiverMode convert_mode) { - CallParameters parameters(arity, frequency, feedback, convert_mode); + ConvertReceiverMode convert_mode, + SpeculationMode speculation_mode) { + CallParameters parameters(arity, frequency, feedback, convert_mode, + speculation_mode); return new (zone()) Operator1<CallParameters>( // -- IrOpcode::kJSCall, Operator::kNoProperties, // opcode "JSCall", // name @@ -781,9 +767,10 @@ const Operator* JSOperatorBuilder::CallWithArrayLike(CallFrequency frequency) { } const Operator* JSOperatorBuilder::CallWithSpread( - uint32_t arity, CallFrequency frequency, VectorSlotPair const& feedback) { + uint32_t arity, CallFrequency frequency, VectorSlotPair const& feedback, + SpeculationMode speculation_mode) { CallParameters parameters(arity, frequency, feedback, - ConvertReceiverMode::kAny); + ConvertReceiverMode::kAny, speculation_mode); return new (zone()) Operator1<CallParameters>( // -- IrOpcode::kJSCallWithSpread, Operator::kNoProperties, // opcode "JSCallWithSpread", // name |