| Index: src/mips/lithium-mips.h
|
| diff --git a/src/mips/lithium-mips.h b/src/mips/lithium-mips.h
|
| index a48422eecf5e4e132afd1e2c4fb3f340286c3573..33a3d3cd67b47248e79509e8017c76506fe5dc16 100644
|
| --- a/src/mips/lithium-mips.h
|
| +++ b/src/mips/lithium-mips.h
|
| @@ -482,8 +482,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)
|
|
|
| @@ -780,12 +786,14 @@ class LMathRound V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| };
|
|
|
|
|
| -class LMathAbs V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| +class LMathAbs V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - explicit LMathAbs(LOperand* value) {
|
| + 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")
|
| @@ -984,15 +992,17 @@ 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:
|
| - LStringCompareAndBranch(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| + 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")
|
| @@ -1068,15 +1078,17 @@ class LClassOfTestAndBranch V8_FINAL : public LControlInstruction<1, 1> {
|
| };
|
|
|
|
|
| -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)
|
| @@ -1085,28 +1097,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,
|
| @@ -1372,13 +1388,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;
|
| + 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")
|
| };
|
| @@ -1474,16 +1492,21 @@ 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;
|
| }
|
|
|
| - 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]; }
|
| Token::Value op() const { return op_; }
|
|
|
| virtual Opcode opcode() const V8_FINAL { return LInstruction::kArithmeticT; }
|
| @@ -1495,11 +1518,12 @@ 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) {
|
| + 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]; }
|
| @@ -1511,7 +1535,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")
|
| };
|
| @@ -1530,13 +1554,15 @@ 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;
|
| + LLoadNamedGeneric(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(LoadNamedGeneric, "load-named-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
|
| @@ -1605,15 +1631,17 @@ 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* object, LOperand* key) {
|
| - inputs_[0] = object;
|
| - inputs_[1] = key;
|
| + LLoadKeyedGeneric(LOperand* context, LOperand* object, LOperand* key) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = object;
|
| + inputs_[2] = key;
|
| }
|
|
|
| - 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]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
|
| };
|
| @@ -1626,13 +1654,15 @@ 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;
|
| + LLoadGlobalGeneric(LOperand* context, LOperand* global_object) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = global_object;
|
| }
|
|
|
| - LOperand* global_object() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* global_object() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
|
| DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
|
| @@ -1657,16 +1687,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,
|
| - LOperand* value) {
|
| - inputs_[0] = global_object;
|
| - inputs_[1] = value;
|
| + LStoreGlobalGeneric(LOperand* context,
|
| + LOperand* global_object,
|
| + LOperand* 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)
|
| @@ -1796,8 +1829,14 @@ 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)
|
| };
|
| @@ -1839,13 +1878,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)
|
| @@ -1856,13 +1897,15 @@ 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;
|
| }
|
|
|
| - LOperand* key() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
|
| DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
|
| @@ -1874,8 +1917,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)
|
|
|
| @@ -1886,13 +1935,15 @@ 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;
|
| }
|
|
|
| - LOperand* function() { return inputs_[0]; }
|
| + LOperand* context() { return inputs_[0]; }
|
| + LOperand* function() { return inputs_[1]; }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
|
| DECLARE_HYDROGEN_ACCESSOR(CallFunction)
|
| @@ -1901,8 +1952,14 @@ class LCallFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -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)
|
|
|
| @@ -1924,13 +1981,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)
|
| @@ -1941,13 +2000,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)
|
| @@ -1958,8 +2019,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)
|
|
|
| @@ -2165,15 +2232,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)
|
| @@ -2210,17 +2279,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* obj, LOperand* key, LOperand* value) {
|
| - inputs_[0] = obj;
|
| - inputs_[1] = key;
|
| - inputs_[2] = value;
|
| + LStoreKeyedGeneric(LOperand* context,
|
| + LOperand* obj,
|
| + LOperand* key,
|
| + LOperand* value) {
|
| + inputs_[0] = context;
|
| + inputs_[1] = obj;
|
| + 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)
|
| @@ -2231,14 +2305,17 @@ class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
|
| };
|
|
|
|
|
| -class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 1> {
|
| +class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 2, 1> {
|
| public:
|
| LTransitionElementsKind(LOperand* object,
|
| + LOperand* context,
|
| LOperand* new_map_temp) {
|
| inputs_[0] = object;
|
| + inputs_[1] = context;
|
| temps_[0] = new_map_temp;
|
| }
|
|
|
| + LOperand* context() { return inputs_[1]; }
|
| LOperand* object() { return inputs_[0]; }
|
| LOperand* new_map_temp() { return temps_[0]; }
|
|
|
| @@ -2273,15 +2350,17 @@ 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)
|
| @@ -2289,28 +2368,32 @@ class LStringAdd V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
|
|
|
|
|
|
| -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)
|
| @@ -2423,12 +2506,17 @@ class LClampTToUint8 V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
|
|
| class LAllocate V8_FINAL : public LTemplateInstruction<1, 2, 2> {
|
| public:
|
| - LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) {
|
| + LAllocate(LOperand* context,
|
| + LOperand* size,
|
| + LOperand* temp1,
|
| + LOperand* temp2) {
|
| + inputs_[0] = context;
|
| inputs_[1] = size;
|
| temps_[0] = temp1;
|
| temps_[1] = temp2;
|
| }
|
|
|
| + LOperand* context() { return inputs_[0]; }
|
| LOperand* size() { return inputs_[1]; }
|
| LOperand* temp1() { return temps_[0]; }
|
| LOperand* temp2() { return temps_[1]; }
|
| @@ -2438,15 +2526,27 @@ class LAllocate V8_FINAL : public LTemplateInstruction<1, 2, 2> {
|
| };
|
|
|
|
|
| -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)
|
| };
|
| @@ -2465,13 +2565,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")
|
| };
|
| @@ -2518,8 +2620,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)
|
|
|
| @@ -2530,13 +2638,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")
|
| };
|
|
|