< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/SymbolicSnippetEncoder.java
Print this page
rev 56282 : [mq]: graal
*** 343,353 ****
SubstitutionGraphDecoder(Providers providers, StructuredGraph result, ReplacementsImpl replacements, ParameterPlugin parameterPlugin, ResolvedJavaMethod method,
IntrinsicContext.CompilationContext context, EncodedGraph encodedGraph) {
super(providers.getCodeCache().getTarget().arch, result, providers, null,
replacements.getGraphBuilderPlugins().getInvocationPlugins(), new InlineInvokePlugin[0], parameterPlugin,
! null, null, null);
this.method = method;
this.encodedGraph = encodedGraph;
intrinsic = new IntrinsicContext(method, null, replacements.getDefaultReplacementBytecodeProvider(), context, false);
}
--- 343,353 ----
SubstitutionGraphDecoder(Providers providers, StructuredGraph result, ReplacementsImpl replacements, ParameterPlugin parameterPlugin, ResolvedJavaMethod method,
IntrinsicContext.CompilationContext context, EncodedGraph encodedGraph) {
super(providers.getCodeCache().getTarget().arch, result, providers, null,
replacements.getGraphBuilderPlugins().getInvocationPlugins(), new InlineInvokePlugin[0], parameterPlugin,
! null, null, null, null);
this.method = method;
this.encodedGraph = encodedGraph;
intrinsic = new IntrinsicContext(method, null, replacements.getDefaultReplacementBytecodeProvider(), context, false);
}
*** 788,798 ****
}
@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/") &&
!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
// regular JDK java sources that are being compiled like a snippet. These shouldn't
// permit constant folding during graph preparation as that embeds constants from
--- 788,802 ----
}
@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/") &&
! !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
// regular JDK java sources that are being compiled like a snippet. These shouldn't
// permit constant folding during graph preparation as that embeds constants from
*** 1043,1053 ****
@Override
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);
}
@Override
protected boolean canInlinePartialIntrinsicExit() {
return false;
--- 1047,1057 ----
@Override
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.isGeneratedFromFoldOrNodeIntrinsic();
}
@Override
protected boolean canInlinePartialIntrinsicExit() {
return false;
< prev index next >