Chromium Code Reviews| Index: src/arm/lithium-codegen-arm.cc |
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
| index 86be095d1581809f9ceeb050bec721ae193946c7..86ee7e98857a6f7388b9adf6ed77ec40c82fd4d9 100644 |
| --- a/src/arm/lithium-codegen-arm.cc |
| +++ b/src/arm/lithium-codegen-arm.cc |
| @@ -2611,7 +2611,7 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
| LLoadKeyedSpecializedArrayElement* instr) { |
| Register external_pointer = ToRegister(instr->external_pointer()); |
| Register key = no_reg; |
| - ExternalArrayType array_type = instr->array_type(); |
| + JSObject::ElementsKind elements_kind = instr->elements_kind(); |
| bool key_is_constant = instr->key()->IsConstantOperand(); |
| int constant_key = 0; |
| if (key_is_constant) { |
| @@ -2622,15 +2622,16 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
| } else { |
| key = ToRegister(instr->key()); |
| } |
| - int shift_size = ExternalArrayTypeToShiftSize(array_type); |
| + int shift_size = ElementsKindToShiftSize(elements_kind); |
| - if (array_type == kExternalFloatArray || array_type == kExternalDoubleArray) { |
| + if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS || |
| + elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { |
| CpuFeatures::Scope scope(VFP3); |
| DwVfpRegister result(ToDoubleRegister(instr->result())); |
| Operand operand(key_is_constant ? Operand(constant_key * (1 << shift_size)) |
| : Operand(key, LSL, shift_size)); |
| __ add(scratch0(), external_pointer, operand); |
| - if (array_type == kExternalFloatArray) { |
| + if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { |
| __ vldr(result.low(), scratch0(), 0); |
| __ vcvt_f64_f32(result, result.low()); |
| } else { // i.e. array_type == kExternalDoubleArray |
|
Jakob Kummerow
2011/06/09 14:26:40
please update this comment.
danno
2011/06/09 15:03:27
Done.
|
| @@ -2641,24 +2642,24 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
| MemOperand mem_operand(key_is_constant |
| ? MemOperand(external_pointer, constant_key * (1 << shift_size)) |
| : MemOperand(external_pointer, key, LSL, shift_size)); |
| - switch (array_type) { |
| - case kExternalByteArray: |
| + switch (elements_kind) { |
| + case JSObject::EXTERNAL_BYTE_ELEMENTS: |
| __ ldrsb(result, mem_operand); |
| break; |
| - case kExternalUnsignedByteArray: |
| - case kExternalPixelArray: |
| + case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
| + case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
| __ ldrb(result, mem_operand); |
| break; |
| - case kExternalShortArray: |
| + case JSObject::EXTERNAL_SHORT_ELEMENTS: |
| __ ldrsh(result, mem_operand); |
| break; |
| - case kExternalUnsignedShortArray: |
| + case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
| __ ldrh(result, mem_operand); |
| break; |
| - case kExternalIntArray: |
| + case JSObject::EXTERNAL_INT_ELEMENTS: |
| __ ldr(result, mem_operand); |
| break; |
| - case kExternalUnsignedIntArray: |
| + case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: |
| __ ldr(result, mem_operand); |
| __ cmp(result, Operand(0x80000000)); |
| // TODO(danno): we could be more clever here, perhaps having a special |
| @@ -2666,8 +2667,11 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement( |
| // happens, and generate code that returns a double rather than int. |
| DeoptimizeIf(cs, instr->environment()); |
| break; |
| - case kExternalFloatArray: |
| - case kExternalDoubleArray: |
| + case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
| + case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
| + case JSObject::FAST_DOUBLE_ELEMENTS: |
| + case JSObject::FAST_ELEMENTS: |
| + case JSObject::DICTIONARY_ELEMENTS: |
| UNREACHABLE(); |
| break; |
| } |
| @@ -3423,7 +3427,7 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement( |
| Register external_pointer = ToRegister(instr->external_pointer()); |
| Register key = no_reg; |
| - ExternalArrayType array_type = instr->array_type(); |
| + JSObject::ElementsKind elements_kind = instr->elements_kind(); |
| bool key_is_constant = instr->key()->IsConstantOperand(); |
| int constant_key = 0; |
| if (key_is_constant) { |
| @@ -3434,15 +3438,16 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement( |
| } else { |
| key = ToRegister(instr->key()); |
| } |
| - int shift_size = ExternalArrayTypeToShiftSize(array_type); |
| + int shift_size = ElementsKindToShiftSize(elements_kind); |
| - if (array_type == kExternalFloatArray || array_type == kExternalDoubleArray) { |
| + if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS || |
| + elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { |
| CpuFeatures::Scope scope(VFP3); |
| DwVfpRegister value(ToDoubleRegister(instr->value())); |
| Operand operand(key_is_constant ? Operand(constant_key * (1 << shift_size)) |
| : Operand(key, LSL, shift_size)); |
| __ add(scratch0(), external_pointer, operand); |
| - if (array_type == kExternalFloatArray) { |
| + if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { |
| __ vcvt_f32_f64(double_scratch0().low(), value); |
| __ vstr(double_scratch0().low(), scratch0(), 0); |
| } else { // i.e. array_type == kExternalDoubleArray |
|
Jakob Kummerow
2011/06/09 14:26:40
please update this comment.
danno
2011/06/09 15:03:27
Done.
|
| @@ -3453,22 +3458,25 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement( |
| MemOperand mem_operand(key_is_constant |
| ? MemOperand(external_pointer, constant_key * (1 << shift_size)) |
| : MemOperand(external_pointer, key, LSL, shift_size)); |
| - switch (array_type) { |
| - case kExternalPixelArray: |
| - case kExternalByteArray: |
| - case kExternalUnsignedByteArray: |
| + switch (elements_kind) { |
| + case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
| + case JSObject::EXTERNAL_BYTE_ELEMENTS: |
| + case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
| __ strb(value, mem_operand); |
| break; |
| - case kExternalShortArray: |
| - case kExternalUnsignedShortArray: |
| + case JSObject::EXTERNAL_SHORT_ELEMENTS: |
| + case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
| __ strh(value, mem_operand); |
| break; |
| - case kExternalIntArray: |
| - case kExternalUnsignedIntArray: |
| + case JSObject::EXTERNAL_INT_ELEMENTS: |
| + case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: |
| __ str(value, mem_operand); |
| break; |
| - case kExternalFloatArray: |
| - case kExternalDoubleArray: |
| + case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
| + case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
| + case JSObject::FAST_DOUBLE_ELEMENTS: |
| + case JSObject::FAST_ELEMENTS: |
| + case JSObject::DICTIONARY_ELEMENTS: |
| UNREACHABLE(); |
| break; |
| } |