| Index: src/ia32/lithium-ia32.h
|
| diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
|
| index 70ec962282c3305e8b5bb007f8864cb887ba0540..f1bae7188979ac8823efbc7d9cdbd06fe604e577 100644
|
| --- a/src/ia32/lithium-ia32.h
|
| +++ b/src/ia32/lithium-ia32.h
|
| @@ -124,9 +124,9 @@ class LCodeGen;
|
| V(LoadGlobal) \
|
| V(LoadKeyedFastElement) \
|
| V(LoadKeyedGeneric) \
|
| + V(LoadKeyedSpecializedArrayElement) \
|
| V(LoadNamedField) \
|
| V(LoadNamedGeneric) \
|
| - V(LoadPixelArrayElement) \
|
| V(ModI) \
|
| V(MulI) \
|
| V(NumberTagD) \
|
| @@ -148,9 +148,9 @@ class LCodeGen;
|
| V(StoreGlobal) \
|
| V(StoreKeyedFastElement) \
|
| V(StoreKeyedGeneric) \
|
| + V(StoreKeyedSpecializedArrayElement) \
|
| V(StoreNamedField) \
|
| V(StoreNamedGeneric) \
|
| - V(StorePixelArrayElement) \
|
| V(StringCharCodeAt) \
|
| V(StringCharFromCode) \
|
| V(StringLength) \
|
| @@ -1240,19 +1240,26 @@ class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
|
| };
|
|
|
|
|
| -class LLoadPixelArrayElement: public LTemplateInstruction<1, 2, 0> {
|
| +class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| - LLoadPixelArrayElement(LOperand* external_pointer, LOperand* key) {
|
| + LLoadKeyedSpecializedArrayElement(LOperand* external_pointer,
|
| + LOperand* key,
|
| + ExternalArrayType array_type)
|
| + : array_type_(array_type) {
|
| inputs_[0] = external_pointer;
|
| inputs_[1] = key;
|
| }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(LoadPixelArrayElement,
|
| - "load-pixel-array-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(LoadPixelArrayElement)
|
| + DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement,
|
| + "load-keyed-specialized-array-element")
|
| + DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement)
|
|
|
| LOperand* external_pointer() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| + ExternalArrayType array_type() const { return array_type_; }
|
| +
|
| + private:
|
| + ExternalArrayType array_type_;
|
| };
|
|
|
|
|
| @@ -1658,25 +1665,31 @@ class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
|
| };
|
|
|
|
|
| -class LStorePixelArrayElement: public LTemplateInstruction<0, 3, 1> {
|
| +class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 1> {
|
| public:
|
| - LStorePixelArrayElement(LOperand* external_pointer,
|
| - LOperand* key,
|
| - LOperand* val,
|
| - LOperand* clamped) {
|
| + LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
|
| + LOperand* key,
|
| + LOperand* val,
|
| + LOperand* temp,
|
| + ExternalArrayType array_type)
|
| + : array_type_(array_type) {
|
| inputs_[0] = external_pointer;
|
| inputs_[1] = key;
|
| inputs_[2] = val;
|
| - temps_[0] = clamped;
|
| + temps_[0] = temp;
|
| }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(StorePixelArrayElement,
|
| - "store-pixel-array-element")
|
| - DECLARE_HYDROGEN_ACCESSOR(StorePixelArrayElement)
|
| + DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement,
|
| + "store-keyed-specialized-array-element")
|
| + DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement)
|
|
|
| LOperand* external_pointer() { return inputs_[0]; }
|
| LOperand* key() { return inputs_[1]; }
|
| LOperand* value() { return inputs_[2]; }
|
| + ExternalArrayType array_type() const { return array_type_; }
|
| +
|
| + private:
|
| + ExternalArrayType array_type_;
|
| };
|
|
|
|
|
|
|