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.nodes.spi.Replacements; |
53 import org.graalvm.compiler.nodes.spi.Replacements; |
53 import org.graalvm.compiler.options.OptionValues; |
54 import org.graalvm.compiler.options.OptionValues; |
54 import org.graalvm.compiler.phases.tiers.CompilerConfiguration; |
55 import org.graalvm.compiler.phases.tiers.CompilerConfiguration; |
55 import org.graalvm.compiler.phases.util.Providers; |
56 import org.graalvm.compiler.phases.util.Providers; |
56 import org.graalvm.compiler.replacements.amd64.AMD64GraphBuilderPlugins; |
57 import org.graalvm.compiler.replacements.amd64.AMD64GraphBuilderPlugins; |
135 } |
136 } |
136 try (InitTimer rt = timer("create Replacements provider")) { |
137 try (InitTimer rt = timer("create Replacements provider")) { |
137 replacements = createReplacements(options, p, snippetReflection, bytecodeProvider); |
138 replacements = createReplacements(options, p, snippetReflection, bytecodeProvider); |
138 } |
139 } |
139 try (InitTimer rt = timer("create GraphBuilderPhase plugins")) { |
140 try (InitTimer rt = timer("create GraphBuilderPhase plugins")) { |
140 plugins = createGraphBuilderPlugins(compilerConfiguration, config, options, target, constantReflection, foreignCalls, metaAccess, snippetReflection, replacements, wordTypes, |
141 plugins = createGraphBuilderPlugins(compilerConfiguration, config, options, target, constantReflection, foreignCalls, lowerer, metaAccess, snippetReflection, replacements, wordTypes, |
141 stampProvider); |
142 stampProvider); |
142 replacements.setGraphBuilderPlugins(plugins); |
143 replacements.setGraphBuilderPlugins(plugins); |
143 } |
144 } |
144 try (InitTimer rt = timer("create Suites provider")) { |
145 try (InitTimer rt = timer("create Suites provider")) { |
145 suites = createSuites(config, graalRuntime, compilerConfiguration, plugins, registers, replacements, options); |
146 suites = createSuites(config, graalRuntime, compilerConfiguration, plugins, registers, replacements, options); |
152 return createBackend(config, graalRuntime, providers); |
153 return createBackend(config, graalRuntime, providers); |
153 } |
154 } |
154 } |
155 } |
155 |
156 |
156 protected Plugins createGraphBuilderPlugins(CompilerConfiguration compilerConfiguration, GraalHotSpotVMConfig config, OptionValues options, TargetDescription target, |
157 protected Plugins createGraphBuilderPlugins(CompilerConfiguration compilerConfiguration, GraalHotSpotVMConfig config, OptionValues options, TargetDescription target, |
157 HotSpotConstantReflectionProvider constantReflection, HotSpotHostForeignCallsProvider foreignCalls, HotSpotMetaAccessProvider metaAccess, |
158 HotSpotConstantReflectionProvider constantReflection, HotSpotHostForeignCallsProvider foreignCalls, LoweringProvider lowerer, HotSpotMetaAccessProvider metaAccess, |
158 HotSpotSnippetReflectionProvider snippetReflection, HotSpotReplacementsImpl replacements, HotSpotWordTypes wordTypes, HotSpotStampProvider stampProvider) { |
159 HotSpotSnippetReflectionProvider snippetReflection, HotSpotReplacementsImpl replacements, HotSpotWordTypes wordTypes, HotSpotStampProvider stampProvider) { |
159 Plugins plugins = HotSpotGraphBuilderPlugins.create(compilerConfiguration, config, wordTypes, metaAccess, constantReflection, snippetReflection, foreignCalls, stampProvider, replacements); |
160 Plugins plugins = HotSpotGraphBuilderPlugins.create(compilerConfiguration, config, wordTypes, metaAccess, constantReflection, snippetReflection, foreignCalls, lowerer, stampProvider, |
|
161 replacements); |
160 AMD64GraphBuilderPlugins.register(plugins, replacements.getDefaultReplacementBytecodeProvider(), (AMD64) target.arch, GraalArithmeticStubs.getValue(options)); |
162 AMD64GraphBuilderPlugins.register(plugins, replacements.getDefaultReplacementBytecodeProvider(), (AMD64) target.arch, GraalArithmeticStubs.getValue(options)); |
161 return plugins; |
163 return plugins; |
162 } |
164 } |
163 |
165 |
164 protected AMD64HotSpotBackend createBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers) { |
166 protected AMD64HotSpotBackend createBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers) { |