Skip to content

Commit c8ec163

Browse files
committed
Remove incorrect getReason call and improve shouldNotReachHere message
1 parent 80d9f68 commit c8ec163

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/ObjectScanner.java

+11-4
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,11 @@ protected final void scanField(AnalysisField field, JavaConstant receiver, Objec
114114
JavaConstant fieldValue = bb.getConstantReflectionProvider().readFieldValue(field, receiver);
115115

116116
if (fieldValue == null) {
117+
StringBuilder backtrace = new StringBuilder();
118+
buildObjectBacktrace(reason, backtrace);
117119
throw AnalysisError.shouldNotReachHere("Could not find field " + field.format("%H.%n") +
118-
(receiver == null ? "" : " on " + bb.getSnippetReflectionProvider().asObject(Object.class, receiver).getClass()));
120+
(receiver == null ? "" : " on " + bb.getSnippetReflectionProvider().asObject(Object.class, receiver).getClass()) +
121+
System.lineSeparator() + backtrace.toString());
119122
}
120123

121124
if (fieldValue.getJavaKind() == JavaKind.Object && bb.getHostVM().isRelocatedPointer(bb.getSnippetReflectionProvider().asObject(Object.class, fieldValue))) {
@@ -229,6 +232,11 @@ public final void scanConstant(JavaConstant value, Object reason) {
229232

230233
private void unsupportedFeature(String key, String message, Object entry) {
231234
StringBuilder objectBacktrace = new StringBuilder();
235+
AnalysisMethod method = buildObjectBacktrace(entry, objectBacktrace);
236+
bb.getUnsupportedFeatures().addMessage(key, method, message, objectBacktrace.toString());
237+
}
238+
239+
private AnalysisMethod buildObjectBacktrace(Object entry, StringBuilder objectBacktrace) {
232240
Object cur = entry;
233241
AnalysisMethod method = null;
234242

@@ -246,8 +254,7 @@ private void unsupportedFeature(String key, String message, Object entry) {
246254
} else {
247255
objectBacktrace.append("\t[unknown] ").append(cur.toString());
248256
}
249-
250-
bb.getUnsupportedFeatures().addMessage(key, method, message, objectBacktrace.toString());
257+
return method;
251258
}
252259

253260
/**
@@ -268,7 +275,7 @@ assert checkCorrectClassloaders(entry, valueObj) : "Invalid classloader " + valu
268275
for (AnalysisField field : type.getInstanceFields(true)) {
269276
if (field.getJavaKind() == JavaKind.Object && field.isAccessed()) {
270277
assert !Modifier.isStatic(field.getModifiers());
271-
scanField(field, entry.constant, entry.getReason());
278+
scanField(field, entry.constant, entry);
272279
}
273280
}
274281
} else if (type.isArray() && bb.getProviders().getWordTypes().asKind(type.getComponentType()) == JavaKind.Object) {

0 commit comments

Comments
 (0)