public MissingItemsProcessor(DependencyInfo dependencyInfo, ClassHierarchy hierarchy, Diagnostics diagnostics) { this.dependencyInfo = dependencyInfo; this.diagnostics = diagnostics; this.hierarchy = hierarchy; reachableClasses = dependencyInfo.getReachableClasses(); reachableMethods = dependencyInfo.getReachableMethods(); reachableFields = dependencyInfo.getReachableFields(); }
private void postBuild(TeaVM vm, long startTime) { if (!vm.wasCancelled()) { log.info("Recompiled stale methods: " + programCache.getPendingItemsCount()); fireBuildComplete(vm); if (vm.getProblemProvider().getSevereProblems().isEmpty()) { log.info("Build complete successfully"); saveNewResult(); lastReachedClasses = vm.getDependencyInfo().getReachableClasses().size(); classSource.commit(); programCache.commit(); astCache.commit(); reportCompilationComplete(true); } else { log.info("Build complete with errors"); reportCompilationComplete(false); } printStats(vm, startTime); TeaVMProblemRenderer.describeProblems(vm, log); } else { log.info("Build cancelled"); fireBuildCancelled(); } astCache.discard(); programCache.discard(); buildTarget.clear(); cancelRequested = false; }
public MissingItemsProcessor(DependencyInfo dependencyInfo, Diagnostics diagnostics) { this.dependencyInfo = dependencyInfo; this.diagnostics = diagnostics; achievableClasses = dependencyInfo.getReachableClasses(); achievableMethods = dependencyInfo.getReachableMethods(); achievableFields = dependencyInfo.getReachableFields(); }
@SuppressWarnings("WeakerAccess") public ListableClassHolderSource link(DependencyInfo dependency) { reportPhase(TeaVMPhase.LINKING, dependency.getReachableClasses().size()); Linker linker = new Linker(); MutableClassHolderSource cutClasses = new MutableClassHolderSource(); MissingItemsProcessor missingItemsProcessor = new MissingItemsProcessor(dependency, diagnostics); if (wasCancelled()) { return cutClasses; } int index = 0; for (String className : dependency.getReachableClasses()) { ClassReader clsReader = dependency.getClassSource().get(className); if (clsReader == null) { continue; } ClassHolder cls = ModelUtils.copyClass(clsReader); cutClasses.putClassHolder(cls); missingItemsProcessor.processClass(cls); linker.link(dependency, cls); progressListener.progressReached(++index); } return cutClasses; }