< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotInvocationPlugins.java
Print this page
rev 56282 : [mq]: graal
*** 1,7 ****
/*
! * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 28,40 ****
--- 28,42 ----
import java.lang.reflect.Type;
import java.util.function.Predicate;
import org.graalvm.compiler.core.common.GraalOptions;
+ import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.graph.Node;
import org.graalvm.compiler.graph.iterators.NodeIterable;
import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
+ import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
import org.graalvm.compiler.hotspot.phases.AheadOfTimeVerificationPhase;
import org.graalvm.compiler.nodes.ConstantNode;
import org.graalvm.compiler.nodes.FrameState;
import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;
import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;
*** 48,61 ****
/**
* Extension of {@link InvocationPlugins} that disables plugins based on runtime configuration.
*/
final class HotSpotInvocationPlugins extends InvocationPlugins {
private final GraalHotSpotVMConfig config;
private final Predicate<ResolvedJavaType> intrinsificationPredicate;
! HotSpotInvocationPlugins(GraalHotSpotVMConfig config, CompilerConfiguration compilerConfiguration) {
this.config = config;
this.intrinsificationPredicate = runtime().getIntrinsificationTrustPredicate(compilerConfiguration.getClass());
}
@Override
--- 50,65 ----
/**
* Extension of {@link InvocationPlugins} that disables plugins based on runtime configuration.
*/
final class HotSpotInvocationPlugins extends InvocationPlugins {
+ private final HotSpotGraalRuntimeProvider graalRuntime;
private final GraalHotSpotVMConfig config;
private final Predicate<ResolvedJavaType> intrinsificationPredicate;
! HotSpotInvocationPlugins(HotSpotGraalRuntimeProvider graalRuntime, GraalHotSpotVMConfig config, CompilerConfiguration compilerConfiguration) {
! this.graalRuntime = graalRuntime;
this.config = config;
this.intrinsificationPredicate = runtime().getIntrinsificationTrustPredicate(compilerConfiguration.getClass());
}
@Override
*** 104,111 ****
return type != null && "Ljava/lang/Class;".equals(type.getName());
}
@Override
public boolean canBeIntrinsified(ResolvedJavaType declaringClass) {
! return intrinsificationPredicate.test(declaringClass);
}
}
--- 108,122 ----
return type != null && "Ljava/lang/Class;".equals(type.getName());
}
@Override
public boolean canBeIntrinsified(ResolvedJavaType declaringClass) {
! if (!intrinsificationPredicate.test(declaringClass)) {
! if (graalRuntime.isBootstrapping()) {
! throw GraalError.shouldNotReachHere("Class declaring a method for which a Graal intrinsic is available should be trusted for intrinsification: " + declaringClass.toJavaName());
! }
! return false;
! }
! return true;
!
}
}
< prev index next >