Skip to content

Commit

Permalink
6670: stactrace message, helper methods
Browse files Browse the repository at this point in the history
  • Loading branch information
mirage22 committed Jan 20, 2020
1 parent f47bf34 commit e501ab2
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,27 +51,6 @@ public class TraceTreeUtils {
public final static String DEFAULT_ROOT_PACKAGE_NAME = "";
public final static FrameSeparator DEFAULT_FRAME_SEPARATOR = new FrameSeparator(FrameCategorization.METHOD, false);

private static class TraceNodeFactory {

private static TraceNode getRootTraceNode(String rootName, Fork rootFork) {
return new TraceNode(rootName == null ? DEFAULT_ROOT_NAME : rootName, rootFork.getItemsInFork(),
DEFAULT_ROOT_PACKAGE_NAME);
}

private static TraceNode getTraceNodeByStacktraceFrame(StacktraceFrame sFrame) {
IMCFrame frame = sFrame.getFrame();
IMCMethod method = frame.getMethod();
String packageName = FormatToolkit.getPackage(method.getType().getPackage());
if (frame == StacktraceModel.UNKNOWN_FRAME) {
return new TraceNode(Messages.getString(Messages.STACKTRACE_UNCLASSIFIABLE_FRAME),
sFrame.getItemCount(), packageName);
} else {
String name = FormatToolkit.getHumanReadable(method, false, false, true, false, true, false);
return new TraceNode(name, sFrame.getItemCount(), packageName);
}
}
}

/**
* Traces a TraceTree from a {@link StacktraceModel}.
*
Expand All @@ -81,7 +60,7 @@ private static TraceNode getTraceNodeByStacktraceFrame(StacktraceFrame sFrame) {
*/
public static TraceNode createTree(StacktraceModel model, String rootName) {
Fork rootFork = model.getRootFork();
TraceNode root = TraceNodeFactory.getRootTraceNode(rootName, rootFork);
TraceNode root = getRootTraceNode(rootName, rootFork);
for (Branch branch : rootFork.getBranches()) {
addBranch(root, branch);
}
Expand All @@ -102,10 +81,10 @@ public static TraceNode createTree(

private static void addBranch(TraceNode root, Branch branch) {
StacktraceFrame firstFrame = branch.getFirstFrame();
TraceNode currentNode = TraceNodeFactory.getTraceNodeByStacktraceFrame(firstFrame);
TraceNode currentNode = getTraceNodeByStacktraceFrame(firstFrame);
root.addChild(currentNode);
for (StacktraceFrame frame : branch.getTailFrames()) {
TraceNode newNode = TraceNodeFactory.getTraceNodeByStacktraceFrame(frame);
TraceNode newNode = getTraceNodeByStacktraceFrame(frame);
currentNode.addChild(newNode);
currentNode = newNode;
}
Expand Down Expand Up @@ -140,4 +119,22 @@ private static String indent(int indentation) {
}
return builder.toString();
}

private static TraceNode getRootTraceNode(String rootName, Fork rootFork) {
return new TraceNode(rootName == null ? DEFAULT_ROOT_NAME : rootName, rootFork.getItemsInFork(),
DEFAULT_ROOT_PACKAGE_NAME);
}

private static TraceNode getTraceNodeByStacktraceFrame(StacktraceFrame sFrame) {
IMCFrame frame = sFrame.getFrame();
IMCMethod method = frame.getMethod();
String packageName = FormatToolkit.getPackage(method.getType().getPackage());
if (frame == StacktraceModel.UNKNOWN_FRAME) {
return new TraceNode(Messages.getString(Messages.STACKTRACE_UNCLASSIFIABLE_FRAME), sFrame.getItemCount(),
packageName);
} else {
String name = FormatToolkit.getHumanReadable(method, false, false, true, false, true, false);
return new TraceNode(name, sFrame.getItemCount(), packageName);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@
import org.openjdk.jmc.ui.handlers.MCContextMenuManager;
import org.openjdk.jmc.ui.misc.DisplayToolkit;

import static org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.Flameview_UNCLASSIFIABLE_FRAME_DESC;
import static org.openjdk.jmc.flightrecorder.stacktrace.messages.internal.Messages.STACKTRACE_UNCLASSIFIABLE_FRAME;
import static org.openjdk.jmc.flightrecorder.stacktrace.messages.internal.Messages.STACKTRACE_UNCLASSIFIABLE_FRAME_DESC;

public class FlameGraphView extends ViewPart implements ISelectionListener {
private static final String HTML_PAGE;
Expand Down Expand Up @@ -275,7 +275,7 @@ private static String createJsonTraceNode(TraceNode node) {

private static String createJsonDescTraceNode(TraceNode node) {
return String.format("{%s,%s,%s,%s, \"c\": [ ", toJSonKeyValue("n", node.getName()),
toJSonKeyValue("p", node.getPackageName()), toJSonKeyValue("d", Flameview_UNCLASSIFIABLE_FRAME_DESC),
toJSonKeyValue("p", node.getPackageName()), toJSonKeyValue("d", STACKTRACE_UNCLASSIFIABLE_FRAME_DESC),
toJSonKeyValue("v", String.valueOf(node.getValue())));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -611,5 +611,4 @@ MemoryLeakPage_RELEVANCE_COLUMN_HEADER=Relevance
MemoryLeakPage_STEPS_SKIPPED={0} {1} skipped steps from parent
MethodProfilingPage_CLASS_HISTOGRAM_SELECTION=Method Profiling Class Histogram Selection
MethodProfilingPage_PACKAGE_HISTOGRAM_SELECTION=Method Profiling Package Histogram Selection
MethodProfilingPage_PAGE_NAME=Method Profiling
Flameview_UNCLASSIFIABLE_FRAME_DESC=Unclassified means the stacktrace reached the stackdepth limit
MethodProfilingPage_PAGE_NAME=Method Profiling
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public class Messages {
public static final String STACKTRACE_METHOD = "STACKTRACE_METHOD"; //$NON-NLS-1$
public static final String STACKTRACE_PACKAGE = "STACKTRACE_PACKAGE"; //$NON-NLS-1$
public static final String STACKTRACE_UNCLASSIFIABLE_FRAME = "STACKTRACE_UNCLASSIFIABLE_FRAME"; //$NON-NLS-1$
public static final String STACKTRACE_UNCLASSIFIABLE_FRAME_DESC = "STACKTRACE_UNCLASSIFIABLE_FRAME_DESC"; //$NON-NLS-1$

private Messages() {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ STACKTRACE_LINE_NUMBER=Line Number
STACKTRACE_METHOD=Method
STACKTRACE_PACKAGE=Package
STACKTRACE_UNCLASSIFIABLE_FRAME=~ UNCLASSIFIABLE ~
STACKTRACE_UNCLASSIFIABLE_FRAME_DESC=Unclassified means the stacktrace reached the stackdepth limit

0 comments on commit e501ab2

Please sign in to comment.