Index: src/ia32/lithium-ia32.h |
=================================================================== |
--- src/ia32/lithium-ia32.h (revision 7211) |
+++ src/ia32/lithium-ia32.h (working copy) |
@@ -121,7 +121,8 @@ |
V(LoadElements) \ |
V(LoadExternalArrayPointer) \ |
V(LoadFunctionPrototype) \ |
- V(LoadGlobal) \ |
+ V(LoadGlobalCell) \ |
+ V(LoadGlobalGeneric) \ |
V(LoadKeyedFastElement) \ |
V(LoadKeyedGeneric) \ |
V(LoadNamedField) \ |
@@ -1271,13 +1272,30 @@ |
}; |
-class LLoadGlobal: public LTemplateInstruction<1, 0, 0> { |
+class LLoadGlobalCell: public LTemplateInstruction<1, 0, 0> { |
public: |
- DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global") |
- DECLARE_HYDROGEN_ACCESSOR(LoadGlobal) |
+ DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell") |
+ DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell) |
}; |
+class LLoadGlobalGeneric: public LTemplateInstruction<1, 2, 0> { |
+ public: |
+ LLoadGlobalGeneric(LOperand* context, LOperand* global_object) { |
+ inputs_[0] = context; |
+ inputs_[1] = global_object; |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic") |
+ DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric) |
+ |
+ LOperand* context() { return inputs_[0]; } |
+ LOperand* global_object() { return inputs_[1]; } |
+ Handle<Object> name() const { return hydrogen()->name(); } |
+ bool for_typeof() const { return hydrogen()->for_typeof(); } |
+}; |
+ |
+ |
class LStoreGlobal: public LTemplateInstruction<0, 1, 0> { |
public: |
explicit LStoreGlobal(LOperand* value) { |