Search in sources :

Example 1 with SubstrateMetaAccessExtensionProvider

use of com.oracle.svm.core.graal.code.SubstrateMetaAccessExtensionProvider in project graal by oracle.

the class SharedRuntimeConfigurationBuilder method build.

public SharedRuntimeConfigurationBuilder build() {
    EnumMap<ConfigKind, RegisterConfig> registerConfigs = new EnumMap<>(ConfigKind.class);
    for (ConfigKind config : ConfigKind.values()) {
        registerConfigs.put(config, ImageSingletons.lookup(SubstrateRegisterConfigFactory.class).newRegisterFactory(config, metaAccess, ConfigurationValues.getTarget(), SubstrateOptions.PreserveFramePointer.getValue()));
    }
    wordTypes = new SubstrateWordTypes(metaAccess, FrameAccess.getWordKind());
    Providers p = createProviders(null, null, null, null, null, null, null, null, null, null, null);
    StampProvider stampProvider = createStampProvider(p);
    p = createProviders(null, null, null, null, null, null, stampProvider, null, null, null, null);
    ConstantReflectionProvider constantReflection = createConstantReflectionProvider(p);
    p = createProviders(null, constantReflection, null, null, null, null, stampProvider, null, null, null, null);
    ConstantFieldProvider constantFieldProvider = createConstantFieldProvider(p);
    SnippetReflectionProvider snippetReflection = createSnippetReflectionProvider();
    ForeignCallsProvider foreignCalls = createForeignCallsProvider(registerConfigs.get(ConfigKind.NORMAL));
    p = createProviders(null, constantReflection, constantFieldProvider, foreignCalls, null, null, stampProvider, snippetReflection, null, null, null);
    BarrierSet barrierSet = ImageSingletons.lookup(Heap.class).createBarrierSet(metaAccess);
    PlatformConfigurationProvider platformConfig = new SubstratePlatformConfigurationProvider(barrierSet);
    MetaAccessExtensionProvider metaAccessExtensionProvider = new SubstrateMetaAccessExtensionProvider();
    p = createProviders(null, constantReflection, constantFieldProvider, foreignCalls, null, null, stampProvider, snippetReflection, platformConfig, metaAccessExtensionProvider, null);
    LoweringProvider lowerer = createLoweringProvider(p);
    p = createProviders(null, constantReflection, constantFieldProvider, foreignCalls, lowerer, null, stampProvider, snippetReflection, platformConfig, metaAccessExtensionProvider, null);
    Replacements replacements = createReplacements(p, snippetReflection);
    p = createProviders(null, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, stampProvider, snippetReflection, platformConfig, metaAccessExtensionProvider, null);
    LoopsDataProvider loopsDataProvider = originalLoopsDataProvider;
    p = createProviders(null, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, stampProvider, snippetReflection, platformConfig, metaAccessExtensionProvider, loopsDataProvider);
    EnumMap<ConfigKind, SubstrateBackend> backends = new EnumMap<>(ConfigKind.class);
    for (ConfigKind config : ConfigKind.values()) {
        CodeCacheProvider codeCacheProvider = createCodeCacheProvider(registerConfigs.get(config));
        Providers newProviders = createProviders(codeCacheProvider, constantReflection, constantFieldProvider, foreignCalls, lowerer, replacements, stampProvider, snippetReflection, platformConfig, metaAccessExtensionProvider, loopsDataProvider);
        backends.put(config, GraalConfiguration.runtimeInstance().createBackend(newProviders));
    }
    runtimeConfig = new RuntimeConfiguration(p, snippetReflection, backends, wordTypes);
    return this;
}
Also used : ForeignCallsProvider(org.graalvm.compiler.core.common.spi.ForeignCallsProvider) SubstrateForeignCallsProvider(com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider) SubstratePlatformConfigurationProvider(com.oracle.svm.core.graal.code.SubstratePlatformConfigurationProvider) RegisterConfig(jdk.vm.ci.code.RegisterConfig) SubstrateStampProvider(com.oracle.svm.core.graal.meta.SubstrateStampProvider) StampProvider(org.graalvm.compiler.nodes.spi.StampProvider) Replacements(org.graalvm.compiler.nodes.spi.Replacements) ConfigKind(com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind) SubstrateLoweringProvider(com.oracle.svm.core.graal.meta.SubstrateLoweringProvider) LoweringProvider(org.graalvm.compiler.nodes.spi.LoweringProvider) Providers(org.graalvm.compiler.phases.util.Providers) SubstrateBackend(com.oracle.svm.core.graal.code.SubstrateBackend) CodeCacheProvider(jdk.vm.ci.code.CodeCacheProvider) SubstrateWordTypes(com.oracle.svm.core.graal.word.SubstrateWordTypes) Heap(com.oracle.svm.core.heap.Heap) RuntimeConfiguration(com.oracle.svm.core.graal.meta.RuntimeConfiguration) SubstrateMetaAccessExtensionProvider(com.oracle.svm.core.graal.code.SubstrateMetaAccessExtensionProvider) MetaAccessExtensionProvider(org.graalvm.compiler.core.common.spi.MetaAccessExtensionProvider) BarrierSet(org.graalvm.compiler.nodes.gc.BarrierSet) SubstrateMetaAccessExtensionProvider(com.oracle.svm.core.graal.code.SubstrateMetaAccessExtensionProvider) SnippetReflectionProvider(org.graalvm.compiler.api.replacements.SnippetReflectionProvider) SubstrateSnippetReflectionProvider(com.oracle.svm.core.graal.meta.SubstrateSnippetReflectionProvider) LoopsDataProvider(org.graalvm.compiler.nodes.spi.LoopsDataProvider) ConstantReflectionProvider(jdk.vm.ci.meta.ConstantReflectionProvider) EnumMap(java.util.EnumMap) ConstantFieldProvider(org.graalvm.compiler.core.common.spi.ConstantFieldProvider) PlatformConfigurationProvider(org.graalvm.compiler.nodes.spi.PlatformConfigurationProvider) SubstratePlatformConfigurationProvider(com.oracle.svm.core.graal.code.SubstratePlatformConfigurationProvider)

