Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 2c916f6ad67b847376a3656a5189f25d1cb0c18c..c56b1b4ee376d2aa9de995db9da3060864db2558 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -1336,10 +1336,10 @@ void LCodeGen::DoJSArrayLength(LJSArrayLength* instr) { |
} |
-void LCodeGen::DoPixelArrayLength(LPixelArrayLength* instr) { |
+void LCodeGen::DoExternalArrayLength(LExternalArrayLength* instr) { |
Register result = ToRegister(instr->result()); |
Register array = ToRegister(instr->InputAt(0)); |
- __ ldr(result, FieldMemOperand(array, PixelArray::kLengthOffset)); |
+ __ ldr(result, FieldMemOperand(array, ExternalArray::kLengthOffset)); |
} |
@@ -2411,7 +2411,7 @@ void LCodeGen::DoLoadElements(LLoadElements* instr) { |
__ LoadRoot(ip, Heap::kFixedArrayMapRootIndex); |
__ cmp(scratch, ip); |
__ b(eq, &done); |
- __ LoadRoot(ip, Heap::kPixelArrayMapRootIndex); |
+ __ LoadRoot(ip, Heap::kExternalPixelArrayMapRootIndex); |
__ cmp(scratch, ip); |
__ b(eq, &done); |
__ LoadRoot(ip, Heap::kFixedCOWArrayMapRootIndex); |
@@ -2422,11 +2422,12 @@ void LCodeGen::DoLoadElements(LLoadElements* instr) { |
} |
-void LCodeGen::DoLoadPixelArrayExternalPointer( |
- LLoadPixelArrayExternalPointer* instr) { |
+void LCodeGen::DoLoadExternalArrayPointer( |
+ LLoadExternalArrayPointer* instr) { |
Register to_reg = ToRegister(instr->result()); |
Register from_reg = ToRegister(instr->InputAt(0)); |
- __ ldr(to_reg, FieldMemOperand(from_reg, PixelArray::kExternalPointerOffset)); |
+ __ ldr(to_reg, FieldMemOperand(from_reg, |
+ ExternalArray::kExternalPointerOffset)); |
} |
@@ -2467,12 +2468,12 @@ void LCodeGen::DoLoadKeyedFastElement(LLoadKeyedFastElement* instr) { |
void LCodeGen::DoLoadPixelArrayElement(LLoadPixelArrayElement* instr) { |
- Register external_elements = ToRegister(instr->external_pointer()); |
+ Register external_pointer = ToRegister(instr->external_pointer()); |
Register key = ToRegister(instr->key()); |
Register result = ToRegister(instr->result()); |
// Load the result. |
- __ ldrb(result, MemOperand(external_elements, key)); |
+ __ ldrb(result, MemOperand(external_pointer, key)); |
} |
@@ -3022,6 +3023,17 @@ void LCodeGen::DoStoreKeyedFastElement(LStoreKeyedFastElement* instr) { |
} |
+void LCodeGen::DoStorePixelArrayElement(LStorePixelArrayElement* instr) { |
+ Register external_pointer = ToRegister(instr->external_pointer()); |
+ Register key = ToRegister(instr->key()); |
+ Register value = ToRegister(instr->value()); |
+ |
+ // Clamp the value to [0..255]. |
+ __ Usat(value, 8, Operand(value)); |
+ __ strb(value, MemOperand(external_pointer, key, LSL, 0)); |
+} |
+ |
+ |
void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { |
ASSERT(ToRegister(instr->object()).is(r2)); |
ASSERT(ToRegister(instr->key()).is(r1)); |