diff options
Diffstat (limited to 'deps/v8/src/mips/lithium-mips.h')
-rw-r--r-- | deps/v8/src/mips/lithium-mips.h | 83 |
1 files changed, 51 insertions, 32 deletions
diff --git a/deps/v8/src/mips/lithium-mips.h b/deps/v8/src/mips/lithium-mips.h index 667487014a..82c5ffd29d 100644 --- a/deps/v8/src/mips/lithium-mips.h +++ b/deps/v8/src/mips/lithium-mips.h @@ -117,6 +117,7 @@ class LCodeGen; V(MathPowHalf) \ V(MathRound) \ V(MathSqrt) \ + V(MaybeGrowElements) \ V(ModByConstI) \ V(ModByPowerOf2I) \ V(ModI) \ @@ -151,7 +152,6 @@ class LCodeGen; V(StringCompareAndBranch) \ V(SubI) \ V(TaggedToI) \ - V(TailCallThroughMegamorphicCache) \ V(ThisFunction) \ V(ToFastProperties) \ V(TransitionElementsKind) \ @@ -471,26 +471,6 @@ class LCallStub final : public LTemplateInstruction<1, 1, 0> { }; -class LTailCallThroughMegamorphicCache final - : public LTemplateInstruction<0, 3, 0> { - public: - LTailCallThroughMegamorphicCache(LOperand* context, LOperand* receiver, - LOperand* name) { - inputs_[0] = context; - inputs_[1] = receiver; - inputs_[2] = name; - } - - LOperand* context() { return inputs_[0]; } - LOperand* receiver() { return inputs_[1]; } - LOperand* name() { return inputs_[2]; } - - DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache, - "tail-call-through-megamorphic-cache") - DECLARE_HYDROGEN_ACCESSOR(TailCallThroughMegamorphicCache) -}; - - class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> { public: bool HasInterestingComment(LCodeGen* gen) const override { return false; } @@ -1174,6 +1154,8 @@ class LCmpT final : public LTemplateInstruction<1, 3, 0> { DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t") DECLARE_HYDROGEN_ACCESSOR(CompareGeneric) + Strength strength() { return hydrogen()->strength(); } + Token::Value op() const { return hydrogen()->token(); } }; @@ -1530,7 +1512,7 @@ class LArithmeticT final : public LTemplateInstruction<1, 3, 0> { DECLARE_HYDROGEN_ACCESSOR(BinaryOperation) - LanguageMode language_mode() { return hydrogen()->language_mode(); } + Strength strength() { return hydrogen()->strength(); } private: Token::Value op_; @@ -1828,8 +1810,12 @@ class LCallWithDescriptor final : public LTemplateResultInstruction<1> { LCallWithDescriptor(CallInterfaceDescriptor descriptor, const ZoneList<LOperand*>& operands, Zone* zone) : descriptor_(descriptor), - inputs_(descriptor.GetRegisterParameterCount() + 1, zone) { - DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length()); + inputs_(descriptor.GetRegisterParameterCount() + + kImplicitRegisterParameterCount, + zone) { + DCHECK(descriptor.GetRegisterParameterCount() + + kImplicitRegisterParameterCount == + operands.length()); inputs_.AddAll(operands, zone); } @@ -1839,6 +1825,10 @@ class LCallWithDescriptor final : public LTemplateResultInstruction<1> { DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor) + // The target and context are passed as implicit parameters that are not + // explicitly listed in the descriptor. + static const int kImplicitRegisterParameterCount = 2; + private: DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor") @@ -2151,17 +2141,22 @@ class LStoreNamedField final : public LTemplateInstruction<0, 2, 1> { }; -class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 0> { +class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 2> { public: - LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) { + LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value, + LOperand* slot, LOperand* vector) { inputs_[0] = context; inputs_[1] = object; inputs_[2] = value; + temps_[0] = slot; + temps_[1] = vector; } LOperand* context() { return inputs_[0]; } LOperand* object() { return inputs_[1]; } LOperand* value() { return inputs_[2]; } + LOperand* temp_slot() { return temps_[0]; } + LOperand* temp_vector() { return temps_[1]; } DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) @@ -2204,22 +2199,24 @@ class LStoreKeyed final : public LTemplateInstruction<0, 3, 0> { }; -class LStoreKeyedGeneric final : public LTemplateInstruction<0, 4, 0> { +class LStoreKeyedGeneric final : public LTemplateInstruction<0, 4, 2> { public: - LStoreKeyedGeneric(LOperand* context, - LOperand* obj, - LOperand* key, - LOperand* value) { + LStoreKeyedGeneric(LOperand* context, LOperand* object, LOperand* key, + LOperand* value, LOperand* slot, LOperand* vector) { inputs_[0] = context; - inputs_[1] = obj; + inputs_[1] = object; inputs_[2] = key; inputs_[3] = value; + temps_[0] = slot; + temps_[1] = vector; } LOperand* context() { return inputs_[0]; } LOperand* object() { return inputs_[1]; } LOperand* key() { return inputs_[2]; } LOperand* value() { return inputs_[3]; } + LOperand* temp_slot() { return temps_[0]; } + LOperand* temp_vector() { return temps_[1]; } DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) @@ -2275,6 +2272,28 @@ class LTrapAllocationMemento final : public LTemplateInstruction<0, 1, 1> { }; +class LMaybeGrowElements final : public LTemplateInstruction<1, 5, 0> { + public: + LMaybeGrowElements(LOperand* context, LOperand* object, LOperand* elements, + LOperand* key, LOperand* current_capacity) { + inputs_[0] = context; + inputs_[1] = object; + inputs_[2] = elements; + inputs_[3] = key; + inputs_[4] = current_capacity; + } + + LOperand* context() { return inputs_[0]; } + LOperand* object() { return inputs_[1]; } + LOperand* elements() { return inputs_[2]; } + LOperand* key() { return inputs_[3]; } + LOperand* current_capacity() { return inputs_[4]; } + + DECLARE_HYDROGEN_ACCESSOR(MaybeGrowElements) + DECLARE_CONCRETE_INSTRUCTION(MaybeGrowElements, "maybe-grow-elements") +}; + + class LStringAdd final : public LTemplateInstruction<1, 3, 0> { public: LStringAdd(LOperand* context, LOperand* left, LOperand* right) { |