Index: src/crankshaft/x87/lithium-x87.cc |
diff --git a/src/crankshaft/x87/lithium-x87.cc b/src/crankshaft/x87/lithium-x87.cc |
index 3b3794432421ecae6e53588c6981eb7ab56c9481..f770509076cc137a83b62bf6b9b9839df3d74642 100644 |
--- a/src/crankshaft/x87/lithium-x87.cc |
+++ b/src/crankshaft/x87/lithium-x87.cc |
@@ -355,11 +355,11 @@ void LAccessArgumentsAt::PrintDataTo(StringStream* stream) { |
int LPlatformChunk::GetNextSpillIndex(RegisterKind kind) { |
// Skip a slot if for a double-width slot. |
if (kind == DOUBLE_REGISTERS) { |
- spill_slot_count_++; |
- spill_slot_count_ |= 1; |
+ current_frame_slots_++; |
+ current_frame_slots_ |= 1; |
num_double_slots_++; |
} |
- return spill_slot_count_++; |
+ return current_frame_slots_++; |
} |
@@ -448,7 +448,7 @@ LPlatformChunk* LChunkBuilder::Build() { |
// Reserve the first spill slot for the state of dynamic alignment. |
if (info()->IsOptimizing()) { |
int alignment_state_index = chunk_->GetNextSpillIndex(GENERAL_REGISTERS); |
- DCHECK_EQ(alignment_state_index, 0); |
+ DCHECK_EQ(alignment_state_index, 4); |
USE(alignment_state_index); |
} |
@@ -2517,6 +2517,7 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) { |
// The first local is saved at the end of the unoptimized frame. |
spill_index = graph()->osr()->UnoptimizedFrameSlots(); |
} |
+ spill_index += StandardFrameConstants::kFixedSlotCount; |
} |
return DefineAsSpilled(new(zone()) LUnknownOSRValue, spill_index); |
} |