☠☠ backed out by cb0c060fb081 ☠ ☠ | |
author | Hannes Verschore <hv1989@gmail.com> |
Tue, 25 Aug 2015 22:49:07 +0200 | |
changeset 259327 | 3a5257ac933dce09eb38c8f3615aa14ce996f1ee |
parent 259326 | 793bc02002203267dfa825221fe0b6a18faf54ad |
child 259328 | c47ccde36664172dff25f8b444ffd7a6b150cee3 |
push id | 29277 |
push user | ryanvm@gmail.com |
push date | Wed, 26 Aug 2015 18:32:23 +0000 |
treeherder | mozilla-central@fea87cbeaa6b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jandem |
bugs | 1198245 |
milestone | 43.0a1 |
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
|
--- a/js/src/jit/Ion.cpp +++ b/js/src/jit/Ion.cpp @@ -464,16 +464,18 @@ PrepareForDebuggerOnIonCompilationHook(J scripts->resize(info->scriptIndex); info->numBlocks = 0; } } void jit::FinishOffThreadBuilder(JSContext* cx, IonBuilder* builder) { + MOZ_ASSERT(HelperThreadState().isLocked()); + // Clean the references to the pending IonBuilder, if we just finished it. if (builder->script()->baselineScript()->hasPendingIonBuilder() && builder->script()->baselineScript()->pendingIonBuilder() == builder) { builder->script()->baselineScript()->removePendingIonBuilder(builder->script()); } // If the builder is still in one of the helper thread list, then remove it. @@ -578,33 +580,33 @@ jit::LazyLink(JSContext* cx, HandleScrip MOZ_ASSERT(calleeScript->hasBaselineScript()); IonBuilder* builder = calleeScript->baselineScript()->pendingIonBuilder(); calleeScript->baselineScript()->removePendingIonBuilder(calleeScript); // See PrepareForDebuggerOnIonCompilationHook AutoScriptVector debugScripts(cx); OnIonCompilationInfo info(builder->alloc().lifoAlloc()); - // Remove from pending. - builder->removeFrom(HelperThreadState().ionLazyLinkList()); - { AutoEnterAnalysis enterTypes(cx); if (!LinkBackgroundCodeGen(cx, builder, &debugScripts, &info)) { // Silently ignore OOM during code generation. The assembly code // doesn't has code to handle it after linking happened. So it's // not OK to throw a catchable exception from there. cx->clearPendingException(); } } if (info.filled()) Debugger::onIonCompilation(cx, debugScripts, info.graph); - FinishOffThreadBuilder(cx, builder); + { + AutoLockHelperThreadState lock; + FinishOffThreadBuilder(cx, builder); + } MOZ_ASSERT(calleeScript->hasBaselineScript()); MOZ_ASSERT(calleeScript->baselineOrIonRawPointer()); } uint8_t* jit::LazyLinkTopActivation(JSContext* cx) {