Search in sources :

Example 1 with BarrierSet

use of org.graalvm.compiler.nodes.gc.BarrierSet in project graal by oracle.

the class NativeImageGenerator method createBigBang.

public static Inflation createBigBang(OptionValues options, TargetDescription target, AnalysisUniverse aUniverse, ForkJoinPool analysisExecutor, Runnable heartbeatCallback, AnalysisMetaAccess aMetaAccess, AnalysisConstantReflectionProvider aConstantReflection, WordTypes aWordTypes, SnippetReflectionProvider aSnippetReflection, AnnotationSubstitutionProcessor annotationSubstitutionProcessor, ForeignCallsProvider aForeignCalls, ClassInitializationSupport classInitializationSupport, Providers originalProviders) {
    assert aUniverse != null : "Analysis universe must be initialized.";
    aMetaAccess.lookupJavaType(String.class).registerAsReachable();
    AnalysisConstantFieldProvider aConstantFieldProvider = new AnalysisConstantFieldProvider(aUniverse, aMetaAccess, aConstantReflection, classInitializationSupport);
    /*
         * Install all snippets so that the types, methods, and fields used in the snippets get
         * added to the universe.
         */
    aMetaAccess.lookupJavaType(Reference.class).registerAsReachable();
    BarrierSet barrierSet = ImageSingletons.lookup(Heap.class).createBarrierSet(aMetaAccess);
    SubstratePlatformConfigurationProvider platformConfig = new SubstratePlatformConfigurationProvider(barrierSet);
    AnalysisMetaAccessExtensionProvider aMetaAccessExtensionProvider = new AnalysisMetaAccessExtensionProvider();
    LoweringProvider aLoweringProvider = SubstrateLoweringProvider.createForHosted(aMetaAccess, null, platformConfig, aMetaAccessExtensionProvider);
    StampProvider aStampProvider = new SubstrateStampProvider(aMetaAccess);
    HostedProviders aProviders = new HostedProviders(aMetaAccess, null, aConstantReflection, aConstantFieldProvider, aForeignCalls, aLoweringProvider, null, aStampProvider, aSnippetReflection, aWordTypes, platformConfig, aMetaAccessExtensionProvider, originalProviders.getLoopsDataProvider());
    BytecodeProvider bytecodeProvider = new ResolvedJavaMethodBytecodeProvider();
    SubstrateReplacements aReplacments = new SubstrateReplacements(aProviders, aSnippetReflection, bytecodeProvider, target, aWordTypes, new SubstrateGraphMakerFactory(aWordTypes));
    aProviders = new HostedProviders(aMetaAccess, null, aConstantReflection, aConstantFieldProvider, aForeignCalls, aLoweringProvider, aReplacments, aStampProvider, aSnippetReflection, aWordTypes, platformConfig, aMetaAccessExtensionProvider, originalProviders.getLoopsDataProvider());
    return new NativeImagePointsToAnalysis(options, aUniverse, aProviders, annotationSubstitutionProcessor, analysisExecutor, heartbeatCallback, new SubstrateUnsupportedFeatures(), ImageSingletons.lookup(TimerCollection.class));
}
Also used : SubstratePlatformConfigurationProvider(com.oracle.svm.core.graal.code.SubstratePlatformConfigurationProvider) AnalysisConstantFieldProvider(com.oracle.svm.hosted.ameta.AnalysisConstantFieldProvider) SubstrateStampProvider(com.oracle.svm.core.graal.meta.SubstrateStampProvider) StampProvider(org.graalvm.compiler.nodes.spi.StampProvider) Reference(java.lang.ref.Reference) AnalysisMetaAccessExtensionProvider(com.oracle.graal.pointsto.meta.AnalysisMetaAccessExtensionProvider) BytecodeProvider(org.graalvm.compiler.bytecode.BytecodeProvider) ResolvedJavaMethodBytecodeProvider(org.graalvm.compiler.bytecode.ResolvedJavaMethodBytecodeProvider) SubstrateLoweringProvider(com.oracle.svm.core.graal.meta.SubstrateLoweringProvider) NodeLoweringProvider(com.oracle.svm.core.graal.snippets.NodeLoweringProvider) LoweringProvider(org.graalvm.compiler.nodes.spi.LoweringProvider) SubstrateGraphMakerFactory(com.oracle.svm.hosted.code.SubstrateGraphMakerFactory) NativeImageHeap(com.oracle.svm.hosted.image.NativeImageHeap) ImageHeap(com.oracle.graal.pointsto.heap.ImageHeap) Heap(com.oracle.svm.core.heap.Heap) HostedProviders(com.oracle.graal.pointsto.meta.HostedProviders) BarrierSet(org.graalvm.compiler.nodes.gc.BarrierSet) SubstrateUnsupportedFeatures(com.oracle.svm.hosted.analysis.SubstrateUnsupportedFeatures) SubstrateReplacements(com.oracle.svm.core.graal.meta.SubstrateReplacements) TimerCollection(com.oracle.graal.pointsto.util.TimerCollection) SubstrateStampProvider(com.oracle.svm.core.graal.meta.SubstrateStampProvider) NativeImagePointsToAnalysis(com.oracle.svm.hosted.analysis.NativeImagePointsToAnalysis) ResolvedJavaMethodBytecodeProvider(org.graalvm.compiler.bytecode.ResolvedJavaMethodBytecodeProvider)

Example 2 with BarrierSet

use of org.graalvm.compiler.nodes.gc.BarrierSet 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

SubstratePlatformConfigurationProvider (com.oracle.svm.core.graal.code.SubstratePlatformConfigurationProvider)2 SubstrateLoweringProvider (com.oracle.svm.core.graal.meta.SubstrateLoweringProvider)2 SubstrateStampProvider (com.oracle.svm.core.graal.meta.SubstrateStampProvider)2 Heap (com.oracle.svm.core.heap.Heap)2 BarrierSet (org.graalvm.compiler.nodes.gc.BarrierSet)2 LoweringProvider (org.graalvm.compiler.nodes.spi.LoweringProvider)2 StampProvider (org.graalvm.compiler.nodes.spi.StampProvider)2 ImageHeap (com.oracle.graal.pointsto.heap.ImageHeap)1 AnalysisMetaAccessExtensionProvider (com.oracle.graal.pointsto.meta.AnalysisMetaAccessExtensionProvider)1 HostedProviders (com.oracle.graal.pointsto.meta.HostedProviders)1 TimerCollection (com.oracle.graal.pointsto.util.TimerCollection)1 SubstrateBackend (com.oracle.svm.core.graal.code.SubstrateBackend)1 SubstrateMetaAccessExtensionProvider (com.oracle.svm.core.graal.code.SubstrateMetaAccessExtensionProvider)1 RuntimeConfiguration (com.oracle.svm.core.graal.meta.RuntimeConfiguration)1 SubstrateForeignCallsProvider (com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider)1 ConfigKind (com.oracle.svm.core.graal.meta.SubstrateRegisterConfig.ConfigKind)1 SubstrateReplacements (com.oracle.svm.core.graal.meta.SubstrateReplacements)1 SubstrateSnippetReflectionProvider (com.oracle.svm.core.graal.meta.SubstrateSnippetReflectionProvider)1 NodeLoweringProvider (com.oracle.svm.core.graal.snippets.NodeLoweringProvider)1 SubstrateWordTypes (com.oracle.svm.core.graal.word.SubstrateWordTypes)1