| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index 46c71e8b1753bdf65d5d385c2bb24770024443eb..423cb69c756ab970e9d1bebe4b1aba06875f4fb3 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -2338,6 +2338,9 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement(
|
| XMMRegister result(ToDoubleRegister(instr->result()));
|
| __ movss(result, Operand(external_pointer, key, times_4, 0));
|
| __ cvtss2sd(result, result);
|
| + } else if (array_type == kExternalDoubleArray) {
|
| + __ movdbl(ToDoubleRegister(instr->result()),
|
| + Operand(external_pointer, key, times_8, 0));
|
| } else {
|
| Register result(ToRegister(instr->result()));
|
| switch (array_type) {
|
| @@ -2366,6 +2369,7 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement(
|
| DeoptimizeIf(negative, instr->environment());
|
| break;
|
| case kExternalFloatArray:
|
| + case kExternalDoubleArray:
|
| UNREACHABLE();
|
| break;
|
| }
|
| @@ -3047,6 +3051,9 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement(
|
| if (array_type == kExternalFloatArray) {
|
| __ cvtsd2ss(xmm0, ToDoubleRegister(instr->value()));
|
| __ movss(Operand(external_pointer, key, times_4, 0), xmm0);
|
| + } else if (array_type == kExternalDoubleArray) {
|
| + __ movdbl(Operand(external_pointer, key, times_8, 0),
|
| + ToDoubleRegister(instr->value()));
|
| } else {
|
| Register value = ToRegister(instr->value());
|
| switch (array_type) {
|
| @@ -3081,6 +3088,7 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement(
|
| __ mov(Operand(external_pointer, key, times_4, 0), value);
|
| break;
|
| case kExternalFloatArray:
|
| + case kExternalDoubleArray:
|
| UNREACHABLE();
|
| break;
|
| }
|
|
|