Skip to content

Commit

Permalink
Use defining symrefs from defining map for <eaEscapeHelper> call
Browse files Browse the repository at this point in the history
TR_EscapeAnalysisTools::processSymbolReferences uses a BitVector to
accumulate the symbol reference numbers for symbols that are to be
loaded on an <eaEscapeHelper> call.  In walking through the set of
defining symbols associated with a particular local symbol, the code was
adding the reference number for the original symbol to the BitVector of
symbols to be loaded for the <eaEscapeHelper> call rather than the
reference numbers for the associated defining symbols.  That can lead
Escape Analysis to miss potential escapes of references through induce
OSR blocks or peeked calls.
  • Loading branch information
hzongaro committed Oct 18, 2023
1 parent bad831c commit 12c43b1
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion runtime/compiler/optimizer/EscapeAnalysisTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ void TR_EscapeAnalysisTools::processSymbolReferences(TR_Array<List<TR::SymbolRef
if ((definingSym->isAuto() || definingSym->isParm())
&& (deadSymRefs == NULL || !deadSymRefs->isSet(definingSymRefNum)))
{
symRefsToLoad.set(symRefNum);
symRefsToLoad.set(definingSymRefNum);

if (_comp->trace(OMR::escapeAnalysis) || _comp->getOption(TR_TraceOSR))
{
Expand Down

0 comments on commit 12c43b1

Please sign in to comment.