This commit is contained in:
Luke Wagner 2010-06-24 22:09:56 -07:00
commit b6ba48936a
2 changed files with 7 additions and 5 deletions

View File

@ -730,8 +730,10 @@ JS_REQUIRES_STACK LIns*
TraceRecorder::slurpDoubleSlot(LIns* addr_ins, ptrdiff_t offset, Value* vp, VMSideExit* exit)
{
LIns *mask_ins = lir->insLoad(LIR_ldi, addr_ins, offset + sTagOffset, ACC_OTHER);
guard(true, lir->ins2(LIR_ltui, mask_ins, INS_CONSTU(JSVAL_TAG_CLEAR)), exit);
return lir->insLoad(LIR_ldd, addr_ins, offset + sPayloadOffset, ACC_OTHER);
guard(true, lir->ins2(LIR_leui, mask_ins, INS_CONSTU(JSVAL_TAG_INT32)), exit);
LIns *val_ins = lir->insLoad(LIR_ldi, addr_ins, offset + sPayloadOffset, ACC_OTHER);
LIns* args[] = { val_ins, mask_ins };
return lir->insCall(&js_UnboxDouble_ci, args);
}
JS_REQUIRES_STACK LIns*

View File

@ -63,14 +63,14 @@ function test()
var recursionDepth = 0;
function err() {
if (++recursionDepth == 128)
if (++recursionDepth == 64)
return new Error();
return err.apply(this, arguments);
}
// The full stack trace in error would include 128*2 copies of s exceeding
// The full stack trace in error would include 64*4 copies of s exceeding
// 2^23 * 256 or 2^31 in length
var error = err(s,s);
var error = err(s,s,s,s);
print(error.stack.length);