| Index: src/x64/lithium-codegen-x64.cc
|
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
|
| index c242874c52b61b31e2c6cc20d686dbcb27911f01..688a557ee8710819abb682b569a939f45819b4cc 100644
|
| --- a/src/x64/lithium-codegen-x64.cc
|
| +++ b/src/x64/lithium-codegen-x64.cc
|
| @@ -2350,6 +2350,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) {
|
| + __ movsd(ToDoubleRegister(instr->result()),
|
| + Operand(external_pointer, key, times_8, 0));
|
| } else {
|
| Register result(ToRegister(instr->result()));
|
| switch (array_type) {
|
| @@ -2378,6 +2381,7 @@ void LCodeGen::DoLoadKeyedSpecializedArrayElement(
|
| DeoptimizeIf(negative, instr->environment());
|
| break;
|
| case kExternalFloatArray:
|
| + case kExternalDoubleArray:
|
| UNREACHABLE();
|
| break;
|
| }
|
| @@ -3037,6 +3041,9 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement(
|
| XMMRegister value(ToDoubleRegister(instr->value()));
|
| __ cvtsd2ss(value, value);
|
| __ movss(Operand(external_pointer, key, times_4, 0), value);
|
| + } else if (array_type == kExternalDoubleArray) {
|
| + __ movsd(Operand(external_pointer, key, times_8, 0),
|
| + ToDoubleRegister(instr->value()));
|
| } else {
|
| Register value(ToRegister(instr->value()));
|
| switch (array_type) {
|
| @@ -3064,6 +3071,7 @@ void LCodeGen::DoStoreKeyedSpecializedArrayElement(
|
| __ movl(Operand(external_pointer, key, times_4, 0), value);
|
| break;
|
| case kExternalFloatArray:
|
| + case kExternalDoubleArray:
|
| UNREACHABLE();
|
| break;
|
| }
|
|
|