| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index 993f79c7f086f021b442a6765aafd558a37c57bc..c8b149b8ddaf164b141c9f6377e798e637aa550e 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -1494,11 +1494,15 @@ class HReturn V8_FINAL : public HTemplateControlInstruction<0, 3> {
|
|
|
| class HAbnormalExit V8_FINAL : public HTemplateControlInstruction<0, 0> {
|
| public:
|
| + DECLARE_INSTRUCTION_FACTORY_P0(HAbnormalExit);
|
| +
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::None();
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(AbnormalExit)
|
| + private:
|
| + HAbnormalExit() {}
|
| };
|
|
|
|
|
| @@ -1981,10 +1985,7 @@ class HPushArgument V8_FINAL : public HUnaryOperation {
|
|
|
| class HThisFunction V8_FINAL : public HTemplateInstruction<0> {
|
| public:
|
| - HThisFunction() {
|
| - set_representation(Representation::Tagged());
|
| - SetFlag(kUseGVN);
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P0(HThisFunction);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::None();
|
| @@ -1996,6 +1997,11 @@ class HThisFunction V8_FINAL : public HTemplateInstruction<0> {
|
| virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; }
|
|
|
| private:
|
| + HThisFunction() {
|
| + set_representation(Representation::Tagged());
|
| + SetFlag(kUseGVN);
|
| + }
|
| +
|
| virtual bool IsDeletable() const V8_OVERRIDE { return true; }
|
| };
|
|
|
| @@ -2057,14 +2063,7 @@ class HDeclareGlobals V8_FINAL : public HUnaryOperation {
|
|
|
| class HGlobalObject V8_FINAL : public HUnaryOperation {
|
| public:
|
| - explicit HGlobalObject(HValue* context) : HUnaryOperation(context) {
|
| - set_representation(Representation::Tagged());
|
| - SetFlag(kUseGVN);
|
| - }
|
| -
|
| - static HGlobalObject* New(Zone* zone, HValue* context) {
|
| - return new(zone) HGlobalObject(context);
|
| - }
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P0(HGlobalObject);
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(GlobalObject)
|
|
|
| @@ -2076,6 +2075,11 @@ class HGlobalObject V8_FINAL : public HUnaryOperation {
|
| virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; }
|
|
|
| private:
|
| + explicit HGlobalObject(HValue* context) : HUnaryOperation(context) {
|
| + set_representation(Representation::Tagged());
|
| + SetFlag(kUseGVN);
|
| + }
|
| +
|
| virtual bool IsDeletable() const V8_OVERRIDE { return true; }
|
| };
|
|
|
| @@ -2317,10 +2321,7 @@ class HCallGlobal V8_FINAL : public HUnaryCall {
|
|
|
| class HCallKnownGlobal V8_FINAL : public HCall<0> {
|
| public:
|
| - HCallKnownGlobal(Handle<JSFunction> target, int argument_count)
|
| - : HCall<0>(argument_count),
|
| - target_(target),
|
| - formal_parameter_count_(target->shared()->formal_parameter_count()) { }
|
| + DECLARE_INSTRUCTION_FACTORY_P2(HCallKnownGlobal, Handle<JSFunction>, int);
|
|
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
|
|
| @@ -2334,6 +2335,11 @@ class HCallKnownGlobal V8_FINAL : public HCall<0> {
|
| DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal)
|
|
|
| private:
|
| + HCallKnownGlobal(Handle<JSFunction> target, int argument_count)
|
| + : HCall<0>(argument_count),
|
| + target_(target),
|
| + formal_parameter_count_(target->shared()->formal_parameter_count()) { }
|
| +
|
| Handle<JSFunction> target_;
|
| int formal_parameter_count_;
|
| };
|
| @@ -3722,17 +3728,8 @@ class HWrapReceiver V8_FINAL : public HTemplateInstruction<2> {
|
|
|
| class HApplyArguments V8_FINAL : public HTemplateInstruction<4> {
|
| public:
|
| - HApplyArguments(HValue* function,
|
| - HValue* receiver,
|
| - HValue* length,
|
| - HValue* elements) {
|
| - set_representation(Representation::Tagged());
|
| - SetOperandAt(0, function);
|
| - SetOperandAt(1, receiver);
|
| - SetOperandAt(2, length);
|
| - SetOperandAt(3, elements);
|
| - SetAllSideEffects();
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P4(HApplyArguments, HValue*, HValue*, HValue*,
|
| + HValue*);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| // The length is untagged, all other inputs are tagged.
|
| @@ -3747,6 +3744,19 @@ class HApplyArguments V8_FINAL : public HTemplateInstruction<4> {
|
| HValue* elements() { return OperandAt(3); }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ApplyArguments)
|
| +
|
| + private:
|
| + HApplyArguments(HValue* function,
|
| + HValue* receiver,
|
| + HValue* length,
|
| + HValue* elements) {
|
| + set_representation(Representation::Tagged());
|
| + SetOperandAt(0, function);
|
| + SetOperandAt(1, receiver);
|
| + SetOperandAt(2, length);
|
| + SetOperandAt(3, elements);
|
| + SetAllSideEffects();
|
| + }
|
| };
|
|
|
|
|
| @@ -3804,13 +3814,7 @@ class HArgumentsLength V8_FINAL : public HUnaryOperation {
|
|
|
| class HAccessArgumentsAt V8_FINAL : public HTemplateInstruction<3> {
|
| public:
|
| - HAccessArgumentsAt(HValue* arguments, HValue* length, HValue* index) {
|
| - set_representation(Representation::Tagged());
|
| - SetFlag(kUseGVN);
|
| - SetOperandAt(0, arguments);
|
| - SetOperandAt(1, length);
|
| - SetOperandAt(2, index);
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P3(HAccessArgumentsAt, HValue*, HValue*, HValue*);
|
|
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
|
|
| @@ -3827,6 +3831,15 @@ class HAccessArgumentsAt V8_FINAL : public HTemplateInstruction<3> {
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt)
|
|
|
| + private:
|
| + HAccessArgumentsAt(HValue* arguments, HValue* length, HValue* index) {
|
| + set_representation(Representation::Tagged());
|
| + SetFlag(kUseGVN);
|
| + SetOperandAt(0, arguments);
|
| + SetOperandAt(1, length);
|
| + SetOperandAt(2, index);
|
| + }
|
| +
|
| virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; }
|
| };
|
|
|
| @@ -4051,16 +4064,8 @@ class HArithmeticBinaryOperation : public HBinaryOperation {
|
|
|
| class HCompareGeneric V8_FINAL : public HBinaryOperation {
|
| public:
|
| - HCompareGeneric(HValue* context,
|
| - HValue* left,
|
| - HValue* right,
|
| - Token::Value token)
|
| - : HBinaryOperation(context, left, right, HType::Boolean()),
|
| - token_(token) {
|
| - ASSERT(Token::IsCompareOp(token));
|
| - set_representation(Representation::Tagged());
|
| - SetAllSideEffects();
|
| - }
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HCompareGeneric, HValue*,
|
| + HValue*, Token::Value);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return index == 0
|
| @@ -4074,6 +4079,17 @@ class HCompareGeneric V8_FINAL : public HBinaryOperation {
|
| DECLARE_CONCRETE_INSTRUCTION(CompareGeneric)
|
|
|
| private:
|
| + HCompareGeneric(HValue* context,
|
| + HValue* left,
|
| + HValue* right,
|
| + Token::Value token)
|
| + : HBinaryOperation(context, left, right, HType::Boolean()),
|
| + token_(token) {
|
| + ASSERT(Token::IsCompareOp(token));
|
| + set_representation(Representation::Tagged());
|
| + SetAllSideEffects();
|
| + }
|
| +
|
| Token::Value token_;
|
| };
|
|
|
| @@ -4325,11 +4341,15 @@ class HStringCompareAndBranch : public HTemplateControlInstruction<2, 3> {
|
|
|
| class HIsConstructCallAndBranch : public HTemplateControlInstruction<2, 0> {
|
| public:
|
| + DECLARE_INSTRUCTION_FACTORY_P0(HIsConstructCallAndBranch);
|
| +
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::None();
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch)
|
| + private:
|
| + HIsConstructCallAndBranch() {}
|
| };
|
|
|
|
|
| @@ -4366,23 +4386,22 @@ class HHasInstanceTypeAndBranch V8_FINAL : public HUnaryControlInstruction {
|
|
|
| class HHasCachedArrayIndexAndBranch V8_FINAL : public HUnaryControlInstruction {
|
| public:
|
| - explicit HHasCachedArrayIndexAndBranch(HValue* value)
|
| - : HUnaryControlInstruction(value, NULL, NULL) { }
|
| + DECLARE_INSTRUCTION_FACTORY_P1(HHasCachedArrayIndexAndBranch, HValue*);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::Tagged();
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch)
|
| + private:
|
| + explicit HHasCachedArrayIndexAndBranch(HValue* value)
|
| + : HUnaryControlInstruction(value, NULL, NULL) { }
|
| };
|
|
|
|
|
| class HGetCachedArrayIndex V8_FINAL : public HUnaryOperation {
|
| public:
|
| - explicit HGetCachedArrayIndex(HValue* value) : HUnaryOperation(value) {
|
| - set_representation(Representation::Tagged());
|
| - SetFlag(kUseGVN);
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P1(HGetCachedArrayIndex, HValue*);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::Tagged();
|
| @@ -4394,15 +4413,19 @@ class HGetCachedArrayIndex V8_FINAL : public HUnaryOperation {
|
| virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; }
|
|
|
| private:
|
| + explicit HGetCachedArrayIndex(HValue* value) : HUnaryOperation(value) {
|
| + set_representation(Representation::Tagged());
|
| + SetFlag(kUseGVN);
|
| + }
|
| +
|
| virtual bool IsDeletable() const V8_OVERRIDE { return true; }
|
| };
|
|
|
|
|
| class HClassOfTestAndBranch V8_FINAL : public HUnaryControlInstruction {
|
| public:
|
| - HClassOfTestAndBranch(HValue* value, Handle<String> class_name)
|
| - : HUnaryControlInstruction(value, NULL, NULL),
|
| - class_name_(class_name) { }
|
| + DECLARE_INSTRUCTION_FACTORY_P2(HClassOfTestAndBranch, HValue*,
|
| + Handle<String>);
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch)
|
|
|
| @@ -4415,15 +4438,17 @@ class HClassOfTestAndBranch V8_FINAL : public HUnaryControlInstruction {
|
| Handle<String> class_name() const { return class_name_; }
|
|
|
| private:
|
| + HClassOfTestAndBranch(HValue* value, Handle<String> class_name)
|
| + : HUnaryControlInstruction(value, NULL, NULL),
|
| + class_name_(class_name) { }
|
| +
|
| Handle<String> class_name_;
|
| };
|
|
|
|
|
| class HTypeofIsAndBranch V8_FINAL : public HUnaryControlInstruction {
|
| public:
|
| - HTypeofIsAndBranch(HValue* value, Handle<String> type_literal)
|
| - : HUnaryControlInstruction(value, NULL, NULL),
|
| - type_literal_(type_literal) { }
|
| + DECLARE_INSTRUCTION_FACTORY_P2(HTypeofIsAndBranch, HValue*, Handle<String>);
|
|
|
| Handle<String> type_literal() { return type_literal_; }
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
| @@ -4435,17 +4460,17 @@ class HTypeofIsAndBranch V8_FINAL : public HUnaryControlInstruction {
|
| }
|
|
|
| private:
|
| + HTypeofIsAndBranch(HValue* value, Handle<String> type_literal)
|
| + : HUnaryControlInstruction(value, NULL, NULL),
|
| + type_literal_(type_literal) { }
|
| +
|
| Handle<String> type_literal_;
|
| };
|
|
|
|
|
| class HInstanceOf V8_FINAL : public HBinaryOperation {
|
| public:
|
| - HInstanceOf(HValue* context, HValue* left, HValue* right)
|
| - : HBinaryOperation(context, left, right, HType::Boolean()) {
|
| - set_representation(Representation::Tagged());
|
| - SetAllSideEffects();
|
| - }
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HInstanceOf, HValue*, HValue*);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::Tagged();
|
| @@ -4454,6 +4479,13 @@ class HInstanceOf V8_FINAL : public HBinaryOperation {
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(InstanceOf)
|
| +
|
| + private:
|
| + HInstanceOf(HValue* context, HValue* left, HValue* right)
|
| + : HBinaryOperation(context, left, right, HType::Boolean()) {
|
| + set_representation(Representation::Tagged());
|
| + SetAllSideEffects();
|
| + }
|
| };
|
|
|
|
|
| @@ -4529,10 +4561,7 @@ class HPower V8_FINAL : public HTemplateInstruction<2> {
|
|
|
| class HRandom V8_FINAL : public HTemplateInstruction<1> {
|
| public:
|
| - explicit HRandom(HValue* global_object) {
|
| - SetOperandAt(0, global_object);
|
| - set_representation(Representation::Double());
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P1(HRandom, HValue*);
|
|
|
| HValue* global_object() { return OperandAt(0); }
|
|
|
| @@ -4543,6 +4572,11 @@ class HRandom V8_FINAL : public HTemplateInstruction<1> {
|
| DECLARE_CONCRETE_INSTRUCTION(Random)
|
|
|
| private:
|
| + explicit HRandom(HValue* global_object) {
|
| + SetOperandAt(0, global_object);
|
| + set_representation(Representation::Double());
|
| + }
|
| +
|
| virtual bool IsDeletable() const V8_OVERRIDE { return true; }
|
| };
|
|
|
| @@ -5179,12 +5213,8 @@ class HUnknownOSRValue V8_FINAL : public HTemplateInstruction<0> {
|
|
|
| class HLoadGlobalCell V8_FINAL : public HTemplateInstruction<0> {
|
| public:
|
| - HLoadGlobalCell(Handle<Cell> cell, PropertyDetails details)
|
| - : cell_(Unique<Cell>::CreateUninitialized(cell)), details_(details) {
|
| - set_representation(Representation::Tagged());
|
| - SetFlag(kUseGVN);
|
| - SetGVNFlag(kDependsOnGlobalVars);
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P2(HLoadGlobalCell, Handle<Cell>,
|
| + PropertyDetails);
|
|
|
| Unique<Cell> cell() const { return cell_; }
|
| bool RequiresHoleCheck() const;
|
| @@ -5211,6 +5241,13 @@ class HLoadGlobalCell V8_FINAL : public HTemplateInstruction<0> {
|
| }
|
|
|
| private:
|
| + HLoadGlobalCell(Handle<Cell> cell, PropertyDetails details)
|
| + : cell_(Unique<Cell>::CreateUninitialized(cell)), details_(details) {
|
| + set_representation(Representation::Tagged());
|
| + SetFlag(kUseGVN);
|
| + SetGVNFlag(kDependsOnGlobalVars);
|
| + }
|
| +
|
| virtual bool IsDeletable() const V8_OVERRIDE { return !RequiresHoleCheck(); }
|
|
|
| Unique<Cell> cell_;
|
| @@ -5220,17 +5257,8 @@ class HLoadGlobalCell V8_FINAL : public HTemplateInstruction<0> {
|
|
|
| class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> {
|
| public:
|
| - HLoadGlobalGeneric(HValue* context,
|
| - HValue* global_object,
|
| - Handle<Object> name,
|
| - bool for_typeof)
|
| - : name_(name),
|
| - for_typeof_(for_typeof) {
|
| - SetOperandAt(0, context);
|
| - SetOperandAt(1, global_object);
|
| - set_representation(Representation::Tagged());
|
| - SetAllSideEffects();
|
| - }
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*,
|
| + Handle<Object>, bool);
|
|
|
| HValue* context() { return OperandAt(0); }
|
| HValue* global_object() { return OperandAt(1); }
|
| @@ -5246,6 +5274,18 @@ class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> {
|
| DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric)
|
|
|
| private:
|
| + HLoadGlobalGeneric(HValue* context,
|
| + HValue* global_object,
|
| + Handle<Object> name,
|
| + bool for_typeof)
|
| + : name_(name),
|
| + for_typeof_(for_typeof) {
|
| + SetOperandAt(0, context);
|
| + SetOperandAt(1, global_object);
|
| + set_representation(Representation::Tagged());
|
| + SetAllSideEffects();
|
| + }
|
| +
|
| Handle<Object> name_;
|
| bool for_typeof_;
|
| };
|
| @@ -5996,13 +6036,8 @@ class HLoadNamedField V8_FINAL : public HTemplateInstruction<1> {
|
|
|
| class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> {
|
| public:
|
| - HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name)
|
| - : name_(name) {
|
| - SetOperandAt(0, context);
|
| - SetOperandAt(1, object);
|
| - set_representation(Representation::Tagged());
|
| - SetAllSideEffects();
|
| - }
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadNamedGeneric, HValue*,
|
| + Handle<Object>);
|
|
|
| HValue* context() { return OperandAt(0); }
|
| HValue* object() { return OperandAt(1); }
|
| @@ -6017,18 +6052,21 @@ class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> {
|
| DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric)
|
|
|
| private:
|
| + HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name)
|
| + : name_(name) {
|
| + SetOperandAt(0, context);
|
| + SetOperandAt(1, object);
|
| + set_representation(Representation::Tagged());
|
| + SetAllSideEffects();
|
| + }
|
| +
|
| Handle<Object> name_;
|
| };
|
|
|
|
|
| class HLoadFunctionPrototype V8_FINAL : public HUnaryOperation {
|
| public:
|
| - explicit HLoadFunctionPrototype(HValue* function)
|
| - : HUnaryOperation(function) {
|
| - set_representation(Representation::Tagged());
|
| - SetFlag(kUseGVN);
|
| - SetGVNFlag(kDependsOnCalls);
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P1(HLoadFunctionPrototype, HValue*);
|
|
|
| HValue* function() { return OperandAt(0); }
|
|
|
| @@ -6040,6 +6078,14 @@ class HLoadFunctionPrototype V8_FINAL : public HUnaryOperation {
|
|
|
| protected:
|
| virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; }
|
| +
|
| + private:
|
| + explicit HLoadFunctionPrototype(HValue* function)
|
| + : HUnaryOperation(function) {
|
| + set_representation(Representation::Tagged());
|
| + SetFlag(kUseGVN);
|
| + SetGVNFlag(kDependsOnCalls);
|
| + }
|
| };
|
|
|
| class ArrayInstructionInterface {
|
| @@ -6227,14 +6273,8 @@ class HLoadKeyed V8_FINAL
|
|
|
| class HLoadKeyedGeneric V8_FINAL : public HTemplateInstruction<3> {
|
| public:
|
| - HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key) {
|
| - set_representation(Representation::Tagged());
|
| - SetOperandAt(0, obj);
|
| - SetOperandAt(1, key);
|
| - SetOperandAt(2, context);
|
| - SetAllSideEffects();
|
| - }
|
| -
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadKeyedGeneric, HValue*,
|
| + HValue*);
|
| HValue* object() { return OperandAt(0); }
|
| HValue* key() { return OperandAt(1); }
|
| HValue* context() { return OperandAt(2); }
|
| @@ -6249,6 +6289,15 @@ class HLoadKeyedGeneric V8_FINAL : public HTemplateInstruction<3> {
|
| virtual HValue* Canonicalize() V8_OVERRIDE;
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric)
|
| +
|
| + private:
|
| + HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key) {
|
| + set_representation(Representation::Tagged());
|
| + SetOperandAt(0, obj);
|
| + SetOperandAt(1, key);
|
| + SetOperandAt(2, context);
|
| + SetAllSideEffects();
|
| + }
|
| };
|
|
|
|
|
| @@ -6367,19 +6416,9 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> {
|
|
|
| class HStoreNamedGeneric V8_FINAL : public HTemplateInstruction<3> {
|
| public:
|
| - HStoreNamedGeneric(HValue* context,
|
| - HValue* object,
|
| - Handle<String> name,
|
| - HValue* value,
|
| - StrictModeFlag strict_mode_flag)
|
| - : name_(name),
|
| - strict_mode_flag_(strict_mode_flag) {
|
| - SetOperandAt(0, object);
|
| - SetOperandAt(1, value);
|
| - SetOperandAt(2, context);
|
| - SetAllSideEffects();
|
| - }
|
| -
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HStoreNamedGeneric, HValue*,
|
| + Handle<String>, HValue*,
|
| + StrictModeFlag);
|
| HValue* object() { return OperandAt(0); }
|
| HValue* value() { return OperandAt(1); }
|
| HValue* context() { return OperandAt(2); }
|
| @@ -6395,6 +6434,19 @@ class HStoreNamedGeneric V8_FINAL : public HTemplateInstruction<3> {
|
| DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric)
|
|
|
| private:
|
| + HStoreNamedGeneric(HValue* context,
|
| + HValue* object,
|
| + Handle<String> name,
|
| + HValue* value,
|
| + StrictModeFlag strict_mode_flag)
|
| + : name_(name),
|
| + strict_mode_flag_(strict_mode_flag) {
|
| + SetOperandAt(0, object);
|
| + SetOperandAt(1, value);
|
| + SetOperandAt(2, context);
|
| + SetAllSideEffects();
|
| + }
|
| +
|
| Handle<String> name_;
|
| StrictModeFlag strict_mode_flag_;
|
| };
|
| @@ -6543,18 +6595,8 @@ class HStoreKeyed V8_FINAL
|
|
|
| class HStoreKeyedGeneric V8_FINAL : public HTemplateInstruction<4> {
|
| public:
|
| - HStoreKeyedGeneric(HValue* context,
|
| - HValue* object,
|
| - HValue* key,
|
| - HValue* value,
|
| - StrictModeFlag strict_mode_flag)
|
| - : strict_mode_flag_(strict_mode_flag) {
|
| - SetOperandAt(0, object);
|
| - SetOperandAt(1, key);
|
| - SetOperandAt(2, value);
|
| - SetOperandAt(3, context);
|
| - SetAllSideEffects();
|
| - }
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HStoreKeyedGeneric, HValue*,
|
| + HValue*, HValue*, StrictModeFlag);
|
|
|
| HValue* object() { return OperandAt(0); }
|
| HValue* key() { return OperandAt(1); }
|
| @@ -6572,6 +6614,19 @@ class HStoreKeyedGeneric V8_FINAL : public HTemplateInstruction<4> {
|
| DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric)
|
|
|
| private:
|
| + HStoreKeyedGeneric(HValue* context,
|
| + HValue* object,
|
| + HValue* key,
|
| + HValue* value,
|
| + StrictModeFlag strict_mode_flag)
|
| + : strict_mode_flag_(strict_mode_flag) {
|
| + SetOperandAt(0, object);
|
| + SetOperandAt(1, key);
|
| + SetOperandAt(2, value);
|
| + SetOperandAt(3, context);
|
| + SetAllSideEffects();
|
| + }
|
| +
|
| StrictModeFlag strict_mode_flag_;
|
| };
|
|
|
| @@ -6950,9 +7005,7 @@ class HToFastProperties V8_FINAL : public HUnaryOperation {
|
|
|
| class HValueOf V8_FINAL : public HUnaryOperation {
|
| public:
|
| - explicit HValueOf(HValue* value) : HUnaryOperation(value) {
|
| - set_representation(Representation::Tagged());
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P1(HValueOf, HValue*);
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::Tagged();
|
| @@ -6961,16 +7014,17 @@ class HValueOf V8_FINAL : public HUnaryOperation {
|
| DECLARE_CONCRETE_INSTRUCTION(ValueOf)
|
|
|
| private:
|
| + explicit HValueOf(HValue* value) : HUnaryOperation(value) {
|
| + set_representation(Representation::Tagged());
|
| + }
|
| +
|
| virtual bool IsDeletable() const V8_OVERRIDE { return true; }
|
| };
|
|
|
|
|
| class HDateField V8_FINAL : public HUnaryOperation {
|
| public:
|
| - HDateField(HValue* date, Smi* index)
|
| - : HUnaryOperation(date), index_(index) {
|
| - set_representation(Representation::Tagged());
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P2(HDateField, HValue*, Smi*);
|
|
|
| Smi* index() const { return index_; }
|
|
|
| @@ -6981,21 +7035,19 @@ class HDateField V8_FINAL : public HUnaryOperation {
|
| DECLARE_CONCRETE_INSTRUCTION(DateField)
|
|
|
| private:
|
| + HDateField(HValue* date, Smi* index)
|
| + : HUnaryOperation(date), index_(index) {
|
| + set_representation(Representation::Tagged());
|
| + }
|
| +
|
| Smi* index_;
|
| };
|
|
|
|
|
| class HSeqStringSetChar V8_FINAL : public HTemplateInstruction<3> {
|
| public:
|
| - HSeqStringSetChar(String::Encoding encoding,
|
| - HValue* string,
|
| - HValue* index,
|
| - HValue* value) : encoding_(encoding) {
|
| - SetOperandAt(0, string);
|
| - SetOperandAt(1, index);
|
| - SetOperandAt(2, value);
|
| - set_representation(Representation::Tagged());
|
| - }
|
| + DECLARE_INSTRUCTION_FACTORY_P4(HSeqStringSetChar, String::Encoding,
|
| + HValue*, HValue*, HValue*);
|
|
|
| String::Encoding encoding() { return encoding_; }
|
| HValue* string() { return OperandAt(0); }
|
| @@ -7010,6 +7062,16 @@ class HSeqStringSetChar V8_FINAL : public HTemplateInstruction<3> {
|
| DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar)
|
|
|
| private:
|
| + HSeqStringSetChar(String::Encoding encoding,
|
| + HValue* string,
|
| + HValue* index,
|
| + HValue* value) : encoding_(encoding) {
|
| + SetOperandAt(0, string);
|
| + SetOperandAt(1, index);
|
| + SetOperandAt(2, value);
|
| + set_representation(Representation::Tagged());
|
| + }
|
| +
|
| String::Encoding encoding_;
|
| };
|
|
|
|
|