| Index: src/arm/lithium-arm.h
|
| ===================================================================
|
| --- src/arm/lithium-arm.h (revision 7031)
|
| +++ src/arm/lithium-arm.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)
|
|
|
|
|
| @@ -94,6 +92,7 @@
|
| V(FixedArrayLength) \
|
| V(FunctionLiteral) \
|
| V(Gap) \
|
| + V(GetCachedArrayIndex) \
|
| V(GlobalObject) \
|
| V(GlobalReceiver) \
|
| V(Goto) \
|
| @@ -122,6 +121,8 @@
|
| V(LoadKeyedGeneric) \
|
| V(LoadNamedField) \
|
| V(LoadNamedGeneric) \
|
| + V(LoadPixelArrayElement) \
|
| + V(LoadPixelArrayExternalPointer) \
|
| V(ModI) \
|
| V(MulI) \
|
| V(NumberTagD) \
|
| @@ -131,6 +132,8 @@
|
| V(OsrEntry) \
|
| V(OuterContext) \
|
| V(Parameter) \
|
| + V(PixelArrayLength) \
|
| + V(Power) \
|
| V(PushArgument) \
|
| V(RegExpLiteral) \
|
| V(Return) \
|
| @@ -736,6 +739,17 @@
|
| };
|
|
|
|
|
| +class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
|
| + public:
|
| + explicit LGetCachedArrayIndex(LOperand* value) {
|
| + inputs_[0] = value;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index")
|
| + DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex)
|
| +};
|
| +
|
| +
|
| class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
|
| @@ -977,6 +991,17 @@
|
| };
|
|
|
|
|
| +class LPixelArrayLength: public LTemplateInstruction<1, 1, 0> {
|
| + public:
|
| + explicit LPixelArrayLength(LOperand* value) {
|
| + inputs_[0] = value;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(PixelArrayLength, "pixel-array-length")
|
| + DECLARE_HYDROGEN_ACCESSOR(PixelArrayLength)
|
| +};
|
| +
|
| +
|
| class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| explicit LFixedArrayLength(LOperand* value) {
|
| @@ -1032,6 +1057,18 @@
|
| };
|
|
|
|
|
| +class LPower: public LTemplateInstruction<1, 2, 0> {
|
| + public:
|
| + LPower(LOperand* left, LOperand* right) {
|
| + inputs_[0] = left;
|
| + inputs_[1] = right;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(Power, "power")
|
| + DECLARE_HYDROGEN_ACCESSOR(Power)
|
| +};
|
| +
|
| +
|
| class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| LArithmeticD(Token::Value op, LOperand* left, LOperand* right)
|
| @@ -1126,6 +1163,17 @@
|
| };
|
|
|
|
|
| +class LLoadPixelArrayExternalPointer: public LTemplateInstruction<1, 1, 0> {
|
| + public:
|
| + explicit LLoadPixelArrayExternalPointer(LOperand* object) {
|
| + inputs_[0] = object;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(LoadPixelArrayExternalPointer,
|
| + "load-pixel-array-external-pointer")
|
| +};
|
| +
|
| +
|
| class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| LLoadKeyedFastElement(LOperand* elements, LOperand* key) {
|
| @@ -1141,6 +1189,22 @@
|
| };
|
|
|
|
|
| +class LLoadPixelArrayElement: public LTemplateInstruction<1, 2, 0> {
|
| + public:
|
| + LLoadPixelArrayElement(LOperand* external_pointer, LOperand* key) {
|
| + inputs_[0] = external_pointer;
|
| + inputs_[1] = key;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(LoadPixelArrayElement,
|
| + "load-pixel-array-element")
|
| + DECLARE_HYDROGEN_ACCESSOR(LoadPixelArrayElement)
|
| +
|
| + LOperand* external_pointer() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| +};
|
| +
|
| +
|
| class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| LLoadKeyedGeneric(LOperand* obj, LOperand* key) {
|
| @@ -1457,32 +1521,22 @@
|
| };
|
|
|
|
|
| -class LStoreNamed: public LTemplateInstruction<0, 2, 0> {
|
| +class LStoreNamedField: public LTemplateInstruction<0, 2, 0> {
|
| public:
|
| - LStoreNamed(LOperand* obj, LOperand* val) {
|
| + LStoreNamedField(LOperand* obj, LOperand* val) {
|
| inputs_[0] = obj;
|
| inputs_[1] = val;
|
| }
|
|
|
| - 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* obj, LOperand* val)
|
| - : LStoreNamed(obj, val) { }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
|
| - DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
|
| -
|
| bool is_in_object() { return hydrogen()->is_in_object(); }
|
| int offset() { return hydrogen()->offset(); }
|
| bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); }
|
| @@ -1490,25 +1544,35 @@
|
| };
|
|
|
|
|
| -class LStoreNamedGeneric: public LStoreNamed {
|
| +class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> {
|
| public:
|
| - LStoreNamedGeneric(LOperand* obj, LOperand* val)
|
| - : LStoreNamed(obj, val) { }
|
| + LStoreNamedGeneric(LOperand* obj, LOperand* val) {
|
| + inputs_[0] = obj;
|
| + inputs_[1] = val;
|
| + }
|
|
|
| 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);
|
|
|
| @@ -1518,23 +1582,21 @@
|
| };
|
|
|
|
|
| -class LStoreKeyedFastElement: public LStoreKeyed {
|
| +class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> {
|
| public:
|
| - LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val)
|
| - : LStoreKeyed(obj, key, val) {}
|
| + LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) {
|
| + inputs_[0] = obj;
|
| + inputs_[1] = key;
|
| + inputs_[2] = val;
|
| + }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement,
|
| - "store-keyed-fast-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement)
|
| -};
|
| + DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
|
|
|
| + virtual void PrintDataTo(StringStream* stream);
|
|
|
| -class LStoreKeyedGeneric: public LStoreKeyed {
|
| - public:
|
| - LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val)
|
| - : LStoreKeyed(obj, key, val) { }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* key() { return inputs_[1]; }
|
| + LOperand* value() { return inputs_[2]; }
|
| };
|
|
|
|
|
|
|