Bug 565188 - simplify sp adjustment in checkTraceEnd (r=dvander)

This commit is contained in:
Luke Wagner 2010-05-12 23:04:05 -07:00
Родитель d661c78f0e
Коммит 35e02d3b6c
2 изменённых файлов: 3 добавлений и 2 удалений

Просмотреть файл

@ -1462,6 +1462,7 @@ TreeFragment::initialize(JSContext* cx, SlotList *globalSlots)
/* Capture the coerced type of each active slot in the type map. */
this->typeMap.captureTypes(cx, globalObj, *globalSlots, 0 /* callDepth */);
this->nStackTypes = this->typeMap.length() - globalSlots->length();
this->spOffsetAtEntry = cx->fp->regs->sp - StackBase(cx->fp);
#ifdef DEBUG
this->treeFileName = cx->fp->script->filename;
@ -5211,11 +5212,10 @@ TraceRecorder::checkTraceEnd(jsbytecode *pc)
*/
if (pendingLoop) {
JS_ASSERT(!cx->fp->imacpc && (pc == cx->fp->regs->pc || pc == cx->fp->regs->pc + 1));
bool fused = pc != cx->fp->regs->pc;
JSFrameRegs orig = *cx->fp->regs;
cx->fp->regs->pc = (jsbytecode*)tree->ip;
cx->fp->regs->sp -= fused ? (*orig.pc == JSOP_MOREITER ? 0 : 2) : 1;
cx->fp->regs->sp = StackBase(cx->fp) + tree->spOffsetAtEntry;
JSContext* localcx = cx;
AbortableRecordingStatus ars = closeLoop();

Просмотреть файл

@ -672,6 +672,7 @@ struct LinkableFragment : public VMFragment
uint32 branchCount;
TypeMap typeMap;
unsigned nStackTypes;
unsigned spOffsetAtEntry;
SlotList* globalSlots;
};