Skip to content

Commit 57a17ce

Browse files
peter-hoferbulasevich
authored andcommitted
Add isolated compilation exception dispatch.
(cherry picked from commit 5d213ef006d56e55c7e8ba41013fedfc1bc54670)
1 parent 654e4c1 commit 57a17ce

17 files changed

+211
-110
lines changed

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolateAwareConstantReflectionProvider.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.graalvm.word.WordFactory;
3333

3434
import com.oracle.svm.core.SubstrateOptions;
35+
import com.oracle.svm.core.c.function.CEntryPointOptions;
3536
import com.oracle.svm.core.graal.meta.SubstrateMemoryAccessProvider;
3637
import com.oracle.svm.core.hub.DynamicHub;
3738
import com.oracle.svm.core.meta.SubstrateObjectConstant;
@@ -84,7 +85,8 @@ private static JavaConstant read(JavaKind kind, Constant base, long displacement
8485
return ConstantDataConverter.toCompiler(resultData);
8586
}
8687

87-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
88+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.VoidExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
89+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
8890
private static void read0(@SuppressWarnings("unused") ClientIsolateThread client, char kindChar, ConstantData baseData, long displacement,
8991
int primitiveBits, long compressBase, int compressShift, ConstantData resultData) {
9092
JavaConstant base = ConstantDataConverter.toClient(baseData);
@@ -129,7 +131,8 @@ public Integer readArrayLength(JavaConstant array) {
129131
return Array.getLength(arrayObj);
130132
}
131133

132-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
134+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.IntExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
135+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
133136
private static int readArrayLength0(@SuppressWarnings("unused") ClientIsolateThread client, ClientHandle<?> arrayHandle) {
134137
Object array = IsolatedCompileClient.get().unhand(arrayHandle);
135138
if (!array.getClass().isArray()) {
@@ -153,7 +156,8 @@ public JavaConstant readArrayElement(JavaConstant array, int index) {
153156
return ConstantDataConverter.toCompiler(resultData);
154157
}
155158

156-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
159+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.VoidExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
160+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
157161
private static void readArrayElement0(@SuppressWarnings("unused") ClientIsolateThread client, ConstantData arrayData, int index, ConstantData resultData) {
158162
JavaConstant array = ConstantDataConverter.toClient(arrayData);
159163
Object a = SubstrateObjectConstant.asObject(array);
@@ -181,14 +185,16 @@ public JavaConstant readFieldValue(ResolvedJavaField field, JavaConstant receive
181185
return ConstantDataConverter.toCompiler(resultData);
182186
}
183187

184-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
188+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.VoidExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
189+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
185190
private static void readFieldValue0(@SuppressWarnings("unused") ClientIsolateThread client, ImageHeapRef<SubstrateField> fieldRef, ConstantData receiverData, ConstantData resultData) {
186191
JavaConstant receiver = ConstantDataConverter.toClient(receiverData);
187192
Constant result = readFieldValue(ImageHeapObjects.deref(fieldRef), receiver);
188193
ConstantDataConverter.fromClient(result, resultData);
189194
}
190195

191-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
196+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.VoidExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
197+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
192198
private static void boxPrimitive0(@SuppressWarnings("unused") ClientIsolateThread client, ConstantData primitiveData, ConstantData resultData) {
193199
JavaConstant primitive = ConstantDataConverter.toClient(primitiveData);
194200
Constant result = SubstrateObjectConstant.forObject(primitive.asBoxedPrimitive());
@@ -208,7 +214,8 @@ public JavaConstant unboxPrimitive(JavaConstant boxed) {
208214
return super.unboxPrimitive(boxed);
209215
}
210216

211-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
217+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.VoidExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
218+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
212219
private static void unboxPrimitive0(@SuppressWarnings("unused") ClientIsolateThread client, ConstantData boxedData, ConstantData resultData) {
213220
Constant boxed = ConstantDataConverter.toClient(boxedData);
214221
Constant result = JavaConstant.forBoxedPrimitive(SubstrateObjectConstant.asObject(boxed));
@@ -232,7 +239,8 @@ public ResolvedJavaType asJavaType(Constant hub) {
232239
return super.asJavaType(resolved);
233240
}
234241

235-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
242+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.WordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
243+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
236244
private static ImageHeapRef<DynamicHub> getHubConstantAsImageHeapRef(@SuppressWarnings("unused") ClientIsolateThread client, ConstantData hubData) {
237245
JavaConstant hub = ConstantDataConverter.toClient(hubData);
238246
Object target = SubstrateObjectConstant.asObject(hub);
@@ -260,7 +268,8 @@ public int getImageHeapOffset(JavaConstant constant) {
260268
return super.getImageHeapOffset(constant);
261269
}
262270

263-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
271+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.IntExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
272+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
264273
private static int getImageHeapOffset0(@SuppressWarnings("unused") ClientIsolateThread client, ConstantData constantData) {
265274
Constant constant = ConstantDataConverter.toClient(constantData);
266275
return getImageHeapOffsetInternal((SubstrateObjectConstant) constant);

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolateAwareObjectConstantEqualityFeature.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@
2828
import org.graalvm.nativeimage.c.function.CEntryPoint;
2929

3030
import com.oracle.svm.core.SubstrateOptions;
31+
import com.oracle.svm.core.c.function.CEntryPointOptions;
32+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3133
import com.oracle.svm.core.feature.InternalFeature;
3234
import com.oracle.svm.core.meta.DirectSubstrateObjectConstant;
3335
import com.oracle.svm.core.meta.ObjectConstantEquality;
3436
import com.oracle.svm.core.meta.SubstrateObjectConstant;
35-
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3637
import com.oracle.svm.core.util.VMError;
3738

3839
import jdk.vm.ci.meta.Constant;
@@ -64,12 +65,14 @@ private static boolean compareIsolatedConstant(IsolatedObjectConstant a, Constan
6465
throw VMError.shouldNotReachHere("Unknown object constant: " + b);
6566
}
6667

67-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
68+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.BooleanExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
69+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
6870
static boolean isolatedConstantHandleTargetsEqual(@SuppressWarnings("unused") ClientIsolateThread client, ClientHandle<?> x, ClientHandle<?> y) {
6971
return IsolatedCompileClient.get().unhand(x) == IsolatedCompileClient.get().unhand(y);
7072
}
7173

72-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
74+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.BooleanExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
75+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
7376
private static boolean isolatedHandleTargetEqualImageObject(@SuppressWarnings("unused") ClientIsolateThread client, ClientHandle<?> x, ImageHeapRef<?> y) {
7477
return IsolatedCompileClient.get().unhand(x) == ImageHeapObjects.deref(y);
7578
}

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedCompileClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ public CompilerHandle<String> createStringInCompiler(String s) {
131131
}
132132
}
133133

134-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
134+
@CEntryPoint(exceptionHandler = IsolatedCompileContext.WordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
135+
@CEntryPointOptions(callerEpilogue = IsolatedCompileContext.ExceptionRethrowCallerEpilogue.class)
135136
private static CompilerHandle<String> createStringInCompiler0(@SuppressWarnings("unused") CompilerIsolateThread compiler, CCharPointer cstr) {
136137
return IsolatedCompileContext.get().hand(CTypeConversion.toJavaString(cstr));
137138
}

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedCompileContext.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,14 @@ public ClientHandle<String[]> createStringArrayInClient(String[] array) {
147147
}
148148
}
149149

150-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
150+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.WordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
151+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
151152
private static ClientHandle<String> createStringInClient0(@SuppressWarnings("unused") ClientIsolateThread client, CCharPointer cstr) {
152153
return IsolatedCompileClient.get().hand(CTypeConversion.toJavaString(cstr));
153154
}
154155

155-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
156+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.WordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
157+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
156158
private static ClientHandle<String[]> createStringArrayInClient0(@SuppressWarnings("unused") ClientIsolateThread client, int length, CCharPointerPointer ptrs) {
157159
String[] array = new String[length];
158160
for (int i = 0; i < length; i++) {

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedGraalUtils.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,18 @@
4343
import org.graalvm.nativeimage.c.function.CEntryPoint;
4444
import org.graalvm.nativeimage.c.type.CTypeConversion;
4545
import org.graalvm.word.PointerBase;
46+
import org.graalvm.word.WordBase;
4647
import org.graalvm.word.WordFactory;
48+
import org.graalvm.compiler.code.CompilationResult;
49+
import org.graalvm.compiler.debug.DebugContext;
50+
import org.graalvm.compiler.debug.DebugContext.Builder;
51+
import org.graalvm.compiler.debug.DebugOptions;
52+
import org.graalvm.compiler.options.OptionKey;
53+
import org.graalvm.compiler.options.OptionsParser;
54+
import org.graalvm.compiler.printer.GraalDebugHandlersFactory;
4755

4856
import com.oracle.svm.core.SubstrateOptions;
57+
import com.oracle.svm.core.c.function.CEntryPointOptions;
4958
import com.oracle.svm.core.c.function.IsolateSupportImpl;
5059
import com.oracle.svm.core.deopt.SubstrateInstalledCode;
5160
import com.oracle.svm.core.handles.PrimitiveArrayView;
@@ -200,28 +209,35 @@ private static void initializeCompilationIsolate(CompilerIsolateThread isolate)
200209
}
201210
}
202211

203-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
212+
@CEntryPoint(exceptionHandler = IsolatedCompileContext.VoidExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
213+
@CEntryPointOptions(callerEpilogue = IsolatedCompileContext.ExceptionRethrowCallerEpilogue.class)
204214
private static void initializeCompilationIsolate0(
205215
@SuppressWarnings("unused") @CEntryPoint.IsolateThreadContext CompilerIsolateThread isolate, PointerBase runtimeOptions, int runtimeOptionsLength) {
206216
applyClientRuntimeOptionValues(runtimeOptions, runtimeOptionsLength);
207217
VMRuntime.initialize();
208218
}
209219

210220
public static InstalledCode compileInNewIsolateAndInstall(SubstrateMethod method) {
221+
InstalledCode installedCode;
211222
CompilerIsolateThread context = createCompilationIsolate();
212223
IsolatedCompileClient.set(new IsolatedCompileClient(context));
213-
ClientHandle<SubstrateInstalledCode> installedCodeHandle = compileInNewIsolateAndInstall0(context, (ClientIsolateThread) CurrentIsolate.getCurrentThread(), ImageHeapObjects.ref(method));
214-
Isolates.tearDownIsolate(context);
215-
InstalledCode installedCode = (InstalledCode) IsolatedCompileClient.get().unhand(installedCodeHandle);
216-
IsolatedCompileClient.set(null);
224+
try {
225+
ClientHandle<SubstrateInstalledCode> installedCodeHandle = compileInNewIsolateAndInstall0(context, (ClientIsolateThread) CurrentIsolate.getCurrentThread(), ImageHeapObjects.ref(method));
226+
Isolates.tearDownIsolate(context);
227+
installedCode = (InstalledCode) IsolatedCompileClient.get().unhand(installedCodeHandle);
228+
} finally {
229+
IsolatedCompileClient.set(null);
230+
}
217231
return installedCode;
218232
}
219233

220-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
234+
@CEntryPoint(exceptionHandler = IsolatedCompileContext.ResetContextWordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
235+
@CEntryPointOptions(epilogue = IsolatedCompileContext.ExitCompilationEpilogue.class, callerEpilogue = IsolatedCompileContext.ExceptionRethrowCallerEpilogue.class)
221236
private static ClientHandle<SubstrateInstalledCode> compileInNewIsolateAndInstall0(
222237
@SuppressWarnings("unused") @CEntryPoint.IsolateThreadContext CompilerIsolateThread isolate, ClientIsolateThread clientIsolate, ImageHeapRef<SubstrateMethod> methodRef) {
223238

224239
IsolatedCompileContext.set(new IsolatedCompileContext(clientIsolate));
240+
// The context is cleared in the CEntryPointOptions.epilogue (also in case of an exception)
225241

226242
SubstrateMethod method = ImageHeapObjects.deref(methodRef);
227243
DebugContext debug = new Builder(RuntimeOptionValues.singleton(), new GraalDebugHandlersFactory(GraalSupport.getRuntimeConfig().getSnippetReflection())).build();
@@ -230,33 +246,39 @@ private static ClientHandle<SubstrateInstalledCode> compileInNewIsolateAndInstal
230246
methodRef, compilationResult, IsolatedHandles.nullHandle());
231247
Log.log().string("Code for " + method.format("%H.%n(%p)") + ": " + compilationResult.getTargetCodeSize() + " bytes").newline();
232248

233-
IsolatedCompileContext.set(null);
234249
return installedCodeHandle;
235250
}
236251

237252
public static void compileInNewIsolate(SubstrateMethod method) {
238253
if (SubstrateOptions.shouldCompileInIsolates()) {
239254
CompilerIsolateThread context = createCompilationIsolate();
240255
IsolatedCompileClient.set(new IsolatedCompileClient(context));
241-
compileInNewIsolate0(context, (ClientIsolateThread) CurrentIsolate.getCurrentThread(), ImageHeapObjects.ref(method));
242-
Isolates.tearDownIsolate(context);
243-
IsolatedCompileClient.set(null);
256+
try {
257+
compileInNewIsolate0(context, (ClientIsolateThread) CurrentIsolate.getCurrentThread(), ImageHeapObjects.ref(method));
258+
Isolates.tearDownIsolate(context);
259+
} finally {
260+
IsolatedCompileClient.set(null);
261+
}
244262
} else {
245263
try (DebugContext debug = new Builder(RuntimeOptionValues.singleton(), new GraalDebugHandlersFactory(GraalSupport.getRuntimeConfig().getSnippetReflection())).build()) {
246264
SubstrateGraalUtils.compile(debug, method);
247265
}
248266
}
249267
}
250268

251-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
252-
private static void compileInNewIsolate0(
269+
@CEntryPoint(exceptionHandler = IsolatedCompileContext.ResetContextWordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
270+
@CEntryPointOptions(epilogue = IsolatedCompileContext.ExitCompilationEpilogue.class, callerEpilogue = IsolatedCompileContext.ExceptionRethrowCallerEpilogue.class)
271+
private static WordBase compileInNewIsolate0(
253272
@SuppressWarnings("unused") @CEntryPoint.IsolateThreadContext CompilerIsolateThread isolate, ClientIsolateThread clientIsolate, ImageHeapRef<SubstrateMethod> methodRef) {
254273

255274
IsolatedCompileContext.set(new IsolatedCompileContext(clientIsolate));
275+
// The context is cleared in the CEntryPointOptions.epilogue (also in case of an exception)
276+
256277
try (DebugContext debug = new Builder(RuntimeOptionValues.singleton(), new GraalDebugHandlersFactory(GraalSupport.getRuntimeConfig().getSnippetReflection())).build()) {
257278
SubstrateGraalUtils.doCompile(debug, GraalSupport.getRuntimeConfig(), GraalSupport.getLIRSuites(), ImageHeapObjects.deref(methodRef));
258279
}
259-
IsolatedCompileContext.set(null);
280+
281+
return WordFactory.zero();
260282
}
261283

262284
private static byte[] encodeNonNativeImageRuntimeOptionValues() {

substratevm/src/com.oracle.svm.graal/src/com/oracle/svm/graal/isolated/IsolatedObjectConstant.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.graalvm.nativeimage.c.function.CEntryPoint;
2828

2929
import com.oracle.svm.core.Uninterruptible;
30+
import com.oracle.svm.core.c.function.CEntryPointOptions;
3031
import com.oracle.svm.core.meta.SubstrateObjectConstant;
3132

3233
import jdk.vm.ci.meta.MetaAccessProvider;
@@ -62,7 +63,8 @@ private Class<?> getObjectClass() {
6263
return cachedClass;
6364
}
6465

65-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
66+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.WordExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
67+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
6668
private static ImageHeapRef<Class<?>> getObjectClass0(@SuppressWarnings("unused") ClientIsolateThread client, ClientHandle<?> h) {
6769
Object target = IsolatedCompileClient.get().unhand(h);
6870
return ImageHeapObjects.ref(target.getClass());
@@ -96,7 +98,8 @@ public int getIdentityHashCode() {
9698
return h;
9799
}
98100

99-
@CEntryPoint(include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
101+
@CEntryPoint(exceptionHandler = IsolatedCompileClient.IntExceptionHandler.class, include = CEntryPoint.NotIncludedAutomatically.class, publishAs = CEntryPoint.Publish.NotPublished)
102+
@CEntryPointOptions(callerEpilogue = IsolatedCompileClient.ExceptionRethrowCallerEpilogue.class)
100103
private static int getIdentityHashCode0(@SuppressWarnings("unused") ClientIsolateThread client, ClientHandle<?> h) {
101104
Object target = IsolatedCompileClient.get().unhand(h);
102105
return computeIdentityHashCode(target);

0 commit comments

Comments
 (0)