src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotBackendFactory.java
changeset 58877 aec7bf35d6f5
parent 58533 46b0b7fe255c
equal deleted inserted replaced
58876:1a8d65e71a66 58877:aec7bf35d6f5
    98     @Override
    98     @Override
    99     @SuppressWarnings("try")
    99     @SuppressWarnings("try")
   100     public HotSpotBackend createBackend(HotSpotGraalRuntimeProvider graalRuntime, CompilerConfiguration compilerConfiguration, HotSpotJVMCIRuntime jvmciRuntime, HotSpotBackend host) {
   100     public HotSpotBackend createBackend(HotSpotGraalRuntimeProvider graalRuntime, CompilerConfiguration compilerConfiguration, HotSpotJVMCIRuntime jvmciRuntime, HotSpotBackend host) {
   101         assert host == null;
   101         assert host == null;
   102 
   102 
       
   103         OptionValues options = graalRuntime.getOptions();
   103         JVMCIBackend jvmci = jvmciRuntime.getHostJVMCIBackend();
   104         JVMCIBackend jvmci = jvmciRuntime.getHostJVMCIBackend();
   104         GraalHotSpotVMConfig config = graalRuntime.getVMConfig();
   105         GraalHotSpotVMConfig config = graalRuntime.getVMConfig();
   105         HotSpotProviders providers;
   106         HotSpotProviders providers;
   106         HotSpotRegistersProvider registers;
   107         HotSpotRegistersProvider registers;
   107         HotSpotCodeCacheProvider codeCache = (HotSpotCodeCacheProvider) jvmci.getCodeCache();
   108         HotSpotCodeCacheProvider codeCache = (HotSpotCodeCacheProvider) jvmci.getCodeCache();
   154             try (InitTimer rt = timer("create Replacements provider")) {
   155             try (InitTimer rt = timer("create Replacements provider")) {
   155                 replacements = createReplacements(target, p, snippetReflection, bytecodeProvider);
   156                 replacements = createReplacements(target, p, snippetReflection, bytecodeProvider);
   156             }
   157             }
   157             try (InitTimer rt = timer("create GraphBuilderPhase plugins")) {
   158             try (InitTimer rt = timer("create GraphBuilderPhase plugins")) {
   158                 plugins = createGraphBuilderPlugins(graalRuntime, compilerConfiguration, config, constantReflection, foreignCalls, metaAccess, snippetReflection, replacements, wordTypes,
   159                 plugins = createGraphBuilderPlugins(graalRuntime, compilerConfiguration, config, constantReflection, foreignCalls, metaAccess, snippetReflection, replacements, wordTypes,
   159                                 graalRuntime.getOptions());
   160                                 graalRuntime.getOptions(), target);
   160                 replacements.setGraphBuilderPlugins(plugins);
   161                 replacements.setGraphBuilderPlugins(plugins);
   161             }
   162             }
   162             try (InitTimer rt = timer("create Suites provider")) {
   163             try (InitTimer rt = timer("create Suites provider")) {
   163                 suites = createSuites(config, graalRuntime, compilerConfiguration, plugins, replacements);
   164                 suites = createSuites(config, graalRuntime, compilerConfiguration, plugins, replacements);
   164             }
   165             }
   165             providers = new HotSpotProviders(metaAccess, codeCache, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, suites, registers,
   166             providers = new HotSpotProviders(metaAccess, codeCache, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, suites, registers,
   166                             snippetReflection, wordTypes, plugins, gc);
   167                             snippetReflection, wordTypes, plugins, gc);
   167             replacements.setProviders(providers);
   168             replacements.setProviders(providers);
       
   169             replacements.maybeInitializeEncoder(options);
   168         }
   170         }
   169         try (InitTimer rt = timer("instantiate backend")) {
   171         try (InitTimer rt = timer("instantiate backend")) {
   170             return createBackend(config, graalRuntime, providers);
   172             return createBackend(config, graalRuntime, providers);
   171         }
   173         }
   172     }
   174     }
   178                     HotSpotHostForeignCallsProvider foreignCalls,
   180                     HotSpotHostForeignCallsProvider foreignCalls,
   179                     HotSpotMetaAccessProvider metaAccess,
   181                     HotSpotMetaAccessProvider metaAccess,
   180                     HotSpotSnippetReflectionProvider snippetReflection,
   182                     HotSpotSnippetReflectionProvider snippetReflection,
   181                     HotSpotReplacementsImpl replacements,
   183                     HotSpotReplacementsImpl replacements,
   182                     HotSpotWordTypes wordTypes,
   184                     HotSpotWordTypes wordTypes,
   183                     OptionValues options) {
   185                     OptionValues options,
       
   186                     TargetDescription target) {
   184         Plugins plugins = HotSpotGraphBuilderPlugins.create(graalRuntime,
   187         Plugins plugins = HotSpotGraphBuilderPlugins.create(graalRuntime,
   185                         compilerConfiguration,
   188                         compilerConfiguration,
   186                         config,
   189                         config,
   187                         wordTypes,
   190                         wordTypes,
   188                         metaAccess,
   191                         metaAccess,
   189                         constantReflection,
   192                         constantReflection,
   190                         snippetReflection,
   193                         snippetReflection,
   191                         foreignCalls,
   194                         foreignCalls,
   192                         replacements,
   195                         replacements,
   193                         options);
   196                         options,
   194         AArch64GraphBuilderPlugins.register(plugins, replacements.getDefaultReplacementBytecodeProvider(), false,
   197                         target);
       
   198         AArch64GraphBuilderPlugins.register(plugins, replacements, false, //
   195                         /* registerMathPlugins */true, /* emitJDK9StringSubstitutions */true, config.useFMAIntrinsics);
   199                         /* registerMathPlugins */true, /* emitJDK9StringSubstitutions */true, config.useFMAIntrinsics);
   196         return plugins;
   200         return plugins;
   197     }
   201     }
   198 
   202 
   199     protected AArch64HotSpotBackend createBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers) {
   203     protected AArch64HotSpotBackend createBackend(GraalHotSpotVMConfig config, HotSpotGraalRuntimeProvider runtime, HotSpotProviders providers) {