Commit 26d46956 authored by Brian Hackett's avatar Brian Hackett
Browse files

Watch for script JIT handle invalidation after MakeJITScript, bug 759719. r=dvander

parent 141da7cd
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -944,15 +944,20 @@ mjit::CanMethodJIT(JSContext *cx, JSScript *script, jsbytecode *pc,
        jit = MakeJITScript(cx, script);
        if (!jit)
            return Compile_Error;

        // Script analysis can trigger GC, watch in case needsBarrier() changed.
        if (gcNumber != cx->runtime->gcNumber) {
            FreeOp *fop = cx->runtime->defaultFreeOp();
            jit->destroy(fop);
            fop->free_(jit);
            goto restart;
        }

        jith->setValid(jit);
    } else {
        jit = jith->getValid();
    }

    // Script analysis can trigger GC, watch in case needsBarrier() changed.
    if (gcNumber != cx->runtime->gcNumber)
        goto restart;

    unsigned chunkIndex = jit->chunkIndex(pc);
    ChunkDescriptor &desc = jit->chunkDescriptor(chunkIndex);