Aggregations

SubstrateBackend (com.oracle.svm.core.graal.code.SubstrateBackend)1 SubstrateMetaAccessExtensionProvider (com.oracle.svm.core.graal.code.SubstrateMetaAccessExtensionProvider)1 SubstratePlatformConfigurationProvider (com.oracle.svm.core.graal.code.SubstratePlatformConfigurationProvider)1 RuntimeConfiguration (com.oracle.svm.core.graal.meta.RuntimeConfiguration)1 SubstrateForeignCallsProvider (com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider)1 SubstrateLoweringProvider (com.oracle.svm.core.graal.meta.SubstrateLoweringProvider)1 ConfigKind (com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind)1 SubstrateSnippetReflectionProvider (com.oracle.svm.core.graal.meta.SubstrateSnippetReflectionProvider)1 SubstrateStampProvider (com.oracle.svm.core.graal.meta.SubstrateStampProvider)1 SubstrateWordTypes (com.oracle.svm.core.graal.word.SubstrateWordTypes)1 Heap (com.oracle.svm.core.heap.Heap)1 EnumMap (java.util.EnumMap)1 CodeCacheProvider (jdk.vm.ci.code.CodeCacheProvider)1 RegisterConfig (jdk.vm.ci.code.RegisterConfig)1 ConstantReflectionProvider (jdk.vm.ci.meta.ConstantReflectionProvider)1 SnippetReflectionProvider (org.graalvm.compiler.api.replacements.SnippetReflectionProvider)1 ConstantFieldProvider (org.graalvm.compiler.core.common.spi.ConstantFieldProvider)1 ForeignCallsProvider (org.graalvm.compiler.core.common.spi.ForeignCallsProvider)1 MetaAccessExtensionProvider (org.graalvm.compiler.core.common.spi.MetaAccessExtensionProvider)1 BarrierSet (org.graalvm.compiler.nodes.gc.BarrierSet)1