Bug 865883. (r=jandem)

This commit is contained in:
Shu-yu Guo 2013-05-02 14:12:15 -07:00
parent 578e49b54e
commit 692d106e7a
2 changed files with 9 additions and 2 deletions

View File

@ -735,8 +735,12 @@ LinearScanAllocator::allocateSlotFor(const LiveInterval *interval)
LinearScanVirtualRegister *reg = &vregs[interval->vreg()];
SlotList *freed;
if (reg->type() == LDefinition::DOUBLE || IsNunbox(reg))
if (reg->type() == LDefinition::DOUBLE)
freed = &finishedDoubleSlots_;
#ifdef JS_NUNBOX32
else if (IsNunbox(reg))
freed = &finishedNunboxSlots_;
#endif
else
freed = &finishedSlots_;
@ -841,7 +845,7 @@ LinearScanAllocator::freeAllocation(LiveInterval *interval, LAllocation *alloc)
if (!candidate->canonicalSpill()->isStackSlot())
return;
finishedDoubleSlots_.append(candidate->lastInterval());
finishedNunboxSlots_.append(candidate->lastInterval());
}
#endif
}

View File

@ -80,6 +80,9 @@ class LinearScanAllocator : public LiveRangeAllocator<LinearScanVirtualRegister>
typedef Vector<LiveInterval *, 0, SystemAllocPolicy> SlotList;
SlotList finishedSlots_;
SlotList finishedDoubleSlots_;
#ifdef JS_NUNBOX32
SlotList finishedNunboxSlots_;
#endif
// Run-time state
UnhandledQueue unhandled;