sbool #silent = true; sbool #useDiskCache; /*ifdef DynModule sS transpileRaw7(S mainJava) { ret (S) call(dm_transpiler(), 'transpileRaw7, mainJava, false, #useDiskCache); } endifdef*/ ifndef DynModule static Class #trans; sbool #mine = true; static bool #verySilent; static Lock #lock = lock(); static new ThreadLocal #asInclude; static S transpileRaw7(S mainJava) { ret transpileRaw7(mainJava, false, #useDiskCache); } static S transpileRaw7(S mainJava, bool fragment) { ret transpileRaw7(mainJava, fragment, #useDiskCache); } static S transpileRaw7(S mainJava, bool fragment, bool useDiskCache) { mainJava = dropTranslators(mainJava); lock #lock; File cacheFile = null; if (useDiskCache) { cacheFile = new File(javaxCodeDir(), "Transpilations/" + uniqueFileNameUsingMD5_80_v2(mainJava) + ".java"); try answer loadTextFile(cacheFile); } temp #verySilent ? null : tempLoadingAnim("Transpiling..."); #translator(); //setOpt(#trans, dontPrintSource := true); setOpt(#trans, localStuffOnly := fragment); setOpt(#trans, asInclude := isTrue(#asInclude!)); set(#trans, +mainJava); // TODO: setOpt(#trans, transpilingSnippetID := ); set(#trans, +print_byThread); if (!#verySilent) print("Running translator " + getOpt(#trans, 'programID)); callMain(#trans); //print("Ran translator " + identityHashCode(#trans)); S main = cast get(#trans, "mainJava"); if (useDiskCache) { saveTextFile(new File(cacheFile.getPath() + "x"), mainJava); saveTextFile(cacheFile, main); } ret main; } static Class #translator() { if (#trans == null) { //print("Loading translator."); #trans = hotwireSharingLibraries_silently(#7); #mine = true; makeDependent(#trans); //print("Loaded translator: " + identityHashCode(#trans)); } setOpt(#trans, "print_silent", #silent); ret #trans; } svoid cleanMeUp_transpileRaw7 { if (#mine) cleanUp(#trans); #trans = null; // release proactively (it's big) } endifndef