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:
Ted Campbell 2018-10-26 16:00:04 +00:00
parent 242f3d9eb2
commit 16e90b4729
6 changed files with 54 additions and 62 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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.

View File

@ -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;
}

View File

@ -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));

View File

@ -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() {