Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index fb45ee9d9f5133d7da803c33991da34b3ec78b77..b2bdeb061e2e5912e21e6cb5723f28593370f695 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -148,7 +148,8 @@ class LChunkBuilder; |
V(Simulate) \ |
V(StackCheck) \ |
V(StoreContextSlot) \ |
- V(StoreGlobal) \ |
+ V(StoreGlobalCell) \ |
+ V(StoreGlobalGeneric) \ |
V(StoreKeyedFastElement) \ |
V(StoreKeyedSpecializedArrayElement) \ |
V(StoreKeyedGeneric) \ |
@@ -2878,11 +2879,11 @@ class HLoadGlobalGeneric: public HBinaryOperation { |
}; |
-class HStoreGlobal: public HUnaryOperation { |
+class HStoreGlobalCell: public HUnaryOperation { |
public: |
- HStoreGlobal(HValue* value, |
- Handle<JSGlobalPropertyCell> cell, |
- bool check_hole_value) |
+ HStoreGlobalCell(HValue* value, |
+ Handle<JSGlobalPropertyCell> cell, |
+ bool check_hole_value) |
: HUnaryOperation(value), |
cell_(cell), |
check_hole_value_(check_hole_value) { |
@@ -2897,7 +2898,7 @@ class HStoreGlobal: public HUnaryOperation { |
} |
virtual void PrintDataTo(StringStream* stream); |
- DECLARE_CONCRETE_INSTRUCTION(StoreGlobal, "store_global") |
+ DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store_global_cell") |
private: |
Handle<JSGlobalPropertyCell> cell_; |
@@ -2905,6 +2906,38 @@ class HStoreGlobal: public HUnaryOperation { |
}; |
+class HStoreGlobalGeneric: public HTemplateInstruction<3> { |
+ public: |
+ HStoreGlobalGeneric(HValue* context, |
+ HValue* global_object, |
+ Handle<Object> name, |
+ HValue* value) |
+ : name_(name) { |
+ SetOperandAt(0, context); |
+ SetOperandAt(1, global_object); |
+ SetOperandAt(2, value); |
+ set_representation(Representation::Tagged()); |
+ SetAllSideEffects(); |
+ } |
+ |
+ HValue* context() { return OperandAt(0); } |
+ HValue* global_object() { return OperandAt(1); } |
+ Handle<Object> name() const { return name_; } |
+ HValue* value() { return OperandAt(2); } |
+ |
+ virtual void PrintDataTo(StringStream* stream); |
+ |
+ virtual Representation RequiredInputRepresentation(int index) const { |
+ return Representation::Tagged(); |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store_global_generic") |
+ |
+ private: |
+ Handle<Object> name_; |
+}; |
+ |
+ |
class HLoadContextSlot: public HUnaryOperation { |
public: |
HLoadContextSlot(HValue* context , int slot_index) |