diff options
Diffstat (limited to 'src/3rdparty/v8/src/hydrogen-instructions.h')
-rw-r--r-- | src/3rdparty/v8/src/hydrogen-instructions.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/3rdparty/v8/src/hydrogen-instructions.h b/src/3rdparty/v8/src/hydrogen-instructions.h index d118354..7136657 100644 --- a/src/3rdparty/v8/src/hydrogen-instructions.h +++ b/src/3rdparty/v8/src/hydrogen-instructions.h @@ -1602,22 +1602,31 @@ class HDeclareGlobals: public HUnaryOperation { class HGlobalObject: public HUnaryOperation { public: - explicit HGlobalObject(HValue* context) : HUnaryOperation(context) { + explicit HGlobalObject(HValue* context) : HUnaryOperation(context), qml_global_(false) { set_representation(Representation::Tagged()); SetFlag(kUseGVN); } + virtual void PrintDataTo(StringStream* stream); + DECLARE_CONCRETE_INSTRUCTION(GlobalObject) virtual Representation RequiredInputRepresentation(int index) { return Representation::Tagged(); } + bool qml_global() { return qml_global_; } + void set_qml_global(bool v) { qml_global_ = v; } + protected: - virtual bool DataEquals(HValue* other) { return true; } + virtual bool DataEquals(HValue* other) { + HGlobalObject* o = HGlobalObject::cast(other); + return o->qml_global_ == qml_global_; + } private: virtual bool IsDeletable() const { return true; } + bool qml_global_; }; @@ -1812,7 +1821,7 @@ class HCallFunction: public HBinaryCall { class HCallGlobal: public HUnaryCall { public: HCallGlobal(HValue* context, Handle<String> name, int argument_count) - : HUnaryCall(context, argument_count), name_(name) { + : HUnaryCall(context, argument_count), name_(name), qml_global_(false) { } virtual void PrintDataTo(StringStream* stream); @@ -1824,10 +1833,14 @@ class HCallGlobal: public HUnaryCall { return Representation::Tagged(); } + bool qml_global() { return qml_global_; } + void set_qml_global(bool v) { qml_global_ = v; } + DECLARE_CONCRETE_INSTRUCTION(CallGlobal) private: Handle<String> name_; + bool qml_global_; }; |