mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1502051 - Cleanup BaselineScript entry point names. r=jandem
These are very specialized entry points so instead name them after their use cases to make code easier to read and keep in sync. Differential Revision: https://phabricator.services.mozilla.com/D9789 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
242f3d9eb2
commit
16e90b4729
@ -1260,7 +1260,7 @@ InitFromBailout(JSContext* cx, size_t frameNo,
|
||||
// resume into the prologue for function scripts.
|
||||
MOZ_ASSERT(fun);
|
||||
MOZ_ASSERT(numUnsynced == 0);
|
||||
opReturnAddr = baselineScript->prologueEntryAddr();
|
||||
opReturnAddr = baselineScript->bailoutPrologueEntryAddr();
|
||||
JitSpew(JitSpew_BaselineBailouts, " Resuming into prologue.");
|
||||
|
||||
// Undo the progress for any loop entry we thought we were skipping
|
||||
|
@ -239,11 +239,11 @@ BaselineCompiler::compile()
|
||||
// Note: There is an extra entry in the bytecode type map for the search hint, see below.
|
||||
size_t bytecodeTypeMapEntries = script->nTypeSets() + 1;
|
||||
UniquePtr<BaselineScript> baselineScript(
|
||||
BaselineScript::New(script, prologueOffset_.offset(),
|
||||
epilogueOffset_.offset(),
|
||||
BaselineScript::New(script, bailoutPrologueOffset_.offset(),
|
||||
debugOsrPrologueOffset_.offset(),
|
||||
debugOsrEpilogueOffset_.offset(),
|
||||
profilerEnterFrameToggleOffset_.offset(),
|
||||
profilerExitFrameToggleOffset_.offset(),
|
||||
postDebugPrologueOffset_.offset(),
|
||||
icEntries_.length(),
|
||||
retAddrEntries_.length(),
|
||||
pcMappingIndexEntries.length(),
|
||||
@ -486,7 +486,7 @@ BaselineCompiler::emitPrologue()
|
||||
|
||||
// Record the offset of the prologue, because Ion can bailout before
|
||||
// the env chain is initialized.
|
||||
prologueOffset_ = CodeOffset(masm.currentOffset());
|
||||
bailoutPrologueOffset_ = CodeOffset(masm.currentOffset());
|
||||
|
||||
// When compiling with Debugger instrumentation, set the debuggeeness of
|
||||
// the frame before any operation that can call into the VM.
|
||||
@ -525,7 +525,7 @@ BaselineCompiler::emitEpilogue()
|
||||
{
|
||||
// Record the offset of the epilogue, so we can do early return from
|
||||
// Debugger handlers during on-stack recompile.
|
||||
epilogueOffset_ = CodeOffset(masm.currentOffset());
|
||||
debugOsrEpilogueOffset_ = CodeOffset(masm.currentOffset());
|
||||
|
||||
masm.bind(&return_);
|
||||
|
||||
@ -800,7 +800,7 @@ BaselineCompiler::emitDebugPrologue()
|
||||
masm.bind(&done);
|
||||
}
|
||||
|
||||
postDebugPrologueOffset_ = CodeOffset(masm.currentOffset());
|
||||
debugOsrPrologueOffset_ = CodeOffset(masm.currentOffset());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -305,16 +305,17 @@ class BaselineCompiler final
|
||||
NonAssertingLabel return_;
|
||||
NonAssertingLabel postBarrierSlot_;
|
||||
|
||||
// Native code offset right before the scope chain is initialized.
|
||||
CodeOffset prologueOffset_;
|
||||
// Early Ion bailouts will enter at this address. This is after frame
|
||||
// construction and before environment chain is initialized.
|
||||
CodeOffset bailoutPrologueOffset_;
|
||||
|
||||
// Native code offset right before the frame is popped and the method
|
||||
// returned from.
|
||||
CodeOffset epilogueOffset_;
|
||||
// Baseline Debug OSR during prologue will enter at this address. This is
|
||||
// right after where a debug prologue VM call would have returned.
|
||||
CodeOffset debugOsrPrologueOffset_;
|
||||
|
||||
// Native code offset right after debug prologue and epilogue, or
|
||||
// equivalent positions when debug mode is off.
|
||||
CodeOffset postDebugPrologueOffset_;
|
||||
// Baseline Debug OSR during epilogue will enter at this address. This is
|
||||
// right after where a debug epilogue VM call would have returned.
|
||||
CodeOffset debugOsrEpilogueOffset_;
|
||||
|
||||
// For each INITIALYIELD or YIELD or AWAIT op, this Vector maps the yield
|
||||
// index to the bytecode offset of the next op.
|
||||
|
@ -544,7 +544,7 @@ PatchBaselineFramesForDebugMode(JSContext* cx,
|
||||
//
|
||||
// We patch a jump directly to the right place in the prologue
|
||||
// after popping the frame reg and checking for forced return.
|
||||
recompInfo->resumeAddr = bl->postDebugPrologueAddr();
|
||||
recompInfo->resumeAddr = bl->debugOsrPrologueEntryAddr();
|
||||
popFrameReg = true;
|
||||
break;
|
||||
|
||||
@ -565,7 +565,7 @@ PatchBaselineFramesForDebugMode(JSContext* cx,
|
||||
// We patch a jump directly to the epilogue after popping the
|
||||
// frame reg and checking for forced return.
|
||||
MOZ_ASSERT(kind == RetAddrEntry::Kind::DebugEpilogue);
|
||||
recompInfo->resumeAddr = bl->epilogueEntryAddr();
|
||||
recompInfo->resumeAddr = bl->debugOsrEpilogueEntryAddr();
|
||||
popFrameReg = true;
|
||||
break;
|
||||
}
|
||||
@ -1032,7 +1032,7 @@ SyncBaselineDebugModeOSRInfo(BaselineFrame* frame, Value* vp, bool rv)
|
||||
// epilogue.
|
||||
MOZ_ASSERT(R0 == JSReturnOperand);
|
||||
info->valueR0 = frame->returnValue();
|
||||
info->resumeAddr = frame->script()->baselineScript()->epilogueEntryAddr();
|
||||
info->resumeAddr = frame->script()->baselineScript()->debugOsrEpilogueEntryAddr();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -345,10 +345,11 @@ jit::CanEnterBaselineMethod(JSContext* cx, RunState& state)
|
||||
|
||||
BaselineScript*
|
||||
BaselineScript::New(JSScript* jsscript,
|
||||
uint32_t prologueOffset, uint32_t epilogueOffset,
|
||||
uint32_t bailoutPrologueOffset,
|
||||
uint32_t debugOsrPrologueOffset,
|
||||
uint32_t debugOsrEpilogueOffset,
|
||||
uint32_t profilerEnterToggleOffset,
|
||||
uint32_t profilerExitToggleOffset,
|
||||
uint32_t postDebugPrologueOffset,
|
||||
size_t icEntries,
|
||||
size_t retAddrEntries,
|
||||
size_t pcMappingIndexEntries, size_t pcMappingSize,
|
||||
@ -385,9 +386,11 @@ BaselineScript::New(JSScript* jsscript,
|
||||
if (!script) {
|
||||
return nullptr;
|
||||
}
|
||||
new (script) BaselineScript(prologueOffset, epilogueOffset,
|
||||
profilerEnterToggleOffset, profilerExitToggleOffset,
|
||||
postDebugPrologueOffset);
|
||||
new (script) BaselineScript(bailoutPrologueOffset,
|
||||
debugOsrPrologueOffset,
|
||||
debugOsrEpilogueOffset,
|
||||
profilerEnterToggleOffset,
|
||||
profilerExitToggleOffset);
|
||||
|
||||
size_t offsetCursor = sizeof(BaselineScript);
|
||||
MOZ_ASSERT(offsetCursor == AlignBytes(sizeof(BaselineScript), DataAlignment));
|
||||
|
@ -247,12 +247,17 @@ struct BaselineScript final
|
||||
// directly to this script.
|
||||
Vector<DependentWasmImport>* dependentWasmImports_ = nullptr;
|
||||
|
||||
// Native code offset right before the scope chain is initialized.
|
||||
uint32_t prologueOffset_;
|
||||
// Early Ion bailouts will enter at this address. This is after frame
|
||||
// construction and before environment chain is initialized.
|
||||
uint32_t bailoutPrologueOffset_;
|
||||
|
||||
// Native code offset right before the frame is popped and the method
|
||||
// returned from.
|
||||
uint32_t epilogueOffset_;
|
||||
// Baseline Debug OSR during prologue will enter at this address. This is
|
||||
// right after where a debug prologue VM call would have returned.
|
||||
uint32_t debugOsrPrologueOffset_;
|
||||
|
||||
// Baseline Debug OSR during epilogue will enter at this address. This is
|
||||
// right after where a debug epilogue VM call would have returned.
|
||||
uint32_t debugOsrEpilogueOffset_;
|
||||
|
||||
// The offsets for the toggledJump instructions for profiler instrumentation.
|
||||
uint32_t profilerEnterToggleOffset_;
|
||||
@ -267,14 +272,6 @@ struct BaselineScript final
|
||||
TraceLoggerEvent traceLoggerScriptEvent_ = {};
|
||||
#endif
|
||||
|
||||
// Native code offsets right after the debug prologue VM call returns, or
|
||||
// would have returned. This offset is recorded even when debug mode is
|
||||
// off to aid on-stack debug mode recompilation.
|
||||
//
|
||||
// We don't need one for the debug epilogue because that always happens
|
||||
// right before the epilogue, so we just use the epilogue offset.
|
||||
uint32_t postDebugPrologueOffset_;
|
||||
|
||||
public:
|
||||
enum Flag {
|
||||
// Flag set by JSScript::argumentsOptimizationFailed. Similar to
|
||||
@ -357,15 +354,16 @@ struct BaselineScript final
|
||||
|
||||
// Use BaselineScript::New to create new instances. It will properly
|
||||
// allocate trailing objects.
|
||||
BaselineScript(uint32_t prologueOffset, uint32_t epilogueOffset,
|
||||
BaselineScript(uint32_t bailoutPrologueOffset,
|
||||
uint32_t debugOsrPrologueOffset,
|
||||
uint32_t debugOsrEpilogueOffset,
|
||||
uint32_t profilerEnterToggleOffset,
|
||||
uint32_t profilerExitToggleOffset,
|
||||
uint32_t postDebugPrologueOffset)
|
||||
: prologueOffset_(prologueOffset),
|
||||
epilogueOffset_(epilogueOffset),
|
||||
uint32_t profilerExitToggleOffset)
|
||||
: bailoutPrologueOffset_(bailoutPrologueOffset),
|
||||
debugOsrPrologueOffset_(debugOsrPrologueOffset),
|
||||
debugOsrEpilogueOffset_(debugOsrEpilogueOffset),
|
||||
profilerEnterToggleOffset_(profilerEnterToggleOffset),
|
||||
profilerExitToggleOffset_(profilerExitToggleOffset),
|
||||
postDebugPrologueOffset_(postDebugPrologueOffset)
|
||||
profilerExitToggleOffset_(profilerExitToggleOffset)
|
||||
{ }
|
||||
|
||||
public:
|
||||
@ -376,10 +374,11 @@ struct BaselineScript final
|
||||
}
|
||||
|
||||
static BaselineScript* New(JSScript* jsscript,
|
||||
uint32_t prologueOffset, uint32_t epilogueOffset,
|
||||
uint32_t bailoutPrologueOffset,
|
||||
uint32_t debugOsrPrologueOffset,
|
||||
uint32_t debugOsrEpilogueOffset,
|
||||
uint32_t profilerEnterToggleOffset,
|
||||
uint32_t profilerExitToggleOffset,
|
||||
uint32_t postDebugPrologueOffset,
|
||||
size_t icEntries,
|
||||
size_t retAddrEntries,
|
||||
size_t pcMappingIndexEntries, size_t pcMappingSize,
|
||||
@ -450,25 +449,14 @@ struct BaselineScript final
|
||||
return flags_ & USES_ENVIRONMENT_CHAIN;
|
||||
}
|
||||
|
||||
uint32_t prologueOffset() const {
|
||||
return prologueOffset_;
|
||||
uint8_t* bailoutPrologueEntryAddr() const {
|
||||
return method_->raw() + bailoutPrologueOffset_;
|
||||
}
|
||||
uint8_t* prologueEntryAddr() const {
|
||||
return method_->raw() + prologueOffset_;
|
||||
uint8_t* debugOsrPrologueEntryAddr() const {
|
||||
return method_->raw() + debugOsrPrologueOffset_;
|
||||
}
|
||||
|
||||
uint32_t epilogueOffset() const {
|
||||
return epilogueOffset_;
|
||||
}
|
||||
uint8_t* epilogueEntryAddr() const {
|
||||
return method_->raw() + epilogueOffset_;
|
||||
}
|
||||
|
||||
uint32_t postDebugPrologueOffset() const {
|
||||
return postDebugPrologueOffset_;
|
||||
}
|
||||
uint8_t* postDebugPrologueAddr() const {
|
||||
return method_->raw() + postDebugPrologueOffset_;
|
||||
uint8_t* debugOsrEpilogueEntryAddr() const {
|
||||
return method_->raw() + debugOsrEpilogueOffset_;
|
||||
}
|
||||
|
||||
ICEntry* icEntryList() {
|
||||
|
Loading…
Reference in New Issue
Block a user