From 44c1201daf5b76849718c1d6d8db38b37521a234 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Thu, 19 Jan 2023 13:50:55 +0200 Subject: [PATCH] WIP: Make java.lang.Thread.ensureMaterializedForStackWalk intrinsic We still need to force its argument to be materialized. --- .../replacements/StandardGraphBuilderPlugins.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java index 3cfcfb40ca2ff..739179a9ffd38 100644 --- a/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java +++ b/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java @@ -241,6 +241,7 @@ public static void registerInvocationPlugins(SnippetReflectionProvider snippetRe registerMethodHandleImplPlugins(plugins, replacements); registerPreconditionsPlugins(plugins, replacements); registerJcovCollectPlugins(plugins, replacements); + registerThreadPlugin(plugins, replacements); if (supportsStubBasedPlugins) { registerArraysPlugins(plugins, replacements); @@ -2282,4 +2283,15 @@ public SnippetTemplate.SnippetInfo getSnippet(BigIntegerSnippets.Templates templ } }); } + + private static void registerThreadPlugin(InvocationPlugins plugins, Replacements replacements) { + Registration r = new Registration(plugins, "java.lang.Thread", replacements); + r.register(new InvocationPlugin("ensureMaterializedForStackWalk", Object.class) { + @Override + public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode object) { + // TODO: make sure object is "materialized" or considered "escaped" + return true; + } + }); + } }