From 3a1c6a960cf0583b3e2f1cc43cbb5828593c46b5 Mon Sep 17 00:00:00 2001 From: Brendan Eich Date: Tue, 19 May 2009 12:57:32 -0700 Subject: [PATCH] Bug 492904 - TM: Crash [@ TraceRecorder::test_property_cache] (r=gal). --- js/src/jstracer.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/js/src/jstracer.cpp b/js/src/jstracer.cpp index 17fe7c63df0..fd141303676 100644 --- a/js/src/jstracer.cpp +++ b/js/src/jstracer.cpp @@ -6671,14 +6671,15 @@ TraceRecorder::unbox_jsval(jsval v, LIns*& v_ins, VMSideExit* exit) JS_REQUIRES_STACK JSRecordingStatus TraceRecorder::getThis(LIns*& this_ins) { + JSObject* thisObj = js_ComputeThisForFrame(cx, cx->fp); + if (!thisObj) + ABORT_TRACE_ERROR("js_ComputeThisForName failed"); + /* * In global code, bake in the global object as 'this' object. */ if (!cx->fp->callee) { JS_ASSERT(callDepth == 0); - JSObject* thisObj = js_ComputeThisForFrame(cx, cx->fp); - if (!thisObj) - ABORT_TRACE_ERROR("error in js_ComputeThisForFrame"); this_ins = INS_CONSTPTR(thisObj); /* @@ -6697,9 +6698,6 @@ TraceRecorder::getThis(LIns*& this_ins) * updates the interpreter's copy of argv[-1]. */ if (JSVAL_IS_NULL(thisv)) { - JSObject* thisObj = js_ComputeThisForFrame(cx, cx->fp); - if (!thisObj) - ABORT_TRACE_ERROR("js_ComputeThisForName failed"); JS_ASSERT(!JSVAL_IS_PRIMITIVE(thisv)); if (thisObj != globalObj) ABORT_TRACE("global object was wrapped while recording");