зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1083866 - No longer suppress GC for the evaluation of recover instructions. r=jandem
This commit is contained in:
Родитель
1fbcbe24d7
Коммит
39b8ea1136
|
@ -35,7 +35,6 @@ jit::Bailout(BailoutStack *sp, BaselineBailoutInfo **bailoutInfo)
|
||||||
IsInRange(FAKE_JIT_TOP_FOR_BAILOUT + sizeof(IonCommonFrameLayout), 0, 0x1000),
|
IsInRange(FAKE_JIT_TOP_FOR_BAILOUT + sizeof(IonCommonFrameLayout), 0, 0x1000),
|
||||||
"Fake jitTop pointer should be within the first page.");
|
"Fake jitTop pointer should be within the first page.");
|
||||||
cx->mainThread().jitTop = FAKE_JIT_TOP_FOR_BAILOUT;
|
cx->mainThread().jitTop = FAKE_JIT_TOP_FOR_BAILOUT;
|
||||||
gc::AutoSuppressGC suppress(cx);
|
|
||||||
|
|
||||||
JitActivationIterator jitActivations(cx->runtime());
|
JitActivationIterator jitActivations(cx->runtime());
|
||||||
BailoutFrameInfo bailoutData(jitActivations, sp);
|
BailoutFrameInfo bailoutData(jitActivations, sp);
|
||||||
|
@ -103,7 +102,6 @@ jit::InvalidationBailout(InvalidationBailoutStack *sp, size_t *frameSizeOut,
|
||||||
|
|
||||||
// We don't have an exit frame.
|
// We don't have an exit frame.
|
||||||
cx->mainThread().jitTop = FAKE_JIT_TOP_FOR_BAILOUT;
|
cx->mainThread().jitTop = FAKE_JIT_TOP_FOR_BAILOUT;
|
||||||
gc::AutoSuppressGC suppress(cx);
|
|
||||||
|
|
||||||
JitActivationIterator jitActivations(cx->runtime());
|
JitActivationIterator jitActivations(cx->runtime());
|
||||||
BailoutFrameInfo bailoutData(jitActivations, sp);
|
BailoutFrameInfo bailoutData(jitActivations, sp);
|
||||||
|
|
|
@ -525,6 +525,10 @@ InitFromBailout(JSContext *cx, HandleScript caller, jsbytecode *callerPC,
|
||||||
jsbytecode **callPC, const ExceptionBailoutInfo *excInfo,
|
jsbytecode **callPC, const ExceptionBailoutInfo *excInfo,
|
||||||
bool *poppedLastSPSFrameOut)
|
bool *poppedLastSPSFrameOut)
|
||||||
{
|
{
|
||||||
|
// The Baseline frames we will reconstruct on the heap are not rooted, so GC
|
||||||
|
// must be suppressed here.
|
||||||
|
MOZ_ASSERT(cx->mainThread().suppressGC);
|
||||||
|
|
||||||
MOZ_ASSERT(script->hasBaselineScript());
|
MOZ_ASSERT(script->hasBaselineScript());
|
||||||
MOZ_ASSERT(poppedLastSPSFrameOut);
|
MOZ_ASSERT(poppedLastSPSFrameOut);
|
||||||
MOZ_ASSERT(!*poppedLastSPSFrameOut);
|
MOZ_ASSERT(!*poppedLastSPSFrameOut);
|
||||||
|
@ -1308,10 +1312,6 @@ jit::BailoutIonToBaseline(JSContext *cx, JitActivation *activation, JitFrameIter
|
||||||
bool invalidate, BaselineBailoutInfo **bailoutInfo,
|
bool invalidate, BaselineBailoutInfo **bailoutInfo,
|
||||||
const ExceptionBailoutInfo *excInfo, bool *poppedLastSPSFrameOut)
|
const ExceptionBailoutInfo *excInfo, bool *poppedLastSPSFrameOut)
|
||||||
{
|
{
|
||||||
// The Baseline frames we will reconstruct on the heap are not rooted, so GC
|
|
||||||
// must be suppressed here.
|
|
||||||
MOZ_ASSERT(cx->mainThread().suppressGC);
|
|
||||||
|
|
||||||
MOZ_ASSERT(bailoutInfo != nullptr);
|
MOZ_ASSERT(bailoutInfo != nullptr);
|
||||||
MOZ_ASSERT(*bailoutInfo == nullptr);
|
MOZ_ASSERT(*bailoutInfo == nullptr);
|
||||||
|
|
||||||
|
@ -1424,6 +1424,8 @@ jit::BailoutIonToBaseline(JSContext *cx, JitActivation *activation, JitFrameIter
|
||||||
RootedScript topCaller(cx);
|
RootedScript topCaller(cx);
|
||||||
jsbytecode *topCallerPC = nullptr;
|
jsbytecode *topCallerPC = nullptr;
|
||||||
|
|
||||||
|
gc::AutoSuppressGC suppress(cx);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
// Skip recover instructions as they are already recovered by |initInstructionResults|.
|
// Skip recover instructions as they are already recovered by |initInstructionResults|.
|
||||||
snapIter.settleOnFrame();
|
snapIter.settleOnFrame();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче