| Index: src/x64/lithium-x64.h
|
| diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h
|
| index 590f47af4a7d7d237d658a07dcf4891e54646cf9..2811f9897d652054c92fe077ac07aaf3b2b0af94 100644
|
| --- a/src/x64/lithium-x64.h
|
| +++ b/src/x64/lithium-x64.h
|
| @@ -472,8 +472,14 @@ class LParameter V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LCallStub V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LCallStub V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LCallStub(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
| DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
|
|
| @@ -727,12 +733,14 @@ class LMathRound V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LMathAbs V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LMathAbs V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LMathAbs(LOperand* value) {
|
| + explicit LMathAbs(LOperand* context, LOperand* value) {
|
| + inputs_[1] = context;
|
| inputs_[0] = value;
|
| }
|
|
|
| + LOperand* context() { return inputs_[1]; }
|
| LOperand* value() { return inputs_[0]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(MathAbs, "math-abs")
|
| @@ -921,15 +929,19 @@ class LIsUndetectableAndBranch V8_FINAL : public LControlInstruction<1, 1> {
|
| };
|
|
|
|
|
| -class LStringCompareAndBranch V8_FINAL : public LControlInstruction<2, 0> {
|
| +class LStringCompareAndBranch V8_FINAL : public LControlInstruction<3, 0> {
|
| public:
|
| - explicit LStringCompareAndBranch(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| + explicit LStringCompareAndBranch(LOperand* context,
|
| + LOperand* left,
|
| + LOperand* right) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = left;
|
| + inputs_[2] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* left() { return inputs_[1]; }
|
| + LOperand* right() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
|
| "string-compare-and-branch")
|
| @@ -1007,15 +1019,17 @@ class LClassOfTestAndBranch V8_FINAL : public LControlInstruction<1, 2> {
|
| };
|
|
|
|
|
| -class LCmpT V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| +class LCmpT V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| public:
|
| - LCmpT(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| + LCmpT(LOperand* context, LOperand* left, LOperand* right) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = left;
|
| + inputs_[2] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* left() { return inputs_[1]; }
|
| + LOperand* right() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
|
| DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
|
| @@ -1024,28 +1038,32 @@ class LCmpT V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| };
|
|
|
|
|
| -class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| +class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| public:
|
| - LInstanceOf(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| + LInstanceOf(LOperand* context, LOperand* left, LOperand* right) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = left;
|
| + inputs_[2] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* left() { return inputs_[1]; }
|
| + LOperand* right() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
|
| };
|
|
|
|
|
| -class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| +class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 2, 1> {
|
| public:
|
| - LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) {
|
| - inputs_[0] = value;
|
| + LInstanceOfKnownGlobal(LOperand* context, LOperand* value, LOperand* temp) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = value;
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* value() { return inputs_[1]; }
|
| LOperand* temp() { return temps_[0]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
|
| @@ -1304,13 +1322,15 @@ class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| };
|
|
|
|
|
| -class LThrow V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| +class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> {
|
| public:
|
| - explicit LThrow(LOperand* value) {
|
| - inputs_[0] = value;
|
| + explicit LThrow(LOperand* context, LOperand* value) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* value() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
|
| };
|
| @@ -1411,17 +1431,22 @@ class LArithmeticD V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| };
|
|
|
|
|
| -class LArithmeticT V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| +class LArithmeticT V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| public:
|
| - LArithmeticT(Token::Value op, LOperand* left, LOperand* right)
|
| + LArithmeticT(Token::Value op,
|
| + LOperand* context,
|
| + LOperand* left,
|
| + LOperand* right)
|
| : op_(op) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| + inputs_[0] = context;
|
| + inputs_[1] = left;
|
| + inputs_[2] = right;
|
| }
|
|
|
| Token::Value op() const { return op_; }
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* left() { return inputs_[1]; }
|
| + LOperand* right() { return inputs_[2]; }
|
|
|
| virtual Opcode opcode() const V8_OVERRIDE {
|
| return LInstruction::kArithmeticT;
|
| @@ -1434,14 +1459,18 @@ class LArithmeticT V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| };
|
|
|
|
|
| -class LReturn V8_FINAL : public LTemplateInstruction<0, 2, 0> {
|
| +class LReturn V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - explicit LReturn(LOperand* value, LOperand* parameter_count) {
|
| + explicit LReturn(LOperand* value,
|
| + LOperand* context,
|
| + LOperand* parameter_count) {
|
| inputs_[0] = value;
|
| - inputs_[1] = parameter_count;
|
| + inputs_[1] = context;
|
| + inputs_[2] = parameter_count;
|
| }
|
|
|
| LOperand* value() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[1]; }
|
|
|
| bool has_constant_parameter_count() {
|
| return parameter_count()->IsConstantOperand();
|
| @@ -1450,7 +1479,7 @@ class LReturn V8_FINAL : public LTemplateInstruction<0, 2, 0> {
|
| ASSERT(has_constant_parameter_count());
|
| return LConstantOperand::cast(parameter_count());
|
| }
|
| - LOperand* parameter_count() { return inputs_[1]; }
|
| + LOperand* parameter_count() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(Return, "return")
|
| DECLARE_HYDROGEN_ACCESSOR(Return)
|
| @@ -1470,16 +1499,18 @@ class LLoadNamedField V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LLoadNamedGeneric(LOperand* object) {
|
| - inputs_[0] = object;
|
| + explicit LLoadNamedGeneric(LOperand* context, LOperand* object) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = object;
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* object() { return inputs_[1]; }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| };
|
|
|
| @@ -1543,17 +1574,19 @@ class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| };
|
|
|
|
|
| -class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| +class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| public:
|
| - LLoadKeyedGeneric(LOperand* obj, LOperand* key) {
|
| - inputs_[0] = obj;
|
| - inputs_[1] = key;
|
| + LLoadKeyedGeneric(LOperand* context, LOperand* obj, LOperand* key) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = obj;
|
| + inputs_[2] = key;
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* object() { return inputs_[1]; }
|
| + LOperand* key() { return inputs_[2]; }
|
| };
|
|
|
|
|
| @@ -1564,16 +1597,18 @@ class LLoadGlobalCell V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LLoadGlobalGeneric(LOperand* global_object) {
|
| - inputs_[0] = global_object;
|
| + explicit LLoadGlobalGeneric(LOperand* context, LOperand* global_object) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = global_object;
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* global_object() { return inputs_[1]; }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| bool for_typeof() const { return hydrogen()->for_typeof(); }
|
| };
|
| @@ -1594,16 +1629,19 @@ class LStoreGlobalCell V8_FINAL : public LTemplateInstruction<0, 1, 1> {
|
| };
|
|
|
|
|
| -class LStoreGlobalGeneric V8_FINAL : public LTemplateInstruction<0, 2, 0> {
|
| +class LStoreGlobalGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - explicit LStoreGlobalGeneric(LOperand* global_object,
|
| + explicit LStoreGlobalGeneric(LOperand* context,
|
| + LOperand* global_object,
|
| LOperand* value) {
|
| - inputs_[0] = global_object;
|
| - inputs_[1] = value;
|
| + inputs_[0] = context;
|
| + inputs_[1] = global_object;
|
| + inputs_[2] = value;
|
| }
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* global_object() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric)
|
| @@ -1735,15 +1773,27 @@ class LOuterContext V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 0, 0> {
|
| +class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| public:
|
| + explicit LDeclareGlobals(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals")
|
| DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals)
|
| };
|
|
|
|
|
| -class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LGlobalObject(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
|
| };
|
|
|
| @@ -1772,13 +1822,15 @@ class LCallConstantFunction V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LInvokeFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LInvokeFunction V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LInvokeFunction(LOperand* function) {
|
| - inputs_[0] = function;
|
| + LInvokeFunction(LOperand* context, LOperand* function) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = function;
|
| }
|
|
|
| - LOperand* function() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* function() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
|
| DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
|
| @@ -1789,16 +1841,18 @@ class LInvokeFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LCallKeyed V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LCallKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LCallKeyed(LOperand* key) {
|
| - inputs_[0] = key;
|
| + LCallKeyed(LOperand* context, LOperand* key) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = key;
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
|
| DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
|
|
|
| - LOperand* key() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
|
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
|
|
| @@ -1806,8 +1860,14 @@ class LCallKeyed V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LCallNamed V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LCallNamed V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LCallNamed(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named")
|
| DECLARE_HYDROGEN_ACCESSOR(CallNamed)
|
|
|
| @@ -1818,22 +1878,30 @@ class LCallNamed V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LCallFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LCallFunction V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LCallFunction(LOperand* function) {
|
| - inputs_[0] = function;
|
| + LCallFunction(LOperand* context, LOperand* function) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = function;
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
|
| DECLARE_HYDROGEN_ACCESSOR(CallFunction)
|
|
|
| - LOperand* function() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* function() { return inputs_[1]; }
|
| int arity() const { return hydrogen()->argument_count() - 1; }
|
| };
|
|
|
|
|
| -class LCallGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LCallGlobal V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LCallGlobal(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global")
|
| DECLARE_HYDROGEN_ACCESSOR(CallGlobal)
|
|
|
| @@ -1855,13 +1923,15 @@ class LCallKnownGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LCallNew V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LCallNew V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LCallNew(LOperand* constructor) {
|
| - inputs_[0] = constructor;
|
| + LCallNew(LOperand* context, LOperand* constructor) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = constructor;
|
| }
|
|
|
| - LOperand* constructor() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* constructor() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
|
| DECLARE_HYDROGEN_ACCESSOR(CallNew)
|
| @@ -1872,13 +1942,15 @@ class LCallNew V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LCallNewArray V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LCallNewArray V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LCallNewArray(LOperand* constructor) {
|
| - inputs_[0] = constructor;
|
| + LCallNewArray(LOperand* context, LOperand* constructor) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = constructor;
|
| }
|
|
|
| - LOperand* constructor() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* constructor() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array")
|
| DECLARE_HYDROGEN_ACCESSOR(CallNewArray)
|
| @@ -1889,8 +1961,14 @@ class LCallNewArray V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LCallRuntime(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
|
| DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
|
|
|
| @@ -2097,15 +2175,17 @@ class LStoreNamedField V8_FINAL : public LTemplateInstruction<0, 2, 1> {
|
| };
|
|
|
|
|
| -class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 2, 0> {
|
| +class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - LStoreNamedGeneric(LOperand* object, LOperand* value) {
|
| - inputs_[0] = object;
|
| - inputs_[1] = value;
|
| + LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = object;
|
| + inputs_[2] = value;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* object() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
|
| @@ -2140,17 +2220,22 @@ class LStoreKeyed V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| };
|
|
|
|
|
| -class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| +class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 4, 0> {
|
| public:
|
| - LStoreKeyedGeneric(LOperand* object, LOperand* key, LOperand* value) {
|
| - inputs_[0] = object;
|
| - inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + LStoreKeyedGeneric(LOperand* context,
|
| + LOperand* object,
|
| + LOperand* key,
|
| + LOperand* value) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = object;
|
| + inputs_[2] = key;
|
| + inputs_[3] = value;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| - LOperand* key() { return inputs_[1]; }
|
| - LOperand* value() { return inputs_[2]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* object() { return inputs_[1]; }
|
| + LOperand* key() { return inputs_[2]; }
|
| + LOperand* value() { return inputs_[3]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
|
| @@ -2161,17 +2246,20 @@ class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| };
|
|
|
|
|
| -class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 2> {
|
| +class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 2, 2> {
|
| public:
|
| LTransitionElementsKind(LOperand* object,
|
| + LOperand* context,
|
| LOperand* new_map_temp,
|
| LOperand* temp) {
|
| inputs_[0] = object;
|
| + inputs_[1] = context;
|
| temps_[0] = new_map_temp;
|
| temps_[1] = temp;
|
| }
|
|
|
| LOperand* object() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[1]; }
|
| LOperand* new_map_temp() { return temps_[0]; }
|
| LOperand* temp() { return temps_[1]; }
|
|
|
| @@ -2206,43 +2294,49 @@ class LTrapAllocationMemento V8_FINAL : public LTemplateInstruction<0, 1, 1> {
|
| };
|
|
|
|
|
| -class LStringAdd V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| +class LStringAdd V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| public:
|
| - LStringAdd(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| + LStringAdd(LOperand* context, LOperand* left, LOperand* right) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = left;
|
| + inputs_[2] = right;
|
| }
|
|
|
| - LOperand* left() { return inputs_[0]; }
|
| - LOperand* right() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* left() { return inputs_[1]; }
|
| + LOperand* right() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
|
| DECLARE_HYDROGEN_ACCESSOR(StringAdd)
|
| };
|
|
|
|
|
| -class LStringCharCodeAt V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| +class LStringCharCodeAt V8_FINAL : public LTemplateInstruction<1, 3, 0> {
|
| public:
|
| - LStringCharCodeAt(LOperand* string, LOperand* index) {
|
| - inputs_[0] = string;
|
| - inputs_[1] = index;
|
| + LStringCharCodeAt(LOperand* context, LOperand* string, LOperand* index) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = string;
|
| + inputs_[2] = index;
|
| }
|
|
|
| - LOperand* string() { return inputs_[0]; }
|
| - LOperand* index() { return inputs_[1]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* string() { return inputs_[1]; }
|
| + LOperand* index() { return inputs_[2]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
|
| DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
|
| };
|
|
|
|
|
| -class LStringCharFromCode V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LStringCharFromCode V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LStringCharFromCode(LOperand* char_code) {
|
| - inputs_[0] = char_code;
|
| + explicit LStringCharFromCode(LOperand* context, LOperand* char_code) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = char_code;
|
| }
|
|
|
| - LOperand* char_code() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* char_code() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
|
| DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
|
| @@ -2352,14 +2446,16 @@ class LCheckNonSmi V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| };
|
|
|
|
|
| -class LAllocate V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| +class LAllocate V8_FINAL : public LTemplateInstruction<1, 2, 1> {
|
| public:
|
| - LAllocate(LOperand* size, LOperand* temp) {
|
| - inputs_[0] = size;
|
| + LAllocate(LOperand* context, LOperand* size, LOperand* temp) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = size;
|
| temps_[0] = temp;
|
| }
|
|
|
| - LOperand* size() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* size() { return inputs_[1]; }
|
| LOperand* temp() { return temps_[0]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate")
|
| @@ -2367,15 +2463,27 @@ class LAllocate V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| };
|
|
|
|
|
| -class LRegExpLiteral V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LRegExpLiteral V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LRegExpLiteral(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal")
|
| DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral)
|
| };
|
|
|
|
|
| -class LFunctionLiteral V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| +class LFunctionLiteral V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| + explicit LFunctionLiteral(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal")
|
| DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral)
|
| };
|
| @@ -2394,13 +2502,15 @@ class LToFastProperties V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LTypeof V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LTypeof V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LTypeof(LOperand* value) {
|
| - inputs_[0] = value;
|
| + LTypeof(LOperand* context, LOperand* value) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = value;
|
| }
|
|
|
| - LOperand* value() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* value() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
|
| };
|
| @@ -2448,8 +2558,14 @@ class LOsrEntry V8_FINAL : public LTemplateInstruction<0, 0, 0> {
|
| };
|
|
|
|
|
| -class LStackCheck V8_FINAL : public LTemplateInstruction<0, 0, 0> {
|
| +class LStackCheck V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| public:
|
| + explicit LStackCheck(LOperand* context) {
|
| + inputs_[0] = context;
|
| + }
|
| +
|
| + LOperand* context() { return inputs_[0]; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check")
|
| DECLARE_HYDROGEN_ACCESSOR(StackCheck)
|
|
|
| @@ -2460,13 +2576,15 @@ class LStackCheck V8_FINAL : public LTemplateInstruction<0, 0, 0> {
|
| };
|
|
|
|
|
| -class LForInPrepareMap V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LForInPrepareMap V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LForInPrepareMap(LOperand* object) {
|
| - inputs_[0] = object;
|
| + LForInPrepareMap(LOperand* context, LOperand* object) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = object;
|
| }
|
|
|
| - LOperand* object() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* object() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ForInPrepareMap, "for-in-prepare-map")
|
| };
|
|
|