Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Should AOT method relocation after local AOT compilation be an InterruptibleOperation? #20025

Closed
cjjdespres opened this issue Aug 20, 2024 · 1 comment

Comments

@cjjdespres
Copy link
Contributor

Clang informs me that in this block of code, responsible for relocating a freshly-compiled AOT method:

TR::CompilationInfoPerThreadBase::InterruptibleOperation(*entry->_compInfoPT);
// need to get a non-shared cache VM to relocate
TR_J9VMBase *fe = TR_J9VMBase::get(jitConfig, vmThread);
TR_ResolvedMethod *compilee = fe->createResolvedMethod(comp->trMemory(), (TR_OpaqueMethodBlock *)method);
relocatedMetaData = entry->_compInfoPT->reloRuntime()->prepareRelocateAOTCodeAndData(
vmThread,
fe,
aotMCCRuntimeCodeCache,
cacheEntry,
method,
true,
comp->getOptions(),
comp,
compilee
);
returnCode = entry->_compInfoPT->reloRuntime()->returnCode();

we create and then immediately destroy the TR::CompilationInfoPerThreadBase::InterruptibleOperation object that is created, because we don't name the object. This is probably an oversight. I think that relocation in other circumstances is considered to be interruptible - the other calls to prepareRelocateAOTCodeAndData (for local AOT loads, and for relocating methods received from the JITServer) appear to occur down the call stack from TR::CompilationInfoPerThreadBase::compile() while that function is holding InterruptibleOperation compilingMethodBody(*this).

Attn @mpirvu.

@cjjdespres
Copy link
Contributor Author

Fixed by #20737.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant