Bug 591788 - Fatal assert ( base == lirbuf->sp || base == eos_ins). r=gal.

This commit is contained in:
Nicholas Nethercote 2010-09-08 17:24:37 -07:00
parent 9943c6915d
commit 3bf0a90b65

View File

@ -3788,15 +3788,14 @@ TraceRecorder::setImpl(void* p, LIns* i, bool demote)
JS_ASSERT( x->isop(LIR_sti) || x->isop(LIR_std));
#endif
int disp;
ptrdiff_t disp;
LIns *base = x->oprnd2();
#ifdef NANOJIT_ARM
if (base->isop(LIR_addp)) {
disp = base->oprnd2()->immI();
if (base->isop(LIR_addp) && base->oprnd2()->isImmP()) {
disp = ptrdiff_t(base->oprnd2()->immP());
base = base->oprnd1();
} else
#endif
disp = x->disp();
} else {
disp = x->disp();
}
JS_ASSERT(base == lirbuf->sp || base == eos_ins);
JS_ASSERT(disp == ((base == lirbuf->sp)