Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 7e5272e218e6a32eebaa847a21d6369319b74bc9..3c197a9eae7a8dc688cb8f00d94e75d9f6481207 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -1051,6 +1051,47 @@ class HValue : public ZoneObject { |
return new(zone) I(p1, p2, p3, p4, p5); \ |
} |
+#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P0(I) \ |
+ static I* New(Zone* zone, HValue* context) { \ |
+ return new(zone) I(context); \ |
+ } |
+ |
+#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(I, P1) \ |
+ static I* New(Zone* zone, HValue* context, P1 p1) { \ |
+ return new(zone) I(context, p1); \ |
+ } |
+ |
+#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(I, P1, P2) \ |
+ static I* New(Zone* zone, HValue* context, P1 p1, P2 p2) { \ |
+ return new(zone) I(context, p1, p2); \ |
+ } |
+ |
+#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(I, P1, P2, P3) \ |
+ static I* New(Zone* zone, HValue* context, P1 p1, P2 p2, P3 p3) { \ |
+ return new(zone) I(context, p1, p2, p3); \ |
+ } |
+ |
+#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(I, P1, P2, P3, P4) \ |
+ static I* New(Zone* zone, \ |
+ HValue* context, \ |
+ P1 p1, \ |
+ P2 p2, \ |
+ P3 p3, \ |
+ P4 p4) { \ |
+ return new(zone) I(context, p1, p2, p3, p4); \ |
+ } |
+ |
+#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(I, P1, P2, P3, P4, P5) \ |
+ static I* New(Zone* zone, \ |
+ HValue* context, \ |
+ P1 p1, \ |
+ P2 p2, \ |
+ P3 p3, \ |
+ P4 p4, \ |
+ P5 p5) { \ |
+ return new(zone) I(context, p1, p2, p3, p4, p5); \ |
+ } |
+ |
class HInstruction : public HValue { |
public: |
@@ -1392,18 +1433,8 @@ class HContext V8_FINAL : public HTemplateInstruction<0> { |
class HReturn V8_FINAL : public HTemplateControlInstruction<0, 3> { |
public: |
- static HInstruction* New(Zone* zone, |
- HValue* context, |
- HValue* value, |
- HValue* parameter_count) { |
- return new(zone) HReturn(value, context, parameter_count); |
- } |
- |
- static HInstruction* New(Zone* zone, |
- HValue* context, |
- HValue* value) { |
- return new(zone) HReturn(value, context, 0); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HReturn, HValue*, HValue*); |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HReturn, HValue*); |
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
return Representation::Tagged(); |
@@ -1418,7 +1449,7 @@ class HReturn V8_FINAL : public HTemplateControlInstruction<0, 3> { |
DECLARE_CONCRETE_INSTRUCTION(Return) |
private: |
- HReturn(HValue* value, HValue* context, HValue* parameter_count) { |
+ HReturn(HValue* context, HValue* value, HValue* parameter_count = 0) { |
SetOperandAt(0, value); |
SetOperandAt(1, context); |
SetOperandAt(2, parameter_count); |
@@ -1444,11 +1475,7 @@ class HUnaryOperation : public HTemplateInstruction<1> { |
class HThrow V8_FINAL : public HTemplateInstruction<2> { |
public: |
- static HThrow* New(Zone* zone, |
- HValue* context, |
- HValue* value) { |
- return new(zone) HThrow(context, value); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HThrow, HValue*); |
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
return Representation::Tagged(); |
@@ -1749,7 +1776,7 @@ class HStackCheck V8_FINAL : public HTemplateInstruction<1> { |
kBackwardsBranch |
}; |
- DECLARE_INSTRUCTION_FACTORY_P2(HStackCheck, HValue*, Type); |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HStackCheck, Type); |
HValue* context() { return OperandAt(0); } |
@@ -1939,22 +1966,9 @@ class HOuterContext V8_FINAL : public HUnaryOperation { |
class HDeclareGlobals V8_FINAL : public HUnaryOperation { |
public: |
- HDeclareGlobals(HValue* context, |
- Handle<FixedArray> pairs, |
- int flags) |
- : HUnaryOperation(context), |
- pairs_(pairs), |
- flags_(flags) { |
- set_representation(Representation::Tagged()); |
- SetAllSideEffects(); |
- } |
- |
- static HDeclareGlobals* New(Zone* zone, |
- HValue* context, |
- Handle<FixedArray> pairs, |
- int flags) { |
- return new(zone) HDeclareGlobals(context, pairs, flags); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HDeclareGlobals, |
+ Handle<FixedArray>, |
+ int); |
HValue* context() { return OperandAt(0); } |
Handle<FixedArray> pairs() const { return pairs_; } |
@@ -1967,6 +1981,16 @@ class HDeclareGlobals V8_FINAL : public HUnaryOperation { |
} |
private: |
+ HDeclareGlobals(HValue* context, |
+ Handle<FixedArray> pairs, |
+ int flags) |
+ : HUnaryOperation(context), |
+ pairs_(pairs), |
+ flags_(flags) { |
+ set_representation(Representation::Tagged()); |
+ SetAllSideEffects(); |
+ } |
+ |
Handle<FixedArray> pairs_; |
int flags_; |
}; |
@@ -2083,16 +2107,7 @@ class HBinaryCall : public HCall<2> { |
class HInvokeFunction V8_FINAL : public HBinaryCall { |
public: |
- HInvokeFunction(HValue* context, HValue* function, int argument_count) |
- : HBinaryCall(context, function, argument_count) { |
- } |
- |
- static HInvokeFunction* New(Zone* zone, |
- HValue* context, |
- HValue* function, |
- int argument_count) { |
- return new(zone) HInvokeFunction(context, function, argument_count); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HInvokeFunction, HValue*, int); |
HInvokeFunction(HValue* context, |
HValue* function, |
@@ -2121,6 +2136,10 @@ class HInvokeFunction V8_FINAL : public HBinaryCall { |
DECLARE_CONCRETE_INSTRUCTION(InvokeFunction) |
private: |
+ HInvokeFunction(HValue* context, HValue* function, int argument_count) |
+ : HBinaryCall(context, function, argument_count) { |
+ } |
+ |
Handle<JSFunction> known_function_; |
int formal_parameter_count_; |
}; |
@@ -2128,10 +2147,9 @@ class HInvokeFunction V8_FINAL : public HBinaryCall { |
class HCallConstantFunction V8_FINAL : public HCall<0> { |
public: |
- HCallConstantFunction(Handle<JSFunction> function, int argument_count) |
- : HCall<0>(argument_count), |
- function_(function), |
- formal_parameter_count_(function->shared()->formal_parameter_count()) {} |
+ DECLARE_INSTRUCTION_FACTORY_P2(HCallConstantFunction, |
+ Handle<JSFunction>, |
+ int); |
Handle<JSFunction> function() const { return function_; } |
int formal_parameter_count() const { return formal_parameter_count_; } |
@@ -2150,6 +2168,11 @@ class HCallConstantFunction V8_FINAL : public HCall<0> { |
DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction) |
private: |
+ HCallConstantFunction(Handle<JSFunction> function, int argument_count) |
+ : HCall<0>(argument_count), |
+ function_(function), |
+ formal_parameter_count_(function->shared()->formal_parameter_count()) {} |
+ |
Handle<JSFunction> function_; |
int formal_parameter_count_; |
}; |
@@ -2157,22 +2180,23 @@ class HCallConstantFunction V8_FINAL : public HCall<0> { |
class HCallKeyed V8_FINAL : public HBinaryCall { |
public: |
- HCallKeyed(HValue* context, HValue* key, int argument_count) |
- : HBinaryCall(context, key, argument_count) { |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallKeyed, HValue*, int); |
HValue* context() { return first(); } |
HValue* key() { return second(); } |
DECLARE_CONCRETE_INSTRUCTION(CallKeyed) |
+ |
+ private: |
+ HCallKeyed(HValue* context, HValue* key, int argument_count) |
+ : HBinaryCall(context, key, argument_count) { |
+ } |
}; |
class HCallNamed V8_FINAL : public HUnaryCall { |
public: |
- HCallNamed(HValue* context, Handle<String> name, int argument_count) |
- : HUnaryCall(context, argument_count), name_(name) { |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallNamed, Handle<String>, int); |
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
@@ -2182,42 +2206,33 @@ class HCallNamed V8_FINAL : public HUnaryCall { |
DECLARE_CONCRETE_INSTRUCTION(CallNamed) |
private: |
+ HCallNamed(HValue* context, Handle<String> name, int argument_count) |
+ : HUnaryCall(context, argument_count), name_(name) { |
+ } |
+ |
Handle<String> name_; |
}; |
class HCallFunction V8_FINAL : public HBinaryCall { |
public: |
- HCallFunction(HValue* context, HValue* function, int argument_count) |
- : HBinaryCall(context, function, argument_count) { |
- } |
- |
- static HCallFunction* New(Zone* zone, |
- HValue* context, |
- HValue* function, |
- int argument_count) { |
- return new(zone) HCallFunction(context, function, argument_count); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallFunction, HValue*, int); |
HValue* context() { return first(); } |
HValue* function() { return second(); } |
DECLARE_CONCRETE_INSTRUCTION(CallFunction) |
+ |
+ private: |
+ HCallFunction(HValue* context, HValue* function, int argument_count) |
+ : HBinaryCall(context, function, argument_count) { |
+ } |
}; |
class HCallGlobal V8_FINAL : public HUnaryCall { |
public: |
- HCallGlobal(HValue* context, Handle<String> name, int argument_count) |
- : HUnaryCall(context, argument_count), name_(name) { |
- } |
- |
- static HCallGlobal* New(Zone* zone, |
- HValue* context, |
- Handle<String> name, |
- int argument_count) { |
- return new(zone) HCallGlobal(context, name, argument_count); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallGlobal, Handle<String>, int); |
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
@@ -2227,6 +2242,10 @@ class HCallGlobal V8_FINAL : public HUnaryCall { |
DECLARE_CONCRETE_INSTRUCTION(CallGlobal) |
private: |
+ HCallGlobal(HValue* context, Handle<String> name, int argument_count) |
+ : HUnaryCall(context, argument_count), name_(name) { |
+ } |
+ |
Handle<String> name_; |
}; |
@@ -2257,23 +2276,26 @@ class HCallKnownGlobal V8_FINAL : public HCall<0> { |
class HCallNew V8_FINAL : public HBinaryCall { |
public: |
- HCallNew(HValue* context, HValue* constructor, int argument_count) |
- : HBinaryCall(context, constructor, argument_count) {} |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallNew, HValue*, int); |
HValue* context() { return first(); } |
HValue* constructor() { return second(); } |
DECLARE_CONCRETE_INSTRUCTION(CallNew) |
+ |
+ private: |
+ HCallNew(HValue* context, HValue* constructor, int argument_count) |
+ : HBinaryCall(context, constructor, argument_count) {} |
}; |
class HCallNewArray V8_FINAL : public HBinaryCall { |
public: |
- HCallNewArray(HValue* context, HValue* constructor, int argument_count, |
- Handle<Cell> type_cell, ElementsKind elements_kind) |
- : HBinaryCall(context, constructor, argument_count), |
- elements_kind_(elements_kind), |
- type_cell_(type_cell) {} |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HCallNewArray, |
+ HValue*, |
+ int, |
+ Handle<Cell>, |
+ ElementsKind); |
HValue* context() { return first(); } |
HValue* constructor() { return second(); } |
@@ -2289,6 +2311,12 @@ class HCallNewArray V8_FINAL : public HBinaryCall { |
DECLARE_CONCRETE_INSTRUCTION(CallNewArray) |
private: |
+ HCallNewArray(HValue* context, HValue* constructor, int argument_count, |
+ Handle<Cell> type_cell, ElementsKind elements_kind) |
+ : HBinaryCall(context, constructor, argument_count), |
+ elements_kind_(elements_kind), |
+ type_cell_(type_cell) {} |
+ |
ElementsKind elements_kind_; |
Handle<Cell> type_cell_; |
}; |
@@ -2296,13 +2324,10 @@ class HCallNewArray V8_FINAL : public HBinaryCall { |
class HCallRuntime V8_FINAL : public HCall<1> { |
public: |
- static HCallRuntime* New(Zone* zone, |
- HValue* context, |
- Handle<String> name, |
- const Runtime::Function* c_function, |
- int argument_count) { |
- return new(zone) HCallRuntime(context, name, c_function, argument_count); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HCallRuntime, |
+ Handle<String>, |
+ const Runtime::Function*, |
+ int); |
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
@@ -3877,12 +3902,9 @@ class HBitwiseBinaryOperation : public HBinaryOperation { |
class HMathFloorOfDiv V8_FINAL : public HBinaryOperation { |
public: |
- static HMathFloorOfDiv* New(Zone* zone, |
- HValue* context, |
- HValue* left, |
- HValue* right) { |
- return new(zone) HMathFloorOfDiv(context, left, right); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HMathFloorOfDiv, |
+ HValue*, |
+ HValue*); |
virtual HValue* EnsureAndPropagateNotMinusZero( |
BitVector* visited) V8_OVERRIDE; |
@@ -3928,7 +3950,6 @@ class HArithmeticBinaryOperation : public HBinaryOperation { |
} |
DECLARE_ABSTRACT_INSTRUCTION(ArithmeticBinaryOperation) |
- |
private: |
virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
}; |
@@ -4159,18 +4180,10 @@ class HIsUndetectableAndBranch V8_FINAL : public HUnaryControlInstruction { |
class HStringCompareAndBranch : public HTemplateControlInstruction<2, 3> { |
public: |
- HStringCompareAndBranch(HValue* context, |
- HValue* left, |
- HValue* right, |
- Token::Value token) |
- : token_(token) { |
- ASSERT(Token::IsCompareOp(token)); |
- SetOperandAt(0, context); |
- SetOperandAt(1, left); |
- SetOperandAt(2, right); |
- set_representation(Representation::Tagged()); |
- SetGVNFlag(kChangesNewSpacePromotion); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HStringCompareAndBranch, |
+ HValue*, |
+ HValue*, |
+ Token::Value); |
HValue* context() { return OperandAt(0); } |
HValue* left() { return OperandAt(1); } |
@@ -4190,6 +4203,19 @@ class HStringCompareAndBranch : public HTemplateControlInstruction<2, 3> { |
DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch) |
private: |
+ HStringCompareAndBranch(HValue* context, |
+ HValue* left, |
+ HValue* right, |
+ Token::Value token) |
+ : token_(token) { |
+ ASSERT(Token::IsCompareOp(token)); |
+ SetOperandAt(0, context); |
+ SetOperandAt(1, left); |
+ SetOperandAt(2, right); |
+ set_representation(Representation::Tagged()); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
+ } |
+ |
Token::Value token_; |
}; |
@@ -4325,15 +4351,9 @@ class HInstanceOf V8_FINAL : public HBinaryOperation { |
class HInstanceOfKnownGlobal V8_FINAL : public HTemplateInstruction<2> { |
public: |
- HInstanceOfKnownGlobal(HValue* context, |
- HValue* left, |
- Handle<JSFunction> right) |
- : HTemplateInstruction<2>(HType::Boolean()), function_(right) { |
- SetOperandAt(0, context); |
- SetOperandAt(1, left); |
- set_representation(Representation::Tagged()); |
- SetAllSideEffects(); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HInstanceOfKnownGlobal, |
+ HValue*, |
+ Handle<JSFunction>); |
HValue* context() { return OperandAt(0); } |
HValue* left() { return OperandAt(1); } |
@@ -4346,6 +4366,16 @@ class HInstanceOfKnownGlobal V8_FINAL : public HTemplateInstruction<2> { |
DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal) |
private: |
+ HInstanceOfKnownGlobal(HValue* context, |
+ HValue* left, |
+ Handle<JSFunction> right) |
+ : HTemplateInstruction<2>(HType::Boolean()), function_(right) { |
+ SetOperandAt(0, context); |
+ SetOperandAt(1, left); |
+ set_representation(Representation::Tagged()); |
+ SetAllSideEffects(); |
+ } |
+ |
Handle<JSFunction> function_; |
}; |
@@ -4982,12 +5012,7 @@ class HParameter V8_FINAL : public HTemplateInstruction<0> { |
class HCallStub V8_FINAL : public HUnaryCall { |
public: |
- HCallStub(HValue* context, CodeStub::Major major_key, int argument_count) |
- : HUnaryCall(context, argument_count), |
- major_key_(major_key), |
- transcendental_type_(TranscendentalCache::kNumberOfCaches) { |
- } |
- |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallStub, CodeStub::Major, int); |
CodeStub::Major major_key() { return major_key_; } |
HValue* context() { return value(); } |
@@ -5004,6 +5029,12 @@ class HCallStub V8_FINAL : public HUnaryCall { |
DECLARE_CONCRETE_INSTRUCTION(CallStub) |
private: |
+ HCallStub(HValue* context, CodeStub::Major major_key, int argument_count) |
+ : HUnaryCall(context, argument_count), |
+ major_key_(major_key), |
+ transcendental_type_(TranscendentalCache::kNumberOfCaches) { |
+ } |
+ |
CodeStub::Major major_key_; |
TranscendentalCache::Type transcendental_type_; |
}; |
@@ -6538,12 +6569,9 @@ class HStringAdd V8_FINAL : public HBinaryOperation { |
class HStringCharCodeAt V8_FINAL : public HTemplateInstruction<3> { |
public: |
- static HStringCharCodeAt* New(Zone* zone, |
- HValue* context, |
- HValue* string, |
- HValue* index) { |
- return new(zone) HStringCharCodeAt(context, string, index); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HStringCharCodeAt, |
+ HValue*, |
+ HValue*); |
virtual Representation RequiredInputRepresentation(int index) { |
// The index is supposed to be Integer32. |
@@ -6647,6 +6675,24 @@ class HMaterializedLiteral : public HTemplateInstruction<V> { |
class HRegExpLiteral V8_FINAL : public HMaterializedLiteral<1> { |
public: |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HRegExpLiteral, |
+ Handle<FixedArray>, |
+ Handle<String>, |
+ Handle<String>, |
+ int); |
+ |
+ HValue* context() { return OperandAt(0); } |
+ Handle<FixedArray> literals() { return literals_; } |
+ Handle<String> pattern() { return pattern_; } |
+ Handle<String> flags() { return flags_; } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
+ return Representation::Tagged(); |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral) |
+ |
+ private: |
HRegExpLiteral(HValue* context, |
Handle<FixedArray> literals, |
Handle<String> pattern, |
@@ -6661,18 +6707,6 @@ class HRegExpLiteral V8_FINAL : public HMaterializedLiteral<1> { |
set_type(HType::JSObject()); |
} |
- HValue* context() { return OperandAt(0); } |
- Handle<FixedArray> literals() { return literals_; } |
- Handle<String> pattern() { return pattern_; } |
- Handle<String> flags() { return flags_; } |
- |
- virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
- return Representation::Tagged(); |
- } |
- |
- DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral) |
- |
- private: |
Handle<FixedArray> literals_; |
Handle<String> pattern_; |
Handle<String> flags_; |
@@ -6681,20 +6715,9 @@ class HRegExpLiteral V8_FINAL : public HMaterializedLiteral<1> { |
class HFunctionLiteral V8_FINAL : public HTemplateInstruction<1> { |
public: |
- HFunctionLiteral(HValue* context, |
- Handle<SharedFunctionInfo> shared, |
- bool pretenure) |
- : HTemplateInstruction<1>(HType::JSObject()), |
- shared_info_(shared), |
- pretenure_(pretenure), |
- has_no_literals_(shared->num_literals() == 0), |
- is_generator_(shared->is_generator()), |
- language_mode_(shared->language_mode()) { |
- SetOperandAt(0, context); |
- set_representation(Representation::Tagged()); |
- SetGVNFlag(kChangesNewSpacePromotion); |
- } |
- |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HFunctionLiteral, |
+ Handle<SharedFunctionInfo>, |
+ bool); |
HValue* context() { return OperandAt(0); } |
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
@@ -6710,6 +6733,20 @@ class HFunctionLiteral V8_FINAL : public HTemplateInstruction<1> { |
LanguageMode language_mode() const { return language_mode_; } |
private: |
+ HFunctionLiteral(HValue* context, |
+ Handle<SharedFunctionInfo> shared, |
+ bool pretenure) |
+ : HTemplateInstruction<1>(HType::JSObject()), |
+ shared_info_(shared), |
+ pretenure_(pretenure), |
+ has_no_literals_(shared->num_literals() == 0), |
+ is_generator_(shared->is_generator()), |
+ language_mode_(shared->language_mode()) { |
+ SetOperandAt(0, context); |
+ set_representation(Representation::Tagged()); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
+ } |
+ |
virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
Handle<SharedFunctionInfo> shared_info_; |
@@ -6722,11 +6759,7 @@ class HFunctionLiteral V8_FINAL : public HTemplateInstruction<1> { |
class HTypeof V8_FINAL : public HTemplateInstruction<2> { |
public: |
- explicit HTypeof(HValue* context, HValue* value) { |
- SetOperandAt(0, context); |
- SetOperandAt(1, value); |
- set_representation(Representation::Tagged()); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HTypeof, HValue*); |
HValue* context() { return OperandAt(0); } |
HValue* value() { return OperandAt(1); } |
@@ -6740,6 +6773,12 @@ class HTypeof V8_FINAL : public HTemplateInstruction<2> { |
DECLARE_CONCRETE_INSTRUCTION(Typeof) |
private: |
+ explicit HTypeof(HValue* context, HValue* value) { |
+ SetOperandAt(0, context); |
+ SetOperandAt(1, value); |
+ set_representation(Representation::Tagged()); |
+ } |
+ |
virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
}; |
@@ -6897,11 +6936,7 @@ class HCheckMapValue V8_FINAL : public HTemplateInstruction<2> { |
class HForInPrepareMap V8_FINAL : public HTemplateInstruction<2> { |
public: |
- static HForInPrepareMap* New(Zone* zone, |
- HValue* context, |
- HValue* object) { |
- return new(zone) HForInPrepareMap(context, object); |
- } |
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HForInPrepareMap, HValue*); |
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
return Representation::Tagged(); |