public CompileQueue(DebugContext debug, FeatureHandler featureHandler, HostedUniverse universe, SharedRuntimeConfigurationBuilder runtimeConfigBuilder, Boolean deoptimizeAll,
SnippetReflectionProvider snippetReflection, ForkJoinPool executorService) {
this.universe = universe;
this.compilations = new ConcurrentHashMap<>();
this.runtimeConfig = runtimeConfigBuilder.getRuntimeConfig();
this.optimisticOpts = OptimisticOptimizations.ALL.remove(OptimisticOptimizations.Optimization.UseLoopLimitChecks);
this.deoptimizeAll = deoptimizeAll;
this.dataCache = new ConcurrentHashMap<>();
this.executor = new CompletionExecutor(universe.getBigBang(), executorService);
regularSuites = NativeImageGenerator.createSuites(featureHandler, runtimeConfig, snippetReflection, true);
deoptTargetSuites = NativeImageGenerator.createSuites(featureHandler, runtimeConfig, snippetReflection, true);
removeDeoptTargetOptimizations(deoptTargetSuites);
regularLIRSuites = NativeImageGenerator.createLIRSuites(featureHandler, runtimeConfig.getProviders(), true);
deoptTargetLIRSuites = NativeImageGenerator.createLIRSuites(featureHandler, runtimeConfig.getProviders(), true);
removeDeoptTargetOptimizations(deoptTargetLIRSuites);
callForReplacements(debug, featureHandler, runtimeConfig, snippetReflection);
}