src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java

src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java

Print this page
rev 6447 : 8043638: Multiple compilation attempts break LogCompulation, lead to confusing PrintInlining output
Summary: dumps inlining only for last compilation attempt. Fix LogCompilation tool so it handles multiple compilation attempts.
Reviewed-by:

*** 229,238 **** --- 229,241 ---- public CallSite findCallSite(ArrayDeque<CallSite> sites) { // Locate a late inline call site. Multiple chains of // identical call sites with the same method name/bci are // possible so we have to try them all until we find the late // inline call site that has a matching inline id. + if (calls == null) { + return null; + } CallSite site = sites.pop(); for (CallSite c : calls) { if (c.matches(site)) { if (!sites.isEmpty()) { CallSite res = c.findCallSite(sites);
*** 248,257 **** --- 251,281 ---- } sites.push(site); return null; } + public ArrayDeque<CallSite> findCallSite2(CallSite site) { + if (calls == null) { + return null; + } + + for (CallSite c : calls) { + if (c.matches(site)) { + ArrayDeque<CallSite> stack = new ArrayDeque<CallSite>(); + stack.push(c); + return stack; + } else { + ArrayDeque<CallSite> stack = c.findCallSite2(site); + if (stack != null) { + stack.push(c); + return stack; + } + } + } + return null; + } + public long getInlineId() { return inlineId; } public void setInlineId(long inlineId) {
src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File