diff options
Diffstat (limited to 'deps/v8/src/arm/lithium-arm.cc')
-rw-r--r-- | deps/v8/src/arm/lithium-arm.cc | 38 |
1 files changed, 10 insertions, 28 deletions
diff --git a/deps/v8/src/arm/lithium-arm.cc b/deps/v8/src/arm/lithium-arm.cc index 3fe46ffd7b..e1bb69eacd 100644 --- a/deps/v8/src/arm/lithium-arm.cc +++ b/deps/v8/src/arm/lithium-arm.cc @@ -217,15 +217,6 @@ void LCmpIDAndBranch::PrintDataTo(StringStream* stream) { } -void LIsNilAndBranch::PrintDataTo(StringStream* stream) { - stream->Add("if "); - value()->PrintTo(stream); - stream->Add(kind() == kStrictEquality ? " === " : " == "); - stream->Add(nil() == kNullValue ? "null" : "undefined"); - stream->Add(" then B%d else B%d", true_block_id(), false_block_id()); -} - - void LIsObjectAndBranch::PrintDataTo(StringStream* stream) { stream->Add("if is_object("); value()->PrintTo(stream); @@ -989,6 +980,10 @@ LInstruction* LChunkBuilder::DoBranch(HBranch* instr) { } +LInstruction* LChunkBuilder::DoDebugBreak(HDebugBreak* instr) { + return new(zone()) LDebugBreak(); +} + LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { ASSERT(instr->value()->representation().IsTagged()); @@ -1459,7 +1454,8 @@ LInstruction* LChunkBuilder::DoMod(HMod* instr) { } if (instr->CheckFlag(HValue::kBailoutOnMinusZero) || - instr->CheckFlag(HValue::kCanBeDivByZero)) { + instr->CheckFlag(HValue::kCanBeDivByZero) || + instr->CheckFlag(HValue::kCanOverflow)) { return AssignEnvironment(DefineAsRegister(mod)); } else { return DefineAsRegister(mod); @@ -1718,12 +1714,6 @@ LInstruction* LChunkBuilder::DoCompareConstantEqAndBranch( } -LInstruction* LChunkBuilder::DoIsNilAndBranch(HIsNilAndBranch* instr) { - ASSERT(instr->value()->representation().IsTagged()); - return new(zone()) LIsNilAndBranch(UseRegisterAtStart(instr->value())); -} - - LInstruction* LChunkBuilder::DoIsObjectAndBranch(HIsObjectAndBranch* instr) { ASSERT(instr->value()->representation().IsTagged()); LOperand* value = UseRegisterAtStart(instr->value()); @@ -1836,7 +1826,7 @@ LInstruction* LChunkBuilder::DoDateField(HDateField* instr) { LInstruction* LChunkBuilder::DoSeqStringSetChar(HSeqStringSetChar* instr) { LOperand* string = UseRegister(instr->string()); LOperand* index = UseRegister(instr->index()); - LOperand* value = UseRegister(instr->value()); + LOperand* value = UseTempRegister(instr->value()); LSeqStringSetChar* result = new(zone()) LSeqStringSetChar(instr->encoding(), string, index, value); return DefineAsRegister(result); @@ -2333,7 +2323,9 @@ LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { LOperand* temp = needs_write_barrier_for_map ? TempRegister() : NULL; LStoreNamedField* result = new(zone()) LStoreNamedField(obj, val, temp); - if (FLAG_track_fields && instr->field_representation().IsSmi()) { + if ((FLAG_track_fields && instr->field_representation().IsSmi()) || + (FLAG_track_heap_object_fields && + instr->field_representation().IsHeapObject())) { return AssignEnvironment(result); } return result; @@ -2398,16 +2390,6 @@ LInstruction* LChunkBuilder::DoAllocate(HAllocate* instr) { } -LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { - return MarkAsCall(DefineFixed(new(zone()) LArrayLiteral, r0), instr); -} - - -LInstruction* LChunkBuilder::DoObjectLiteral(HObjectLiteral* instr) { - return MarkAsCall(DefineFixed(new(zone()) LObjectLiteral, r0), instr); -} - - LInstruction* LChunkBuilder::DoRegExpLiteral(HRegExpLiteral* instr) { return MarkAsCall(DefineFixed(new(zone()) LRegExpLiteral, r0), instr); } |