Skip to content

Commit d5151d7

Browse files
committed
GH-412 call createPresentationCCT() only if classId exists in particular snapshot
1 parent 2a150e6 commit d5151d7

File tree

3 files changed

+55
-10
lines changed

3 files changed

+55
-10
lines changed

visualvm/libs.profiler/lib.profiler/src/org/graalvm/visualvm/lib/jfluid/results/jdbc/JdbcResultsDiff.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,17 @@ public void writeToStream(DataOutputStream out) throws IOException {
109109
@Override
110110
protected PresoObjAllocCCTNode createPresentationCCT(RuntimeMemoryCCTNode rootNode, int classId,
111111
boolean dontShowZeroLiveObjAllocPaths) {
112-
PresoObjAllocCCTNode node1 = snapshot1.createPresentationCCT(rootNode, selectId1(classId), dontShowZeroLiveObjAllocPaths);
113-
PresoObjAllocCCTNode node2 = snapshot2.createPresentationCCT(rootNode, selectId2(classId), dontShowZeroLiveObjAllocPaths);
112+
int selectId1 = selectId1(classId);
113+
int selectId2 = selectId2(classId);
114+
PresoObjAllocCCTNode node1 = null;
115+
PresoObjAllocCCTNode node2 = null;
116+
117+
if (selectId1 != -1) {
118+
node1 = snapshot1.createPresentationCCT(rootNode, selectId1, dontShowZeroLiveObjAllocPaths);
119+
}
120+
if (selectId2 != -1) {
121+
node2 = snapshot2.createPresentationCCT(rootNode, selectId2, dontShowZeroLiveObjAllocPaths);
122+
}
114123
return new DiffObjAllocCCTNode(node1, node2);
115124
}
116125

visualvm/libs.profiler/lib.profiler/src/org/graalvm/visualvm/lib/jfluid/results/memory/AllocMemoryResultsDiff.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,17 @@ public boolean containsStacks() {
110110
}
111111

112112
public PresoObjAllocCCTNode createPresentationCCT(int classId, boolean dontShowZeroLiveObjAllocPaths) {
113-
PresoObjAllocCCTNode node1 = snapshot1.createPresentationCCT(classId1(classId), dontShowZeroLiveObjAllocPaths);
114-
PresoObjAllocCCTNode node2 = snapshot2.createPresentationCCT(classId2(classId), dontShowZeroLiveObjAllocPaths);
113+
int selectId1 = classId1(classId);
114+
int selectId2 = classId2(classId);
115+
PresoObjAllocCCTNode node1 = null;
116+
PresoObjAllocCCTNode node2 = null;
117+
118+
if (selectId1 != -1) {
119+
node1 = snapshot1.createPresentationCCT(selectId1, dontShowZeroLiveObjAllocPaths);
120+
}
121+
if (selectId2 != -1) {
122+
node2 = snapshot2.createPresentationCCT(selectId2, dontShowZeroLiveObjAllocPaths);
123+
}
115124
return new DiffObjAllocCCTNode(node1, node2);
116125
}
117126

@@ -126,8 +135,17 @@ public void writeToStream(DataOutputStream out) throws IOException {
126135

127136
protected PresoObjAllocCCTNode createPresentationCCT(RuntimeMemoryCCTNode rootNode, int classId,
128137
boolean dontShowZeroLiveObjAllocPaths) {
129-
PresoObjAllocCCTNode node1 = snapshot1.createPresentationCCT(rootNode, classId1(classId), dontShowZeroLiveObjAllocPaths);
130-
PresoObjAllocCCTNode node2 = snapshot2.createPresentationCCT(rootNode, classId2(classId), dontShowZeroLiveObjAllocPaths);
138+
int selectId1 = classId1(classId);
139+
int selectId2 = classId2(classId);
140+
PresoObjAllocCCTNode node1 = null;
141+
PresoObjAllocCCTNode node2 = null;
142+
143+
if (selectId1 != -1) {
144+
node1 = snapshot1.createPresentationCCT(rootNode, selectId1, dontShowZeroLiveObjAllocPaths);
145+
}
146+
if (selectId2 != -1) {
147+
node2 = snapshot2.createPresentationCCT(rootNode, selectId2, dontShowZeroLiveObjAllocPaths);
148+
}
131149
return new DiffObjAllocCCTNode(node1, node2);
132150
}
133151

visualvm/libs.profiler/lib.profiler/src/org/graalvm/visualvm/lib/jfluid/results/memory/LivenessMemoryResultsDiff.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,17 @@ public boolean containsStacks() {
159159
}
160160

161161
public PresoObjLivenessCCTNode createPresentationCCT(int classId, boolean dontShowZeroLiveObjAllocPaths) {
162-
PresoObjLivenessCCTNode node1 = snapshot1.createPresentationCCT(classId1(classId), dontShowZeroLiveObjAllocPaths);
163-
PresoObjLivenessCCTNode node2 = snapshot2.createPresentationCCT(classId2(classId), dontShowZeroLiveObjAllocPaths);
162+
int selectId1 = classId1(classId);
163+
int selectId2 = classId2(classId);
164+
PresoObjLivenessCCTNode node1 = null;
165+
PresoObjLivenessCCTNode node2 = null;
166+
167+
if (selectId1 != -1) {
168+
node1 = snapshot1.createPresentationCCT(selectId1, dontShowZeroLiveObjAllocPaths);
169+
}
170+
if (selectId2 != -1) {
171+
node2 = snapshot2.createPresentationCCT(selectId2, dontShowZeroLiveObjAllocPaths);
172+
}
164173
return new DiffObjLivenessCCTNode(node1, node2);
165174
}
166175

@@ -179,8 +188,17 @@ public void writeToStream(DataOutputStream out) throws IOException {
179188

180189
protected PresoObjLivenessCCTNode createPresentationCCT(RuntimeMemoryCCTNode rootNode, int classId,
181190
boolean dontShowZeroLiveObjAllocPaths) {
182-
PresoObjLivenessCCTNode node1 = snapshot1.createPresentationCCT(rootNode, classId1(classId), dontShowZeroLiveObjAllocPaths);
183-
PresoObjLivenessCCTNode node2 = snapshot2.createPresentationCCT(rootNode, classId2(classId), dontShowZeroLiveObjAllocPaths);
191+
int selectId1 = classId1(classId);
192+
int selectId2 = classId2(classId);
193+
PresoObjLivenessCCTNode node1 = null;
194+
PresoObjLivenessCCTNode node2 = null;
195+
196+
if (selectId1 != -1) {
197+
node1 = snapshot1.createPresentationCCT(rootNode, selectId1, dontShowZeroLiveObjAllocPaths);
198+
}
199+
if (selectId2 != -1) {
200+
node2 = snapshot2.createPresentationCCT(rootNode, selectId2, dontShowZeroLiveObjAllocPaths);
201+
}
184202
return new DiffObjLivenessCCTNode(node1, node2);
185203
}
186204

0 commit comments

Comments
 (0)