Index: src/arm/lithium-arm.h |
diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h |
index 76867c8a3fad5796f7a6ee11914b80bdcc63e7d8..e4e2f6881a17371f5ca95bf951280b675ced9ae4 100644 |
--- a/src/arm/lithium-arm.h |
+++ b/src/arm/lithium-arm.h |
@@ -483,8 +483,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) |
@@ -785,12 +791,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") |
@@ -989,15 +997,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") |
@@ -1073,15 +1083,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) |
@@ -1090,28 +1102,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, |
@@ -1392,13 +1408,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") |
}; |
@@ -1494,16 +1512,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_OVERRIDE { |
@@ -1517,11 +1540,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]; } |
@@ -1533,7 +1557,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") |
}; |
@@ -1552,13 +1576,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) |
@@ -1627,15 +1653,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") |
}; |
@@ -1648,13 +1676,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) |
@@ -1679,16 +1709,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) |
@@ -1818,8 +1851,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) |
}; |
@@ -1861,13 +1900,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) |
@@ -1878,13 +1919,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) |
@@ -1896,8 +1939,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) |
@@ -1908,13 +1957,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) |
@@ -1923,8 +1974,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) |
@@ -1946,13 +2003,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) |
@@ -1963,13 +2022,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) |
@@ -1980,8 +2041,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) |
@@ -2187,15 +2254,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) |
@@ -2238,17 +2307,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) |
@@ -2259,14 +2333,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]; } |
@@ -2301,15 +2378,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) |
@@ -2317,28 +2396,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) |
@@ -2449,12 +2532,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]; } |
@@ -2464,15 +2552,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) |
}; |
@@ -2491,13 +2591,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") |
}; |
@@ -2544,8 +2646,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) |
@@ -2556,13 +2664,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") |
}; |