From 001939737ce5d87bfa35fb944578460ca0b1e2af Mon Sep 17 00:00:00 2001 From: David Mandelin Date: Thu, 24 Jun 2010 17:14:06 -0700 Subject: [PATCH 1/2] Bug 574518: adjust test case to account for greater stack memory usage in Interpret --HG-- extra : rebase_source : d8cee395b898d809020b503b83a402de8cb88eee --- js/src/tests/js1_5/GC/regress-348532.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/src/tests/js1_5/GC/regress-348532.js b/js/src/tests/js1_5/GC/regress-348532.js index 93d398892c6..d4615fb98c9 100644 --- a/js/src/tests/js1_5/GC/regress-348532.js +++ b/js/src/tests/js1_5/GC/regress-348532.js @@ -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); From fb83e7796debb5ea2b4219fc8469e686f237155f Mon Sep 17 00:00:00 2001 From: David Mandelin Date: Thu, 24 Jun 2010 17:39:01 -0700 Subject: [PATCH 2/2] Fix jsreftest js1_5/Regress/regress-159334.js --- js/src/jsrecursion.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/src/jsrecursion.cpp b/js/src/jsrecursion.cpp index 614266c30a4..f3404e03e52 100644 --- a/js/src/jsrecursion.cpp +++ b/js/src/jsrecursion.cpp @@ -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*