Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions substratevm/mx.substratevm/testhello.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ def test():
fr"#4{spaces_pattern}{address_pattern} in com\.oracle\.svm\.core\.JavaMainWrapper::runCore{no_param_types_pattern} {no_arg_values_pattern} at {package_pattern}JavaMainWrapper\.java:[0-9]+",
fr"#5{spaces_pattern}com\.oracle\.svm\.core\.JavaMainWrapper::doRun{param_types_pattern} {arg_values_pattern} at {package_pattern}JavaMainWrapper\.java:[0-9]+",
fr"#6{spaces_pattern}({address_pattern} in )?com\.oracle\.svm\.core\.JavaMainWrapper::run{param_types_pattern} {arg_values_pattern} at {package_pattern}JavaMainWrapper\.java:[0-9]+",
fr"#7{spaces_pattern}com\.oracle\.svm\.core\.code\.IsolateEnterStub::JavaMainWrapper_run_{varname_pattern}{param_types_pattern} {arg_values_pattern}"
fr"#7{spaces_pattern}({address_pattern} in )?com\.oracle\.svm\.core\.code\.IsolateEnterStub::JavaMainWrapper_run_{varname_pattern}{param_types_pattern} {arg_values_pattern}"
]
if musl:
# musl has a different entry point - drop the last two frames
Expand Down Expand Up @@ -408,7 +408,7 @@ def test():
fr"#5{spaces_pattern}{address_pattern} in com\.oracle\.svm\.core\.JavaMainWrapper::runCore{no_param_types_pattern} {no_arg_values_pattern} at {package_pattern}JavaMainWrapper\.java:[0-9]+",
fr"#6{spaces_pattern}com\.oracle\.svm\.core\.JavaMainWrapper::doRun{param_types_pattern} {arg_values_pattern} at {package_pattern}JavaMainWrapper\.java:[0-9]+",
fr"#7{spaces_pattern}({address_pattern} in )?com\.oracle\.svm\.core\.JavaMainWrapper::run{param_types_pattern} {arg_values_pattern} at {package_pattern}JavaMainWrapper\.java:[0-9]+",
fr"#8{spaces_pattern}com\.oracle\.svm\.core\.code\.IsolateEnterStub::JavaMainWrapper_run_{varname_pattern}{param_types_pattern} {arg_values_pattern}"
fr"#8{spaces_pattern}({address_pattern} in )?com\.oracle\.svm\.core\.code\.IsolateEnterStub::JavaMainWrapper_run_{varname_pattern}{param_types_pattern} {arg_values_pattern}"
]
if musl:
# musl has a different entry point - drop the last two frames
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,15 @@ public StructuredGraph buildGraph(DebugContext debug, AnalysisMethod method, Hos
arguments.addFirst(returnBuffer);
}

/* Transfers to the Java-side stub; note that exceptions should be handled there. */
/*
* Transfers to the Java-side stub; note that exceptions should be handled there. We
* explicitly disable inline for this call to prevent that operations floating to a point
* where the base registers are not initialized yet.
*/
arguments.addFirst(mh);
InvokeWithExceptionNode returnValue = kit.createJavaCallWithException(CallTargetNode.InvokeKind.Static, highLevelStub, arguments.toArray(ValueNode.EMPTY_ARRAY));
returnValue.setUseForInlining(false);

kit.exceptionPart();
kit.append(new DeadEndNode());
kit.endInvokeWithException();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ private ValueNode createInvoke(AnalysisMethod method, HostedGraphKit kit, Analys
if (method.getAnnotation(CEnumLookup.class) != null) {
/* Call a method that converts the primitive value to a Java enum. */
EnumInfo enumInfo = (EnumInfo) nativeLibraries.findElementInfo(returnType);
return CInterfaceEnumTool.singleton().createInvokeLookupEnum(kit, returnType, enumInfo, arg);
return CInterfaceEnumTool.singleton().createInvokeLookupEnum(kit, returnType, enumInfo, arg, true);
} else if (method.getAnnotation(CEnumValue.class) != null) {
/* Call a method that converts a Java enum to a primitive value. */
ResolvedJavaType declaringType = method.getDeclaringClass();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ private ValueNode adaptReturnValue(AnalysisMethod method, NativeLibraries native
"Enum class %s needs a method that is annotated with @%s because it is used as the return type of a method annotated with @%s: %s.",
declaredReturnType, CEnumLookup.class.getSimpleName(), getCorrespondingAnnotationName(), getOriginal());

return CInterfaceEnumTool.singleton().createInvokeLookupEnum(kit, declaredReturnType, enumInfo, value);
return CInterfaceEnumTool.singleton().createInvokeLookupEnum(kit, declaredReturnType, enumInfo, value, true);
}

private EnumInfo getEnumInfo(NativeLibraries nativeLibraries, AnalysisType type, boolean isReturnType) {
Expand Down
Loading