Index: src/x64/lithium-x64.h |
=================================================================== |
--- src/x64/lithium-x64.h (revision 6891) |
+++ src/x64/lithium-x64.h (working copy) |
@@ -42,8 +42,6 @@ |
#define LITHIUM_ALL_INSTRUCTION_LIST(V) \ |
V(ControlInstruction) \ |
V(Call) \ |
- V(StoreKeyed) \ |
- V(StoreNamed) \ |
LITHIUM_CONCRETE_INSTRUCTION_LIST(V) |
@@ -1469,34 +1467,23 @@ |
}; |
-class LStoreNamed: public LTemplateInstruction<0, 2, 1> { |
+class LStoreNamedField: public LTemplateInstruction<0, 2, 1> { |
public: |
- LStoreNamed(LOperand* object, LOperand* value) { |
+ LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) { |
inputs_[0] = object; |
inputs_[1] = value; |
+ temps_[0] = temp; |
} |
- DECLARE_INSTRUCTION(StoreNamed) |
- DECLARE_HYDROGEN_ACCESSOR(StoreNamed) |
+ DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
+ DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
virtual void PrintDataTo(StringStream* stream); |
LOperand* object() { return inputs_[0]; } |
LOperand* value() { return inputs_[1]; } |
- Handle<Object> name() const { return hydrogen()->name(); } |
-}; |
- |
-class LStoreNamedField: public LStoreNamed { |
- public: |
- LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) |
- : LStoreNamed(object, value) { |
- temps_[0] = temp; |
- } |
- |
- DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
- DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
- |
+ Handle<Object> name() const { return hydrogen()->name(); } |
bool is_in_object() { return hydrogen()->is_in_object(); } |
int offset() { return hydrogen()->offset(); } |
bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } |
@@ -1504,25 +1491,35 @@ |
}; |
-class LStoreNamedGeneric: public LStoreNamed { |
+class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> { |
public: |
- LStoreNamedGeneric(LOperand* object, LOperand* value) |
- : LStoreNamed(object, value) { } |
+ LStoreNamedGeneric(LOperand* object, LOperand* value) { |
+ inputs_[0] = object; |
+ inputs_[1] = value; |
+ } |
DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
+ |
+ virtual void PrintDataTo(StringStream* stream); |
+ |
+ LOperand* object() { return inputs_[0]; } |
+ LOperand* value() { return inputs_[1]; } |
+ Handle<Object> name() const { return hydrogen()->name(); } |
}; |
-class LStoreKeyed: public LTemplateInstruction<0, 3, 0> { |
+class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> { |
public: |
- LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { |
+ LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) { |
inputs_[0] = obj; |
inputs_[1] = key; |
inputs_[2] = val; |
} |
- DECLARE_INSTRUCTION(StoreKeyed) |
+ DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, |
+ "store-keyed-fast-element") |
+ DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) |
virtual void PrintDataTo(StringStream* stream); |
@@ -1532,17 +1529,6 @@ |
}; |
-class LStoreKeyedFastElement: public LStoreKeyed { |
- public: |
- LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) |
- : LStoreKeyed(obj, key, val) {} |
- |
- DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, |
- "store-keyed-fast-element") |
- DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) |
-}; |
- |
- |
class LStorePixelArrayElement: public LTemplateInstruction<0, 3, 0> { |
public: |
LStorePixelArrayElement(LOperand* external_pointer, |
@@ -1563,12 +1549,21 @@ |
}; |
-class LStoreKeyedGeneric: public LStoreKeyed { |
+class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> { |
public: |
- LStoreKeyedGeneric(LOperand* object, LOperand* key, LOperand* value) |
- : LStoreKeyed(object, key, value) { } |
+ LStoreKeyedGeneric(LOperand* object, LOperand* key, LOperand* value) { |
+ inputs_[0] = object; |
+ inputs_[1] = key; |
+ inputs_[2] = value; |
+ } |
DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
+ |
+ virtual void PrintDataTo(StringStream* stream); |
+ |
+ LOperand* object() { return inputs_[0]; } |
+ LOperand* key() { return inputs_[1]; } |
+ LOperand* value() { return inputs_[2]; } |
}; |