| 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));
|
|
|