Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 0ad3819292b047037b2e43e64265babaf4b38d2d..e39b67112f6cb26af0edee0a8173ce32bfc83d82 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -1833,6 +1833,23 @@ LInstruction* LChunkBuilder::DoStoreKeyedFastElement( |
} |
+LInstruction* LChunkBuilder::DoStorePixelArrayElement( |
+ HStorePixelArrayElement* instr) { |
+ ASSERT(instr->value()->representation().IsInteger32()); |
+ ASSERT(instr->external_pointer()->representation().IsExternal()); |
+ ASSERT(instr->key()->representation().IsInteger32()); |
+ |
+ LOperand* external_pointer = UseRegister(instr->external_pointer()); |
+ LOperand* val = UseRegister(instr->value()); |
+ LOperand* key = UseRegister(instr->key()); |
+ // The generated code requires that the clamped value is in a byte |
+ // register. eax is an arbitrary choice to satisfy this requirement. |
+ LOperand* clamped = FixedTemp(eax); |
+ |
+ return new LStorePixelArrayElement(external_pointer, key, val, clamped); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* object = UseFixed(instr->object(), edx); |