Search in sources :

Example 1 with ConfigKind

use of com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind in project graal by oracle.

the class SubstrateAMD64Feature method afterRegistration.

@Override
public void afterRegistration(AfterRegistrationAccess access) {
    ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateRegisterConfigFactory() {

        @Override
        public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
            return new SubstrateAMD64RegisterConfig(config, metaAccess, target, preserveFramePointer);
        }
    });
    ImageSingletons.add(ReservedRegisters.class, new AMD64ReservedRegisters());
    if (!SubstrateOptions.useLLVMBackend()) {
        AMD64CalleeSavedRegisters.createAndRegister();
        ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateBackendFactory() {

            @Override
            public SubstrateBackend newBackend(Providers newProviders) {
                return new SubstrateAMD64Backend(newProviders);
            }
        });
        ImageSingletons.add(SubstrateLoweringProviderFactory.class, new SubstrateLoweringProviderFactory() {

            @Override
            public DefaultJavaLoweringProvider newLoweringProvider(MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, PlatformConfigurationProvider platformConfig, MetaAccessExtensionProvider metaAccessExtensionProvider, TargetDescription target) {
                return new SubstrateAMD64LoweringProvider(metaAccess, foreignCalls, platformConfig, metaAccessExtensionProvider, target);
            }
        });
        ImageSingletons.add(TargetGraphBuilderPlugins.class, new AMD64GraphBuilderPlugins());
        ImageSingletons.add(SubstrateSuitesCreatorProvider.class, new SubstrateAMD64SuitesCreatorProvider());
    }
}
Also used : ForeignCallsProvider(org.graalvm.compiler.core.common.spi.ForeignCallsProvider) RegisterConfig(jdk.vm.ci.code.RegisterConfig) AMD64GraphBuilderPlugins(org.graalvm.compiler.replacements.amd64.AMD64GraphBuilderPlugins) TargetDescription(jdk.vm.ci.code.TargetDescription) SubstrateBackendFactory(com.oracle.svm.core.graal.code.SubstrateBackendFactory) ConfigKind(com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind) Providers(org.graalvm.compiler.phases.util.Providers) SubstrateBackend(com.oracle.svm.core.graal.code.SubstrateBackend) MetaAccessExtensionProvider(org.graalvm.compiler.core.common.spi.MetaAccessExtensionProvider) SubstrateRegisterConfigFactory(com.oracle.svm.core.graal.code.SubstrateRegisterConfigFactory) DefaultJavaLoweringProvider(org.graalvm.compiler.replacements.DefaultJavaLoweringProvider) MetaAccessProvider(jdk.vm.ci.meta.MetaAccessProvider) SubstrateLoweringProviderFactory(com.oracle.svm.core.graal.code.SubstrateLoweringProviderFactory) PlatformConfigurationProvider(org.graalvm.compiler.nodes.spi.PlatformConfigurationProvider)

Example 2 with ConfigKind

use of com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind 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)

Example 3 with ConfigKind

use of com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind in project graal by oracle.

the class SubstrateAArch64Feature method afterRegistration.

@Override
public void afterRegistration(AfterRegistrationAccess access) {
    ImageSingletons.add(SubstrateRegisterConfigFactory.class, new SubstrateRegisterConfigFactory() {

        @Override
        public RegisterConfig newRegisterFactory(ConfigKind config, MetaAccessProvider metaAccess, TargetDescription target, Boolean preserveFramePointer) {
            return new SubstrateAArch64RegisterConfig(config, metaAccess, target, preserveFramePointer);
        }
    });
    ImageSingletons.add(ReservedRegisters.class, new AArch64ReservedRegisters());
    if (!SubstrateOptions.useLLVMBackend()) {
        AArch64CalleeSavedRegisters.createAndRegister();
        ImageSingletons.add(SubstrateBackendFactory.class, new SubstrateBackendFactory() {

            @Override
            public SubstrateBackend newBackend(Providers newProviders) {
                return new SubstrateAArch64Backend(newProviders);
            }
        });
        ImageSingletons.add(SubstrateLoweringProviderFactory.class, new SubstrateLoweringProviderFactory() {

            @Override
            public DefaultJavaLoweringProvider newLoweringProvider(MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, PlatformConfigurationProvider platformConfig, MetaAccessExtensionProvider metaAccessExtensionProvider, TargetDescription target) {
                return new SubstrateAArch64LoweringProvider(metaAccess, foreignCalls, platformConfig, metaAccessExtensionProvider, target);
            }
        });
        ImageSingletons.add(TargetGraphBuilderPlugins.class, new AArch64GraphBuilderPlugins());
        ImageSingletons.add(SubstrateSuitesCreatorProvider.class, new SubstrateAArch64SuitesCreatorProvider());
    }
}
Also used : ForeignCallsProvider(org.graalvm.compiler.core.common.spi.ForeignCallsProvider) RegisterConfig(jdk.vm.ci.code.RegisterConfig) TargetDescription(jdk.vm.ci.code.TargetDescription) SubstrateBackendFactory(com.oracle.svm.core.graal.code.SubstrateBackendFactory) ConfigKind(com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind) Providers(org.graalvm.compiler.phases.util.Providers) SubstrateBackend(com.oracle.svm.core.graal.code.SubstrateBackend) MetaAccessExtensionProvider(org.graalvm.compiler.core.common.spi.MetaAccessExtensionProvider) AArch64GraphBuilderPlugins(org.graalvm.compiler.replacements.aarch64.AArch64GraphBuilderPlugins) SubstrateRegisterConfigFactory(com.oracle.svm.core.graal.code.SubstrateRegisterConfigFactory) DefaultJavaLoweringProvider(org.graalvm.compiler.replacements.DefaultJavaLoweringProvider) MetaAccessProvider(jdk.vm.ci.meta.MetaAccessProvider) SubstrateLoweringProviderFactory(com.oracle.svm.core.graal.code.SubstrateLoweringProviderFactory) PlatformConfigurationProvider(org.graalvm.compiler.nodes.spi.PlatformConfigurationProvider)

Aggregations

SubstrateBackend (com.oracle.svm.core.graal.code.SubstrateBackend)3 ConfigKind (com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind)3 RegisterConfig (jdk.vm.ci.code.RegisterConfig)3 ForeignCallsProvider (org.graalvm.compiler.core.common.spi.ForeignCallsProvider)3 MetaAccessExtensionProvider (org.graalvm.compiler.core.common.spi.MetaAccessExtensionProvider)3 PlatformConfigurationProvider (org.graalvm.compiler.nodes.spi.PlatformConfigurationProvider)3 Providers (org.graalvm.compiler.phases.util.Providers)3 SubstrateBackendFactory (com.oracle.svm.core.graal.code.SubstrateBackendFactory)2 SubstrateLoweringProviderFactory (com.oracle.svm.core.graal.code.SubstrateLoweringProviderFactory)2 SubstrateRegisterConfigFactory (com.oracle.svm.core.graal.code.SubstrateRegisterConfigFactory)2 TargetDescription (jdk.vm.ci.code.TargetDescription)2 MetaAccessProvider (jdk.vm.ci.meta.MetaAccessProvider)2 DefaultJavaLoweringProvider (org.graalvm.compiler.replacements.DefaultJavaLoweringProvider)2 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 SubstrateSnippetReflectionProvider (com.oracle.svm.core.graal.meta.SubstrateSnippetReflectionProvider)1 SubstrateStampProvider (com.oracle.svm.core.graal.meta.SubstrateStampProvider)1