| Index: src/ia32/lithium-ia32.cc
|
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
|
| index 1b9aeb58c8cd108f2374a4b6346a35f4db3c4b82..9951d2540bb1cab9136db7c2acf028cc04584473 100644
|
| --- a/src/ia32/lithium-ia32.cc
|
| +++ b/src/ia32/lithium-ia32.cc
|
| @@ -429,6 +429,15 @@ void LStoreKeyedFastElement::PrintDataTo(StringStream* stream) {
|
| }
|
|
|
|
|
| +void LStoreKeyedFastDoubleElement::PrintDataTo(StringStream* stream) {
|
| + elements()->PrintTo(stream);
|
| + stream->Add("[");
|
| + key()->PrintTo(stream);
|
| + stream->Add("] <- ");
|
| + value()->PrintTo(stream);
|
| +}
|
| +
|
| +
|
| void LStoreKeyedGeneric::PrintDataTo(StringStream* stream) {
|
| object()->PrintTo(stream);
|
| stream->Add("[");
|
| @@ -1878,6 +1887,18 @@ LInstruction* LChunkBuilder::DoLoadKeyedFastElement(
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoLoadKeyedFastDoubleElement(
|
| + HLoadKeyedFastDoubleElement* instr) {
|
| + ASSERT(instr->representation().IsDouble());
|
| + ASSERT(instr->key()->representation().IsInteger32());
|
| + LOperand* elements = UseRegisterAtStart(instr->elements());
|
| + LOperand* key = UseRegisterOrConstantAtStart(instr->key());
|
| + LLoadKeyedFastDoubleElement* result =
|
| + new LLoadKeyedFastDoubleElement(elements, key);
|
| + return AssignEnvironment(DefineAsRegister(result));
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoLoadKeyedSpecializedArrayElement(
|
| HLoadKeyedSpecializedArrayElement* instr) {
|
| JSObject::ElementsKind elements_kind = instr->elements_kind();
|
| @@ -1933,6 +1954,20 @@ LInstruction* LChunkBuilder::DoStoreKeyedFastElement(
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoStoreKeyedFastDoubleElement(
|
| + HStoreKeyedFastDoubleElement* instr) {
|
| + ASSERT(instr->value()->representation().IsDouble());
|
| + ASSERT(instr->elements()->representation().IsTagged());
|
| + ASSERT(instr->key()->representation().IsInteger32());
|
| +
|
| + LOperand* elements = UseRegisterAtStart(instr->elements());
|
| + LOperand* val = UseTempRegister(instr->value());
|
| + LOperand* key = UseRegisterOrConstantAtStart(instr->key());
|
| +
|
| + return new LStoreKeyedFastDoubleElement(elements, key, val);
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoStoreKeyedSpecializedArrayElement(
|
| HStoreKeyedSpecializedArrayElement* instr) {
|
| Representation representation(instr->value()->representation());
|
|
|