| Index: src/arm/lithium-arm.h
|
| diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h
|
| index 5e1c9918e9099e821381707fbaf2c5891b2e5096..e6e102f7620042141a13034a137489e01bd6c753 100644
|
| --- a/src/arm/lithium-arm.h
|
| +++ b/src/arm/lithium-arm.h
|
| @@ -261,6 +261,9 @@ class LInstruction: public ZoneObject {
|
| virtual bool HasResult() const = 0;
|
| virtual LOperand* result() = 0;
|
|
|
| + virtual int TempCount() = 0;
|
| + virtual LOperand* TempAt(int i) = 0;
|
| +
|
| LOperand* FirstInput() { return InputAt(0); }
|
| LOperand* Output() { return HasResult() ? result() : NULL; }
|
|
|
| @@ -274,10 +277,6 @@ class LInstruction: public ZoneObject {
|
| virtual int InputCount() = 0;
|
| virtual LOperand* InputAt(int i) = 0;
|
|
|
| - friend class TempIterator;
|
| - virtual int TempCount() = 0;
|
| - virtual LOperand* TempAt(int i) = 0;
|
| -
|
| LEnvironment* environment_;
|
| SetOncePointer<LPointerMap> pointer_map_;
|
| HValue* hydrogen_value_;
|
| @@ -297,6 +296,11 @@ class LTemplateInstruction: public LInstruction {
|
| void set_result(LOperand* operand) { results_[0] = operand; }
|
| LOperand* result() { return results_[0]; }
|
|
|
| + LOperand* InputAt(int i) { return inputs_[i]; }
|
| +
|
| + int TempCount() { return T; }
|
| + LOperand* TempAt(int i) { return temps_[i]; }
|
| +
|
| protected:
|
| EmbeddedContainer<LOperand*, R> results_;
|
| EmbeddedContainer<LOperand*, I> inputs_;
|
| @@ -304,10 +308,6 @@ class LTemplateInstruction: public LInstruction {
|
|
|
| private:
|
| virtual int InputCount() { return I; }
|
| - virtual LOperand* InputAt(int i) { return inputs_[i]; }
|
| -
|
| - virtual int TempCount() { return T; }
|
| - virtual LOperand* TempAt(int i) { return temps_[i]; }
|
| };
|
|
|
|
|
| @@ -525,8 +525,6 @@ class LArgumentsLength: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = elements;
|
| }
|
|
|
| - LOperand* elements() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length")
|
| };
|
|
|
| @@ -553,22 +551,16 @@ class LModI: public LTemplateInstruction<1, 2, 3> {
|
| // Used for the standard case.
|
| LModI(LOperand* left,
|
| LOperand* right,
|
| - LOperand* temp,
|
| + LOperand* temp1,
|
| LOperand* temp2,
|
| LOperand* temp3) {
|
| inputs_[0] = left;
|
| inputs_[1] = right;
|
| - temps_[0] = temp;
|
| + temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| temps_[2] = temp3;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| - LOperand* temp2() { return temps_[1]; }
|
| - LOperand* temp3() { return temps_[2]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ModI, "mod-i")
|
| DECLARE_HYDROGEN_ACCESSOR(Mod)
|
| };
|
| @@ -581,9 +573,6 @@ class LDivI: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(DivI, "div-i")
|
| DECLARE_HYDROGEN_ACCESSOR(Div)
|
| };
|
| @@ -599,10 +588,6 @@ class LMathFloorOfDiv: public LTemplateInstruction<1, 2, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div")
|
| DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv)
|
| };
|
| @@ -616,10 +601,6 @@ class LMulI: public LTemplateInstruction<1, 2, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i")
|
| DECLARE_HYDROGEN_ACCESSOR(Mul)
|
| };
|
| @@ -632,9 +613,6 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
|
|
|
| @@ -654,9 +632,6 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation")
|
| DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
|
|
|
| @@ -672,9 +647,6 @@ class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch,
|
| "cmp-object-eq-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(CompareObjectEqAndBranch)
|
| @@ -687,8 +659,6 @@ class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = left;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
|
| "cmp-constant-eq-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
|
| @@ -701,8 +671,6 @@ class LIsNilAndBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(IsNilAndBranch, "is-nil-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(IsNilAndBranch)
|
|
|
| @@ -720,9 +688,6 @@ class LIsObjectAndBranch: public LControlInstruction<1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
|
|
|
| @@ -737,9 +702,6 @@ class LIsStringAndBranch: public LControlInstruction<1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(IsStringAndBranch)
|
|
|
| @@ -753,8 +715,6 @@ class LIsSmiAndBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
|
|
|
| @@ -769,9 +729,6 @@ class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
|
| "is-undetectable-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
|
| @@ -787,9 +744,6 @@ class LStringCompareAndBranch: public LControlInstruction<2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
|
| "string-compare-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch)
|
| @@ -806,8 +760,6 @@ class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
|
| "has-instance-type-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
|
| @@ -822,8 +774,6 @@ class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index")
|
| DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex)
|
| };
|
| @@ -835,8 +785,6 @@ class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
|
| "has-cached-array-index-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
|
| @@ -852,9 +800,6 @@ class LClassOfTestAndBranch: public LControlInstruction<1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
|
| "class-of-test-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
|
| @@ -870,9 +815,6 @@ class LCmpT: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
|
| DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
|
|
|
| @@ -887,9 +829,6 @@ class LInstanceOf: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
|
| };
|
|
|
| @@ -901,9 +840,6 @@ class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
|
| "instance-of-known-global")
|
| DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal)
|
| @@ -943,9 +879,6 @@ class LBitI: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| Token::Value op() const { return hydrogen()->op(); }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i")
|
| @@ -962,8 +895,7 @@ class LShiftI: public LTemplateInstruction<1, 2, 0> {
|
| }
|
|
|
| Token::Value op() const { return op_; }
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| +
|
| bool can_deopt() const { return can_deopt_; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i")
|
| @@ -981,9 +913,6 @@ class LSubI: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i")
|
| DECLARE_HYDROGEN_ACCESSOR(Sub)
|
| };
|
| @@ -1022,8 +951,6 @@ class LBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
|
| DECLARE_HYDROGEN_ACCESSOR(Branch)
|
|
|
| @@ -1038,9 +965,6 @@ class LCmpMapAndBranch: public LTemplateInstruction<0, 1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(CompareMap)
|
|
|
| @@ -1062,8 +986,6 @@ class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length")
|
| DECLARE_HYDROGEN_ACCESSOR(JSArrayLength)
|
| };
|
| @@ -1075,8 +997,6 @@ class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
|
| "fixed-array-base-length")
|
| DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
|
| @@ -1089,8 +1009,6 @@ class LMapEnumLength: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length")
|
| };
|
|
|
| @@ -1101,8 +1019,6 @@ class LElementsKind: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
|
| DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
|
| };
|
| @@ -1115,9 +1031,6 @@ class LValueOf: public LTemplateInstruction<1, 1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
|
| DECLARE_HYDROGEN_ACCESSOR(ValueOf)
|
| };
|
| @@ -1130,26 +1043,40 @@ class LDateField: public LTemplateInstruction<1, 1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* date() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| - Smi* index() const { return index_; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ValueOf, "date-field")
|
| DECLARE_HYDROGEN_ACCESSOR(ValueOf)
|
| + Smi* index() const { return index_; }
|
|
|
| private:
|
| Smi* index_;
|
| };
|
|
|
|
|
| +class LSetDateField: public LTemplateInstruction<1, 2, 1> {
|
| + public:
|
| + LSetDateField(LOperand* date, LOperand* value, LOperand* temp, int index)
|
| + : index_(index) {
|
| + inputs_[0] = date;
|
| + inputs_[1] = value;
|
| + temps_[0] = temp;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(DateField, "date-set-field")
|
| + DECLARE_HYDROGEN_ACCESSOR(DateField)
|
| +
|
| + int index() const { return index_; }
|
| +
|
| + private:
|
| + int index_;
|
| +};
|
| +
|
| +
|
| class LThrow: public LTemplateInstruction<0, 1, 0> {
|
| public:
|
| explicit LThrow(LOperand* value) {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
|
| };
|
|
|
| @@ -1160,8 +1087,6 @@ class LBitNotI: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i")
|
| };
|
|
|
| @@ -1173,9 +1098,6 @@ class LAddI: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i")
|
| DECLARE_HYDROGEN_ACCESSOR(Add)
|
| };
|
| @@ -1188,9 +1110,6 @@ class LMathMinMax: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(MathMinMax, "min-max")
|
| DECLARE_HYDROGEN_ACCESSOR(MathMinMax)
|
| };
|
| @@ -1203,9 +1122,6 @@ class LPower: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Power, "power")
|
| DECLARE_HYDROGEN_ACCESSOR(Power)
|
| };
|
| @@ -1217,8 +1133,6 @@ class LRandom: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = global_object;
|
| }
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Random, "random")
|
| DECLARE_HYDROGEN_ACCESSOR(Random)
|
| };
|
| @@ -1233,8 +1147,6 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
| }
|
|
|
| Token::Value op() const { return op_; }
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
|
|
| virtual Opcode opcode() const { return LInstruction::kArithmeticD; }
|
| virtual void CompileToNative(LCodeGen* generator);
|
| @@ -1253,14 +1165,12 @@ class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| - Token::Value op() const { return op_; }
|
| -
|
| virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
|
| virtual void CompileToNative(LCodeGen* generator);
|
| virtual const char* Mnemonic() const;
|
|
|
| + Token::Value op() const { return op_; }
|
| +
|
| private:
|
| Token::Value op_;
|
| };
|
| @@ -1272,8 +1182,6 @@ class LReturn: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Return, "return")
|
| };
|
|
|
| @@ -1284,8 +1192,6 @@ class LLoadNamedField: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = object;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadNamedField)
|
| };
|
| @@ -1297,10 +1203,10 @@ class LLoadNamedFieldPolymorphic: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = object;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field-polymorphic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadNamedFieldPolymorphic)
|
| +
|
| + LOperand* object() { return inputs_[0]; }
|
| };
|
|
|
|
|
| @@ -1310,11 +1216,10 @@ class LLoadNamedGeneric: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = object;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
|
|
|
| + LOperand* object() { return inputs_[0]; }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| };
|
|
|
| @@ -1325,10 +1230,10 @@ class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = function;
|
| }
|
|
|
| - LOperand* function() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
|
| +
|
| + LOperand* function() { return inputs_[0]; }
|
| };
|
|
|
|
|
| @@ -1338,8 +1243,6 @@ class LLoadElements: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = object;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements")
|
| };
|
|
|
| @@ -1350,8 +1253,6 @@ class LLoadExternalArrayPointer: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = object;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
|
| "load-external-array-pointer")
|
| };
|
| @@ -1364,12 +1265,11 @@ class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = key;
|
| }
|
|
|
| - LOperand* elements() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement)
|
|
|
| + LOperand* elements() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| };
|
|
|
| @@ -1381,13 +1281,12 @@ class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = key;
|
| }
|
|
|
| - LOperand* elements() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement,
|
| "load-keyed-fast-double-element")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
|
|
|
| + LOperand* elements() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| };
|
|
|
| @@ -1399,13 +1298,12 @@ class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = key;
|
| }
|
|
|
| - LOperand* external_pointer() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement,
|
| "load-keyed-specialized-array-element")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement)
|
|
|
| + LOperand* external_pointer() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| ElementsKind elements_kind() const {
|
| return hydrogen()->elements_kind();
|
| }
|
| @@ -1415,15 +1313,15 @@ class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
|
|
| class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - LLoadKeyedGeneric(LOperand* object, LOperand* key) {
|
| - inputs_[0] = object;
|
| + LLoadKeyedGeneric(LOperand* obj, LOperand* key) {
|
| + inputs_[0] = obj;
|
| inputs_[1] = key;
|
| }
|
|
|
| + DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
|
| +
|
| LOperand* object() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
|
| };
|
|
|
|
|
| @@ -1440,11 +1338,10 @@ class LLoadGlobalGeneric: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = global_object;
|
| }
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
|
|
|
| + LOperand* global_object() { return inputs_[0]; }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| bool for_typeof() const { return hydrogen()->for_typeof(); }
|
| };
|
| @@ -1457,11 +1354,10 @@ class LStoreGlobalCell: public LTemplateInstruction<0, 1, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell)
|
| +
|
| + LOperand* value() { return inputs_[0]; }
|
| };
|
|
|
|
|
| @@ -1473,13 +1369,12 @@ class LStoreGlobalGeneric: public LTemplateInstruction<0, 2, 0> {
|
| inputs_[1] = value;
|
| }
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric)
|
|
|
| + LOperand* global_object() { return InputAt(0); }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| + LOperand* value() { return InputAt(1); }
|
| StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
| };
|
|
|
| @@ -1490,11 +1385,10 @@ class LLoadContextSlot: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = context;
|
| }
|
|
|
| - LOperand* context() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot)
|
|
|
| + LOperand* context() { return InputAt(0); }
|
| int slot_index() { return hydrogen()->slot_index(); }
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| @@ -1508,12 +1402,11 @@ class LStoreContextSlot: public LTemplateInstruction<0, 2, 0> {
|
| inputs_[1] = value;
|
| }
|
|
|
| - LOperand* context() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot)
|
|
|
| + LOperand* context() { return InputAt(0); }
|
| + LOperand* value() { return InputAt(1); }
|
| int slot_index() { return hydrogen()->slot_index(); }
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| @@ -1526,8 +1419,6 @@ class LPushArgument: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument")
|
| };
|
|
|
| @@ -1564,9 +1455,9 @@ class LOuterContext: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = context;
|
| }
|
|
|
| - LOperand* context() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
|
| +
|
| + LOperand* context() { return InputAt(0); }
|
| };
|
|
|
|
|
| @@ -1585,7 +1476,7 @@ class LGlobalObject: public LTemplateInstruction<1, 1, 0> {
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
|
|
|
| - LOperand* context() { return inputs_[0]; }
|
| + LOperand* context() { return InputAt(0); }
|
| };
|
|
|
|
|
| @@ -1595,9 +1486,9 @@ class LGlobalReceiver: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = global_object;
|
| }
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
|
| +
|
| + LOperand* global() { return InputAt(0); }
|
| };
|
|
|
|
|
| @@ -1619,11 +1510,11 @@ class LInvokeFunction: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = function;
|
| }
|
|
|
| - LOperand* function() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
|
| DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
|
|
|
| + LOperand* function() { return inputs_[0]; }
|
| +
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| int arity() const { return hydrogen()->argument_count() - 1; }
|
| @@ -1637,8 +1528,6 @@ class LCallKeyed: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = key;
|
| }
|
|
|
| - LOperand* key() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
|
| DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
|
|
|
| @@ -1667,11 +1556,10 @@ class LCallFunction: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = function;
|
| }
|
|
|
| - LOperand* function() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
|
| DECLARE_HYDROGEN_ACCESSOR(CallFunction)
|
|
|
| + LOperand* function() { return inputs_[0]; }
|
| int arity() const { return hydrogen()->argument_count() - 1; }
|
| };
|
|
|
| @@ -1706,8 +1594,6 @@ class LCallNew: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = constructor;
|
| }
|
|
|
| - LOperand* constructor() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
|
| DECLARE_HYDROGEN_ACCESSOR(CallNew)
|
|
|
| @@ -1733,8 +1619,6 @@ class LInteger32ToDouble: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
|
| };
|
|
|
| @@ -1745,8 +1629,6 @@ class LUint32ToDouble: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double")
|
| };
|
|
|
| @@ -1757,8 +1639,6 @@ class LNumberTagI: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i")
|
| };
|
|
|
| @@ -1769,24 +1649,18 @@ class LNumberTagU: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(NumberTagU, "number-tag-u")
|
| };
|
|
|
|
|
| class LNumberTagD: public LTemplateInstruction<1, 1, 2> {
|
| public:
|
| - LNumberTagD(LOperand* value, LOperand* temp, LOperand* temp2) {
|
| + LNumberTagD(LOperand* value, LOperand* temp1, LOperand* temp2) {
|
| inputs_[0] = value;
|
| - temps_[0] = temp;
|
| + temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| - LOperand* temp2() { return temps_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
|
| };
|
|
|
| @@ -1794,16 +1668,12 @@ class LNumberTagD: public LTemplateInstruction<1, 1, 2> {
|
| // Sometimes truncating conversion from a tagged value to an int32.
|
| class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
|
| public:
|
| - LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) {
|
| + LDoubleToI(LOperand* value, LOperand* temp1, LOperand* temp2) {
|
| inputs_[0] = value;
|
| - temps_[0] = temp;
|
| + temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| - LOperand* temp2() { return temps_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
|
| DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
|
|
| @@ -1815,20 +1685,15 @@ class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
|
| class LTaggedToI: public LTemplateInstruction<1, 1, 3> {
|
| public:
|
| LTaggedToI(LOperand* value,
|
| - LOperand* temp,
|
| + LOperand* temp1,
|
| LOperand* temp2,
|
| LOperand* temp3) {
|
| inputs_[0] = value;
|
| - temps_[0] = temp;
|
| + temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| temps_[2] = temp3;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| - LOperand* temp2() { return temps_[1]; }
|
| - LOperand* temp3() { return temps_[2]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
|
| DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
|
|
| @@ -1842,8 +1707,6 @@ class LSmiTag: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag")
|
| };
|
|
|
| @@ -1854,8 +1717,6 @@ class LNumberUntagD: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
|
| DECLARE_HYDROGEN_ACCESSOR(Change)
|
| };
|
| @@ -1868,11 +1729,10 @@ class LSmiUntag: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| - bool needs_check() const { return needs_check_; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
|
|
|
| + bool needs_check() const { return needs_check_; }
|
| +
|
| private:
|
| bool needs_check_;
|
| };
|
| @@ -1880,21 +1740,20 @@ class LSmiUntag: public LTemplateInstruction<1, 1, 0> {
|
|
|
| class LStoreNamedField: public LTemplateInstruction<0, 2, 1> {
|
| public:
|
| - LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) {
|
| - inputs_[0] = object;
|
| - inputs_[1] = value;
|
| + LStoreNamedField(LOperand* obj, LOperand* val, LOperand* temp) {
|
| + inputs_[0] = obj;
|
| + inputs_[1] = val;
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* value() { return inputs_[1]; }
|
| +
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| bool is_in_object() { return hydrogen()->is_in_object(); }
|
| int offset() { return hydrogen()->offset(); }
|
| @@ -1904,19 +1763,18 @@ class LStoreNamedField: public LTemplateInstruction<0, 2, 1> {
|
|
|
| class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> {
|
| public:
|
| - LStoreNamedGeneric(LOperand* object, LOperand* value) {
|
| - inputs_[0] = object;
|
| - inputs_[1] = value;
|
| + LStoreNamedGeneric(LOperand* obj, LOperand* val) {
|
| + inputs_[0] = obj;
|
| + inputs_[1] = val;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* value() { return inputs_[1]; }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
| };
|
| @@ -1924,22 +1782,21 @@ class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> {
|
|
|
| class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - LStoreKeyedFastElement(LOperand* object, LOperand* key, LOperand* value) {
|
| - inputs_[0] = object;
|
| + LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) {
|
| + inputs_[0] = obj;
|
| inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + inputs_[2] = val;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement,
|
| "store-keyed-fast-element")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
| uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| };
|
|
|
| @@ -1948,22 +1805,21 @@ class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| LStoreKeyedFastDoubleElement(LOperand* elements,
|
| LOperand* key,
|
| - LOperand* value) {
|
| + LOperand* val) {
|
| inputs_[0] = elements;
|
| inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + inputs_[2] = val;
|
| }
|
|
|
| - LOperand* elements() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement,
|
| "store-keyed-fast-double-element")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| + LOperand* elements() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
| uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
|
|
| bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
|
| @@ -1972,21 +1828,20 @@ class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
|
|
|
| class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* value) {
|
| + LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) {
|
| inputs_[0] = obj;
|
| inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + inputs_[2] = val;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
| StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
| };
|
|
|
| @@ -1994,21 +1849,22 @@ class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
|
| LOperand* key,
|
| - LOperand* value) {
|
| + LOperand* val) {
|
| inputs_[0] = external_pointer;
|
| inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + inputs_[2] = val;
|
| }
|
|
|
| - LOperand* external_pointer() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement,
|
| "store-keyed-specialized-array-element")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement)
|
|
|
| - ElementsKind elements_kind() const { return hydrogen()->elements_kind(); }
|
| + LOperand* external_pointer() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
| + ElementsKind elements_kind() const {
|
| + return hydrogen()->elements_kind();
|
| + }
|
| uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
| };
|
|
|
| @@ -2017,22 +1873,21 @@ class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> {
|
| public:
|
| LTransitionElementsKind(LOperand* object,
|
| LOperand* new_map_temp,
|
| - LOperand* temp) {
|
| + LOperand* temp_reg) {
|
| inputs_[0] = object;
|
| temps_[0] = new_map_temp;
|
| - temps_[1] = temp;
|
| + temps_[1] = temp_reg;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* new_map_temp() { return temps_[0]; }
|
| - LOperand* temp() { return temps_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
|
| "transition-elements-kind")
|
| DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* new_map_reg() { return temps_[0]; }
|
| + LOperand* temp_reg() { return temps_[1]; }
|
| Handle<Map> original_map() { return hydrogen()->original_map(); }
|
| Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); }
|
| };
|
| @@ -2045,11 +1900,11 @@ class LStringAdd: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
|
| DECLARE_HYDROGEN_ACCESSOR(StringAdd)
|
| +
|
| + LOperand* left() { return inputs_[0]; }
|
| + LOperand* right() { return inputs_[1]; }
|
| };
|
|
|
|
|
| @@ -2061,11 +1916,11 @@ class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> {
|
| inputs_[1] = index;
|
| }
|
|
|
| - LOperand* string() { return inputs_[0]; }
|
| - LOperand* index() { return inputs_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
|
| DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
|
| +
|
| + LOperand* string() { return inputs_[0]; }
|
| + LOperand* index() { return inputs_[1]; }
|
| };
|
|
|
|
|
| @@ -2075,10 +1930,10 @@ class LStringCharFromCode: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = char_code;
|
| }
|
|
|
| - LOperand* char_code() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
|
| DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
|
| +
|
| + LOperand* char_code() { return inputs_[0]; }
|
| };
|
|
|
|
|
| @@ -2088,10 +1943,10 @@ class LStringLength: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = string;
|
| }
|
|
|
| - LOperand* string() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(StringLength, "string-length")
|
| DECLARE_HYDROGEN_ACCESSOR(StringLength)
|
| +
|
| + LOperand* string() { return inputs_[0]; }
|
| };
|
|
|
|
|
| @@ -2101,7 +1956,7 @@ class LCheckFunction: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| + LOperand* value() { return InputAt(0); }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function")
|
| DECLARE_HYDROGEN_ACCESSOR(CheckFunction)
|
| @@ -2114,8 +1969,6 @@ class LCheckInstanceType: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type")
|
| DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType)
|
| };
|
| @@ -2127,8 +1980,6 @@ class LCheckMaps: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps")
|
| DECLARE_HYDROGEN_ACCESSOR(CheckMaps)
|
| };
|
| @@ -2136,14 +1987,11 @@ class LCheckMaps: public LTemplateInstruction<0, 1, 0> {
|
|
|
| class LCheckPrototypeMaps: public LTemplateInstruction<0, 0, 2> {
|
| public:
|
| - LCheckPrototypeMaps(LOperand* temp, LOperand* temp2) {
|
| - temps_[0] = temp;
|
| + LCheckPrototypeMaps(LOperand* temp1, LOperand* temp2) {
|
| + temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| }
|
|
|
| - LOperand* temp() { return temps_[0]; }
|
| - LOperand* temp2() { return temps_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps")
|
| DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps)
|
|
|
| @@ -2158,8 +2006,6 @@ class LCheckSmi: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi")
|
| };
|
|
|
| @@ -2170,21 +2016,18 @@ class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi")
|
| };
|
|
|
|
|
| class LClampDToUint8: public LTemplateInstruction<1, 1, 1> {
|
| public:
|
| - LClampDToUint8(LOperand* unclamped, LOperand* temp) {
|
| - inputs_[0] = unclamped;
|
| + LClampDToUint8(LOperand* value, LOperand* temp) {
|
| + inputs_[0] = value;
|
| temps_[0] = temp;
|
| }
|
|
|
| LOperand* unclamped() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8")
|
| };
|
| @@ -2192,8 +2035,8 @@ class LClampDToUint8: public LTemplateInstruction<1, 1, 1> {
|
|
|
| class LClampIToUint8: public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| - explicit LClampIToUint8(LOperand* unclamped) {
|
| - inputs_[0] = unclamped;
|
| + explicit LClampIToUint8(LOperand* value) {
|
| + inputs_[0] = value;
|
| }
|
|
|
| LOperand* unclamped() { return inputs_[0]; }
|
| @@ -2204,13 +2047,12 @@ class LClampIToUint8: public LTemplateInstruction<1, 1, 0> {
|
|
|
| class LClampTToUint8: public LTemplateInstruction<1, 1, 1> {
|
| public:
|
| - LClampTToUint8(LOperand* unclamped, LOperand* temp) {
|
| - inputs_[0] = unclamped;
|
| + LClampTToUint8(LOperand* value, LOperand* temp) {
|
| + inputs_[0] = value;
|
| temps_[0] = temp;
|
| }
|
|
|
| LOperand* unclamped() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8")
|
| };
|
| @@ -2218,14 +2060,11 @@ class LClampTToUint8: public LTemplateInstruction<1, 1, 1> {
|
|
|
| class LAllocateObject: public LTemplateInstruction<1, 0, 2> {
|
| public:
|
| - LAllocateObject(LOperand* temp, LOperand* temp2) {
|
| - temps_[0] = temp;
|
| + LAllocateObject(LOperand* temp1, LOperand* temp2) {
|
| + temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| }
|
|
|
| - LOperand* temp() { return temps_[0]; }
|
| - LOperand* temp2() { return temps_[1]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(AllocateObject, "allocate-object")
|
| DECLARE_HYDROGEN_ACCESSOR(AllocateObject)
|
| };
|
| @@ -2274,8 +2113,6 @@ class LToFastProperties: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties")
|
| DECLARE_HYDROGEN_ACCESSOR(ToFastProperties)
|
| };
|
| @@ -2287,8 +2124,6 @@ class LTypeof: public LTemplateInstruction<1, 1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
|
| };
|
|
|
| @@ -2299,8 +2134,6 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
|
| inputs_[0] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
|
| DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
|
|
|
| @@ -2316,8 +2149,6 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
|
| "is-construct-call-and-branch")
|
| };
|
| @@ -2325,15 +2156,15 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
|
|
|
| class LDeleteProperty: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - LDeleteProperty(LOperand* object, LOperand* key) {
|
| - inputs_[0] = object;
|
| + LDeleteProperty(LOperand* obj, LOperand* key) {
|
| + inputs_[0] = obj;
|
| inputs_[1] = key;
|
| }
|
|
|
| + DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
|
| +
|
| LOperand* object() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
|
| };
|
|
|
|
|
|
|