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