Ensure that cx->interpState is always accurate by maintaing a stack (490776, r=jorendorff).

This commit is contained in:
Andreas Gal 2009-05-11 17:25:38 -07:00
Родитель 64837a579e
Коммит a8fc287e9d
2 изменённых файлов: 3 добавлений и 3 удалений

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

@ -4312,6 +4312,7 @@ js_ExecuteTree(JSContext* cx, Fragment* f, uintN& inlineCallCount,
JS_ASSERT(!tm->tracecx);
tm->tracecx = cx;
state->prev = cx->interpState;
cx->interpState = state;
debug_only(fflush(NULL);)
@ -4325,9 +4326,7 @@ js_ExecuteTree(JSContext* cx, Fragment* f, uintN& inlineCallCount,
AUDIT(traceTriggered);
#ifdef DEBUG
cx->interpState = NULL;
#endif
cx->interpState = state->prev;
JS_ASSERT(lr->exitType != LOOP_EXIT || !lr->calldepth);
tm->tracecx = NULL;

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

@ -385,6 +385,7 @@ struct InterpState
#ifdef EXECUTE_TREE_TIMER
uint64 startTime;
#endif
InterpState* prev;
/*
* Used by _FAIL builtins; see jsbuiltins.h. The builtin sets the