/** * Compiles a method denoted as a * {@linkplain HotSpotTruffleCompilerRuntime#getTruffleCallBoundaryMethods() Truffle call * boundary}. The compiled code has a special entry point generated by an * {@link TruffleCallBoundaryInstrumentationFactory}. */ private CompilationResult compileTruffleCallBoundaryMethod(ResolvedJavaMethod javaMethod, CompilationIdentifier compilationId, DebugContext debug) { Suites newSuites = this.lastTierSuites.copy(); removeInliningPhase(newSuites); OptionValues options = TruffleCompilerOptions.getOptions(); StructuredGraph graph = new StructuredGraph.Builder(options, debug, AllowAssumptions.NO).method(javaMethod).compilationId(compilationId).build(); MetaAccessProvider metaAccess = lastTierProviders.getMetaAccess(); Plugins plugins = new Plugins(new InvocationPlugins()); HotSpotCodeCacheProvider codeCache = (HotSpotCodeCacheProvider) lastTierProviders.getCodeCache(); boolean infoPoints = codeCache.shouldDebugNonSafepoints(); GraphBuilderConfiguration newConfig = GraphBuilderConfiguration.getDefault(plugins).withEagerResolving(true).withUnresolvedIsError(true).withNodeSourcePosition(infoPoints); new GraphBuilderPhase.Instance(metaAccess, lastTierProviders.getStampProvider(), lastTierProviders.getConstantReflection(), lastTierProviders.getConstantFieldProvider(), newConfig, OptimisticOptimizations.ALL, null).apply(graph); PhaseSuite<HighTierContext> graphBuilderSuite = getGraphBuilderSuite(codeCache, backend.getSuites()); CompilationResultBuilderFactory factory = getTruffleCallBoundaryInstrumentationFactory(backend.getTarget().arch.getName()); return compileGraph(graph, javaMethod, lastTierProviders, backend, graphBuilderSuite, OptimisticOptimizations.ALL, graph.getProfilingInfo(), newSuites, lastTierLirSuites, new CompilationResult(compilationId), factory, false); }
.withUnresolvedIsError(PointstoOptions.UnresolvedIsError.getValue(bb.getOptions())) .withNodeSourcePosition(true).withBytecodeExceptionMode(BytecodeExceptionMode.CheckAll); bb.getHostVM().createGraphBuilderPhase(bb.getProviders(), config, OptimisticOptimizations.NONE, null).apply(graph);