[INFER] Tolerate scripts whose JIT code has already been destroyed when recompiling, bug 646215.
authorBrian Hackett <bhackett1024@gmail.com>
Tue, 29 Mar 2011 21:20:09 -0700
changeset 75885 56deeacefaefba0649bb17a5b3b21f9af156954c
parent 75884 d1599f5fc1fcb4866b9dd41cbd76327fd6668613
child 75886 e786040097a38690b8078491a907b3c96b0eff4e
push id67
push userclegnitto@mozilla.com
push dateFri, 04 Nov 2011 22:39:41 +0000
treeherdermozilla-release@04778346a3b0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs646215
milestone2.0b13pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
[INFER] Tolerate scripts whose JIT code has already been destroyed when recompiling, bug 646215.
js/src/jsinfer.cpp
--- a/js/src/jsinfer.cpp
+++ b/js/src/jsinfer.cpp
@@ -1931,17 +1931,17 @@ TypeCompartment::processPendingRecompile
 
 #ifdef JS_METHODJIT
 
     mjit::ExpandInlineFrames(cx, true);
 
     for (unsigned i = 0; i < pending->length(); i++) {
         JSScript *script = (*pending)[i];
         mjit::Recompiler recompiler(cx, script);
-        if (!recompiler.recompile()) {
+        if (script->hasJITCode() && !recompiler.recompile()) {
             pendingNukeTypes = true;
             js_delete< Vector<JSScript*> >(pending);
             return nukeTypes(cx);
         }
     }
 
 #endif /* JS_METHODJIT */