Skip to content

Commit 25184bf

Browse files
author
Yi Zhang
committed
Clear peeking ilgen callNode from callsite
The callNode generated from peeking ilgen is used to create the callsite of appropriate type and check for targets. Set it to NULL when both are done so that inliner code can reliably figure out whether the callsite has been updated with proper ilgen callNode or not. Signed-off-by: Yi Zhang <yizhang@ca.ibm.com>
1 parent ad7c3f0 commit 25184bf

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

runtime/compiler/optimizer/J9EstimateCodeSize.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -1239,7 +1239,8 @@ TR_J9EstimateCodeSize::realEstimateCodeSize(TR_CallTarget *calltarget, TR_CallSt
12391239
TR::Node* parent = tt->getNode();
12401240
TR::Node* callNode = tt->getNode()->getFirstChild();
12411241
TR::SymbolReference* symRef = callNode->getSymbolReference();
1242-
if (!callNode->getSymbolReference()->isUnresolved() && !visited.contains(callNode))
1242+
if (!callNode->getSymbolReference()->isUnresolved() && !visited.contains(callNode) &&
1243+
!callSites[callNode->getByteCodeIndex()]) // skip if the callsite has already been created for this byte code index
12431244
{
12441245
int i = callNode->getByteCodeIndex();
12451246
visited.add(callNode);
@@ -1268,6 +1269,10 @@ TR_J9EstimateCodeSize::realEstimateCodeSize(TR_CallTarget *calltarget, TR_CallSt
12681269
//support counters
12691270
calltarget->addDeadCallee(callsite);
12701271
}
1272+
1273+
// clearing the node generated by peeking ilgen
1274+
// _callNode will be filled with node generated by actual ilgen @see TR_InlinerBase::findAndUpdateCallSiteInGraph
1275+
callsite->_callNode = NULL;
12711276
}
12721277
}
12731278
}

0 commit comments

Comments
 (0)