Skip to content

Commit c2b5eeb

Browse files
authored
Merge pull request #21501 from jdmpapin/trivialInliningOnly
Make some minor improvements to tryToInlineTrivialMethod()
2 parents 3b892dc + a893529 commit c2b5eeb

File tree

2 files changed

+38
-10
lines changed

2 files changed

+38
-10
lines changed

runtime/compiler/optimizer/InlinerTempForJ9.cpp

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3054,24 +3054,51 @@ bool TR_J9InlinerPolicy::tryToInlineTrivialMethod (TR_CallStack* callStack, TR_C
30543054
TR_VirtualGuardSelection *guard = calltarget->_guard;
30553055
TR::ResolvedMethodSymbol * callerSymbol = callStack->_methodSymbol;
30563056

3057-
if (isInlineableJNI(calleeSymbol->getResolvedMethod(),callNode))
3057+
if (!isInlineableJNI(calleeSymbol->getResolvedMethod(), callNode))
30583058
{
3059-
if (performTransformation(comp(), "%sInlining jni %s into %s\n", OPT_DETAILS, calleeSymbol->signature(comp()->trMemory()), callerSymbol->signature(comp()->trMemory())))
3060-
{
3061-
if (calltarget->_myCallSite->isIndirectCall())
3062-
return true;
3059+
return false;
3060+
}
30633061

3064-
if (inlineGetClassAccessFlags(calleeSymbol, callerSymbol, callNodeTreeTop, callNode))
3065-
guard->_kind = TR_NoGuard;
3066-
else if (inlineUnsafeCall(calleeSymbol, callerSymbol, callNodeTreeTop, callNode))
3067-
guard->_kind = TR_NoGuard;
3068-
}
3062+
if (calltarget->_myCallSite->isIndirectCall())
3063+
{
3064+
return false;
3065+
}
3066+
3067+
if (!performTransformation(
3068+
comp(),
3069+
"%sInlining jni %s into %s\n",
3070+
OPT_DETAILS,
3071+
calleeSymbol->signature(comp()->trMemory()),
3072+
callerSymbol->signature(comp()->trMemory())))
3073+
{
3074+
return false;
3075+
}
3076+
3077+
if (inlineGetClassAccessFlags(calleeSymbol, callerSymbol, callNodeTreeTop, callNode))
3078+
{
3079+
guard->_kind = TR_NoGuard;
30693080
return true;
30703081
}
30713082

3083+
if (inlineUnsafeCall(calleeSymbol, callerSymbol, callNodeTreeTop, callNode))
3084+
{
3085+
guard->_kind = TR_NoGuard;
3086+
return true;
3087+
}
3088+
3089+
dumpOptDetails(comp(), "JNI inlining failed\n");
30723090
return false;
30733091
}
30743092

3093+
bool
3094+
TR_J9InlinerPolicy::trivialInliningOnly(
3095+
TR_CallStack *callStack, TR_CallTarget *callTarget)
3096+
{
3097+
TR::Node *callNode = callTarget->_myCallSite->_callNode;
3098+
TR::ResolvedMethodSymbol *calleeSymbol = callTarget->_calleeSymbol;
3099+
return isInlineableJNI(calleeSymbol->getResolvedMethod(), callNode);
3100+
}
3101+
30753102
bool
30763103
TR_J9InlinerPolicy::adjustFanInSizeInExceedsSizeThreshold(int bytecodeSize,
30773104
uint32_t& calculatedSize,

runtime/compiler/optimizer/J9Inliner.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ class TR_J9InlinerPolicy : public OMR_InlinerPolicy
194194
TR_J9InlinerPolicy(TR::Compilation *comp);
195195
virtual bool inlineRecognizedMethod(TR::RecognizedMethod method);
196196
virtual bool tryToInlineTrivialMethod (TR_CallStack* callStack, TR_CallTarget* calltarget);
197+
virtual bool trivialInliningOnly(TR_CallStack *callStack, TR_CallTarget *callTarget);
197198
bool isInlineableJNI(TR_ResolvedMethod *method,TR::Node *callNode);
198199
virtual bool alwaysWorthInlining(TR_ResolvedMethod * calleeMethod, TR::Node *callNode);
199200
bool adjustFanInSizeInExceedsSizeThreshold(int bytecodeSize,

0 commit comments

Comments
 (0)