47 import org.graalvm.compiler.hotspot.meta.HotSpotSnippetReflectionProvider; |
47 import org.graalvm.compiler.hotspot.meta.HotSpotSnippetReflectionProvider; |
48 import org.graalvm.compiler.hotspot.meta.HotSpotStampProvider; |
48 import org.graalvm.compiler.hotspot.meta.HotSpotStampProvider; |
49 import org.graalvm.compiler.hotspot.meta.HotSpotSuitesProvider; |
49 import org.graalvm.compiler.hotspot.meta.HotSpotSuitesProvider; |
50 import org.graalvm.compiler.hotspot.word.HotSpotWordTypes; |
50 import org.graalvm.compiler.hotspot.word.HotSpotWordTypes; |
51 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins; |
51 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins; |
|
52 import org.graalvm.compiler.nodes.spi.LoweringProvider; |
52 import org.graalvm.compiler.options.OptionValues; |
53 import org.graalvm.compiler.options.OptionValues; |
53 import org.graalvm.compiler.phases.tiers.CompilerConfiguration; |
54 import org.graalvm.compiler.phases.tiers.CompilerConfiguration; |
54 import org.graalvm.compiler.phases.util.Providers; |
55 import org.graalvm.compiler.phases.util.Providers; |
55 import org.graalvm.compiler.replacements.aarch64.AArch64GraphBuilderPlugins; |
56 import org.graalvm.compiler.replacements.aarch64.AArch64GraphBuilderPlugins; |
56 import org.graalvm.compiler.replacements.classfile.ClassfileBytecodeProvider; |
57 import org.graalvm.compiler.replacements.classfile.ClassfileBytecodeProvider; |
134 } |
135 } |
135 try (InitTimer rt = timer("create Replacements provider")) { |
136 try (InitTimer rt = timer("create Replacements provider")) { |
136 replacements = createReplacements(graalRuntime.getOptions(), p, snippetReflection, bytecodeProvider); |
137 replacements = createReplacements(graalRuntime.getOptions(), p, snippetReflection, bytecodeProvider); |
137 } |
138 } |
138 try (InitTimer rt = timer("create GraphBuilderPhase plugins")) { |
139 try (InitTimer rt = timer("create GraphBuilderPhase plugins")) { |
139 plugins = createGraphBuilderPlugins(compilerConfiguration, config, constantReflection, foreignCalls, metaAccess, snippetReflection, replacements, wordTypes, stampProvider); |
140 plugins = createGraphBuilderPlugins(compilerConfiguration, config, constantReflection, foreignCalls, lowerer, metaAccess, snippetReflection, replacements, wordTypes, stampProvider); |
140 replacements.setGraphBuilderPlugins(plugins); |
141 replacements.setGraphBuilderPlugins(plugins); |
141 } |
142 } |
142 try (InitTimer rt = timer("create Suites provider")) { |
143 try (InitTimer rt = timer("create Suites provider")) { |
143 suites = createSuites(config, graalRuntime, compilerConfiguration, plugins); |
144 suites = createSuites(config, graalRuntime, compilerConfiguration, plugins); |
144 } |
145 } |
150 return createBackend(config, graalRuntime, providers); |
151 return createBackend(config, graalRuntime, providers); |
151 } |
152 } |
152 } |
153 } |
153 |
154 |
154 protected Plugins createGraphBuilderPlugins(CompilerConfiguration compilerConfiguration, GraalHotSpotVMConfig config, HotSpotConstantReflectionProvider constantReflection, |
155 protected Plugins createGraphBuilderPlugins(CompilerConfiguration compilerConfiguration, GraalHotSpotVMConfig config, HotSpotConstantReflectionProvider constantReflection, |
155 HotSpotHostForeignCallsProvider foreignCalls, HotSpotMetaAccessProvider metaAccess, HotSpotSnippetReflectionProvider snippetReflection, HotSpotReplacementsImpl replacements, |
156 HotSpotHostForeignCallsProvider foreignCalls, LoweringProvider lowerer, HotSpotMetaAccessProvider metaAccess, HotSpotSnippetReflectionProvider snippetReflection, |
156 HotSpotWordTypes wordTypes, HotSpotStampProvider stampProvider) { |
157 HotSpotReplacementsImpl replacements, HotSpotWordTypes wordTypes, HotSpotStampProvider stampProvider) { |
157 Plugins plugins = HotSpotGraphBuilderPlugins.create(compilerConfiguration, config, wordTypes, metaAccess, constantReflection, snippetReflection, foreignCalls, stampProvider, replacements); |
158 Plugins plugins = HotSpotGraphBuilderPlugins.create(compilerConfiguration, config, wordTypes, metaAccess, constantReflection, snippetReflection, foreignCalls, lowerer, stampProvider, |
|
159 replacements); |
158 AArch64GraphBuilderPlugins.register(plugins, replacements.getDefaultReplacementBytecodeProvider()); |
160 AArch64GraphBuilderPlugins.register(plugins, replacements.getDefaultReplacementBytecodeProvider()); |
159 return plugins; |
161 return plugins; |
160 } |
162 } |
161 |
163 |
162 protected AArch64HotSpotBackend createBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers) { |
164 protected AArch64HotSpotBackend createBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers) { |