Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index a0d932fbd24311f8eeb613edc706e6002cadd60b..c4df104fe2ef3273ce6798234a46263039cde3d8 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -150,6 +150,7 @@ class LChunkBuilder; |
V(StoreContextSlot) \ |
V(StoreGlobal) \ |
V(StoreKeyedFastElement) \ |
+ V(StorePixelArrayElement) \ |
V(StoreKeyedGeneric) \ |
V(StoreNamedField) \ |
V(StoreNamedGeneric) \ |
@@ -3170,6 +3171,43 @@ class HStoreKeyedFastElement: public HStoreKeyed { |
}; |
+class HStorePixelArrayElement: public HInstruction { |
+ public: |
+ HStorePixelArrayElement(HValue* external_elements, HValue* key, HValue* val) { |
+ SetFlag(kChangesPixelArrayElements); |
+ SetOperandAt(0, external_elements); |
+ SetOperandAt(1, key); |
+ SetOperandAt(2, val); |
+ } |
+ |
+ virtual void PrintDataTo(StringStream* stream) const; |
+ virtual int OperandCount() const { return operands_.length(); } |
+ virtual HValue* OperandAt(int index) const { return operands_[index]; } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) const { |
+ if (index == 0) { |
+ return Representation::External(); |
+ } else { |
+ return Representation::Integer32(); |
+ } |
+ } |
+ |
+ HValue* external_pointer() const { return operands_[0]; } |
+ HValue* key() const { return operands_[1]; } |
+ HValue* value() const { return operands_[2]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(StorePixelArrayElement, |
+ "store_pixel_array_element") |
+ |
+ protected: |
+ virtual void InternalSetOperandAt(int index, HValue* value) { |
+ operands_[index] = value; |
+ } |
+ |
+ HOperandVector<3> operands_; |
+}; |
+ |
+ |
class HStoreKeyedGeneric: public HStoreKeyed { |
public: |
HStoreKeyedGeneric(HValue* context, |