зеркало из https://github.com/mozilla/gecko-dev.git
Bug 855807 - Register 'inliner' and not 'inlinee' as the aborted script r=shu
This commit is contained in:
Родитель
33c2d01791
Коммит
04c8f281f9
|
@ -5849,7 +5849,14 @@ CodeGenerator::visitFunctionBoundary(LFunctionBoundary *lir)
|
||||||
bool
|
bool
|
||||||
CodeGenerator::visitOutOfLineParallelAbort(OutOfLineParallelAbort *ool)
|
CodeGenerator::visitOutOfLineParallelAbort(OutOfLineParallelAbort *ool)
|
||||||
{
|
{
|
||||||
masm.movePtr(ImmWord((void *) current->mir()->info().script()), CallTempReg0);
|
// Subtle: Do not pass the script associated with `current`, which
|
||||||
|
// is often an inlined script or something like that, but rather the
|
||||||
|
// "outermost" JSScript.
|
||||||
|
|
||||||
|
MIRGraph &graph = current->mir()->graph();
|
||||||
|
MBasicBlock *entryBlock = graph.entryBlock();
|
||||||
|
|
||||||
|
masm.movePtr(ImmWord((void *) entryBlock->info().script()), CallTempReg0);
|
||||||
masm.setupUnalignedABICall(1, CallTempReg1);
|
masm.setupUnalignedABICall(1, CallTempReg1);
|
||||||
masm.passABIArg(CallTempReg0);
|
masm.passABIArg(CallTempReg0);
|
||||||
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, ParallelAbort));
|
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, ParallelAbort));
|
||||||
|
|
|
@ -207,7 +207,12 @@ ion::ParallelAbort(JSScript *script)
|
||||||
|
|
||||||
ForkJoinSlice *slice = ForkJoinSlice::Current();
|
ForkJoinSlice *slice = ForkJoinSlice::Current();
|
||||||
|
|
||||||
Spew(SpewBailouts, "Parallel abort in %p:%s:%d", script, script->filename(), script->lineno);
|
Spew(SpewBailouts, "Parallel abort in %p:%s:%d (hasParallelIonScript:%d)",
|
||||||
|
script, script->filename(), script->lineno,
|
||||||
|
script->hasParallelIonScript());
|
||||||
|
|
||||||
|
// Otherwise what the heck are we executing?
|
||||||
|
JS_ASSERT(script->hasParallelIonScript());
|
||||||
|
|
||||||
if (!slice->abortedScript)
|
if (!slice->abortedScript)
|
||||||
slice->abortedScript = script;
|
slice->abortedScript = script;
|
||||||
|
|
|
@ -614,6 +614,8 @@ class ParallelDo : public ForkJoinOp
|
||||||
JS_ASSERT(ok == !slice.abortedScript);
|
JS_ASSERT(ok == !slice.abortedScript);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
JSScript *script = slice.abortedScript;
|
JSScript *script = slice.abortedScript;
|
||||||
|
Spew(SpewBailouts, "Aborted script: %p (hasParallelIonScript? %d)",
|
||||||
|
script, script->hasParallelIonScript());
|
||||||
JS_ASSERT(script->hasParallelIonScript());
|
JS_ASSERT(script->hasParallelIonScript());
|
||||||
pendingInvalidations[slice.sliceId] = script;
|
pendingInvalidations[slice.sliceId] = script;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче