From df557faa09dfcb2d17a8aa3414046cc858e2d7ff Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Sat, 11 May 2013 11:15:31 +0300 Subject: [PATCH] Support done() in class handler --- .../jet/preloading/ClassPreloadingUtils.java | 2 ++ .../jetbrains/jet/preloading/Preloader.java | 34 ++++++++++++------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/compiler/preloader/src/org/jetbrains/jet/preloading/ClassPreloadingUtils.java b/compiler/preloader/src/org/jetbrains/jet/preloading/ClassPreloadingUtils.java index 733a166d230..340bc1bcded 100644 --- a/compiler/preloader/src/org/jetbrains/jet/preloading/ClassPreloadingUtils.java +++ b/compiler/preloader/src/org/jetbrains/jet/preloading/ClassPreloadingUtils.java @@ -35,6 +35,8 @@ public class ClassPreloadingUtils { public void beforeLoadJar(File jarFile) {} public void afterLoadJar(File jarFile) {} + + public void done() {} } /** diff --git a/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java b/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java index 4c32ea9ccce..5f5155fc6c4 100644 --- a/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java +++ b/compiler/preloader/src/org/jetbrains/jet/preloading/Preloader.java @@ -44,17 +44,9 @@ public class Preloader { ClassLoader parent = Preloader.class.getClassLoader(); - final int[] counter = new int[1]; - final int[] size = new int[1]; - ClassLoader preloaded = ClassPreloadingUtils.preloadClasses(files, classNumber, parent, - !printTime ? null : - new ClassPreloadingUtils.ClassHandler() { - @Override - public void beforeDefineClass(String name, int sizeInBytes) { - counter[0]++; - size[0] += sizeInBytes; - } - }); + ClassPreloadingUtils.ClassHandler handler = getHandler(printTime); + ClassLoader preloaded = ClassPreloadingUtils.preloadClasses(files, classNumber, parent, handler); + handler.done(); Class mainClass = preloaded.loadClass(mainClassCanonicalName); Method mainMethod = mainClass.getMethod("main", String[].class); @@ -66,10 +58,28 @@ public class Preloader { if (printTime) { long dt = System.nanoTime() - startTime; System.out.format("Total time: %.3fs\n", dt / 1e9); + } + } + } + + private static ClassPreloadingUtils.ClassHandler getHandler(boolean printTime) { + if (printTime) return new ClassPreloadingUtils.ClassHandler() {}; + + final int[] counter = new int[1]; + final int[] size = new int[1]; + return new ClassPreloadingUtils.ClassHandler() { + @Override + public void beforeDefineClass(String name, int sizeInBytes) { + counter[0]++; + size[0] += sizeInBytes; + } + + @Override + public void done() { System.out.println("Loaded classes: " + counter[0]); System.out.println("Loaded classes size: " + size[0]); } - } + }; } private static boolean parseMeasureTime(String arg) {