| Index: src/ia32/lithium-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.cc (revision 9006)
|
| +++ src/ia32/lithium-ia32.cc (working copy)
|
| @@ -1047,10 +1047,7 @@
|
| // involving maps).
|
| bool needs_temp = expected.NeedsMap() || expected.IsEmpty();
|
| LOperand* temp = needs_temp ? TempRegister() : NULL;
|
| - LInstruction* branch = new LBranch(UseRegister(v), temp);
|
| - // When we handle all cases, we never deopt, so we don't need to assign the
|
| - // environment then.
|
| - return expected.IsAll() ? branch : AssignEnvironment(branch);
|
| + return AssignEnvironment(new LBranch(UseRegister(v), temp));
|
| }
|
|
|
|
|
| @@ -1541,19 +1538,13 @@
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoFixedArrayLength(HFixedArrayLength* instr) {
|
| +LInstruction* LChunkBuilder::DoFixedArrayBaseLength(
|
| + HFixedArrayBaseLength* instr) {
|
| LOperand* array = UseRegisterAtStart(instr->value());
|
| - return DefineAsRegister(new LFixedArrayLength(array));
|
| + return DefineAsRegister(new LFixedArrayBaseLength(array));
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoExternalArrayLength(
|
| - HExternalArrayLength* instr) {
|
| - LOperand* array = UseRegisterAtStart(instr->value());
|
| - return DefineAsRegister(new LExternalArrayLength(array));
|
| -}
|
| -
|
| -
|
| LInstruction* LChunkBuilder::DoElementsKind(HElementsKind* instr) {
|
| LOperand* object = UseRegisterAtStart(instr->value());
|
| return DefineAsRegister(new LElementsKind(object));
|
| @@ -1568,8 +1559,9 @@
|
|
|
|
|
| LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) {
|
| - return AssignEnvironment(new LBoundsCheck(UseRegisterAtStart(instr->index()),
|
| - UseAtStart(instr->length())));
|
| + return AssignEnvironment(new LBoundsCheck(
|
| + UseRegisterOrConstantAtStart(instr->index()),
|
| + UseAtStart(instr->length())));
|
| }
|
|
|
|
|
| @@ -1890,9 +1882,9 @@
|
| ASSERT(instr->representation().IsTagged());
|
| ASSERT(instr->key()->representation().IsInteger32());
|
| LOperand* obj = UseRegisterAtStart(instr->object());
|
| - LOperand* key = UseRegisterAtStart(instr->key());
|
| + LOperand* key = UseRegisterOrConstantAtStart(instr->key());
|
| LLoadKeyedFastElement* result = new LLoadKeyedFastElement(obj, key);
|
| - return AssignEnvironment(DefineSameAsFirst(result));
|
| + return AssignEnvironment(DefineAsRegister(result));
|
| }
|
|
|
|
|
|
|