private void generateDebug(DebugInformationBuilder debugInformationBuilder) { try { DebugInformation debugInformation = debugInformationBuilder.getDebugInformation(); String sourceMapName = fileName + ".map"; try (Writer writer = new OutputStreamWriter(buildTarget.appendToResource(fileName), StandardCharsets.UTF_8)) { writer.append("\n//# sourceMappingURL=" + sourceMapName); } try (Writer writer = new OutputStreamWriter(buildTarget.createResource(sourceMapName), StandardCharsets.UTF_8)) { debugInformation.writeAsSourceMaps(writer, "src", fileName); } debugInformation.write(buildTarget.createResource(fileName + ".teavmdbg")); } catch (IOException e) { throw new RuntimeException("IO error occurred writing debug information", e); } }
private void saveNewResult() { synchronized (contentLock) { firstTime = false; content.clear(); for (String name : buildTarget.getNames()) { content.put(name, buildTarget.getContent(name)); } } }
private void shutdownBuilder() { try { watcher.dispose(); } catch (IOException e) { log.debug("Exception caught", e); } classSource = null; watcher = null; astCache = null; programCache = null; synchronized (content) { content.clear(); } buildTarget.clear(); log.info("Build thread complete"); }
private void addIndicator() { String script = getIndicatorScript(false); try (Writer writer = new OutputStreamWriter(buildTarget.appendToResource(fileName), StandardCharsets.UTF_8)) { writer.append("\n"); writer.append(script); } catch (IOException e) { throw new RuntimeException("IO error occurred writing debug information", e); } }
private void fireBuildComplete(TeaVM vm) { CodeServletBuildResult result = new CodeServletBuildResult(vm, new ArrayList<>(buildTarget.getNames())); for (DevServerListener listener : listeners) { listener.compilationComplete(result); } }
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; }