diff -r 0152ad7b38b8 -r 6df94ce3ab2f src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/SymbolicSnippetEncoder.java --- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/SymbolicSnippetEncoder.java Tue Sep 24 08:54:08 2019 -0700 +++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/SymbolicSnippetEncoder.java Tue Sep 24 12:47:15 2019 -0400 @@ -345,7 +345,7 @@ IntrinsicContext.CompilationContext context, EncodedGraph encodedGraph) { super(providers.getCodeCache().getTarget().arch, result, providers, null, replacements.getGraphBuilderPlugins().getInvocationPlugins(), new InlineInvokePlugin[0], parameterPlugin, - null, null, null); + null, null, null, null); this.method = method; this.encodedGraph = encodedGraph; intrinsic = new IntrinsicContext(method, null, replacements.getDefaultReplacementBytecodeProvider(), context, false); @@ -790,7 +790,11 @@ @Override public JavaConstant readFieldValue(ResolvedJavaField field, JavaConstant receiver) { JavaConstant javaConstant = constantReflection.readFieldValue(field, receiver); - if (!safeConstants.contains(receiver) && !field.getDeclaringClass().getName().contains("graalvm") && !field.getDeclaringClass().getName().contains("jdk/vm/ci/") && + if (!safeConstants.contains(receiver) && + !field.getDeclaringClass().getName().contains("graalvm") && + !field.getDeclaringClass().getName().contains("jdk/vm/ci/") && + !field.getDeclaringClass().getName().contains("jdk/internal/vm/compiler") && + !field.getName().equals("TYPE")) { // Only permit constant reflection on compiler classes. This is necessary primarily // because of the boxing snippets which are compiled as snippets but are really just @@ -1045,7 +1049,7 @@ public boolean canDeferPlugin(GeneratedInvocationPlugin plugin) { // Fold is always deferred but NodeIntrinsics may have to wait if all their arguments // aren't constant yet. - return plugin.getSource().equals(Fold.class) || plugin.getSource().equals(Node.NodeIntrinsic.class); + return plugin.isGeneratedFromFoldOrNodeIntrinsic(); } @Override