< 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 >