static bool transpileRaw_silent = true; ifdef DynModule sS transpileRaw(S mainJava) { ret (S) call(dm_transpiler(), 'transpileRaw, mainJava); } endifdef ifndef DynModule static Class transpileRaw_trans; static bool transpileRaw_verySilent; static bool transpileRaw_useDiskCache; static Lock transpileRaw_lock = lock(); static S transpileRaw(S mainJava) { ret transpileRaw(mainJava, false); } static S transpileRaw(S mainJava, bool fragment) { mainJava = dropTranslators(mainJava); transpileRaw_copyFromCreator(); lock transpileRaw_lock; File cacheFile = null; if (transpileRaw_useDiskCache) { cacheFile = new File(javaxCodeDir(), "Transpilations/" + uniqueFileNameUsingMD5_80_v2(mainJava) + ".java"); try answer loadTextFile(cacheFile); } loading "Transpiling..." { transpileRaw_translator(); if (fragment) setOpt(transpileRaw_trans, 'localStuffOnly := true); set(transpileRaw_trans, +mainJava); // TODO: setOpt(transpileRaw_trans, transpilingSnippetID := ); if (!transpileRaw_verySilent) print("Running translator " + getOpt(transpileRaw_trans, 'programID)); callMain(transpileRaw_trans); //print("Ran translator " + identityHashCode(transpileRaw_trans)); S main = cast get(transpileRaw_trans, "mainJava"); if (transpileRaw_useDiskCache) { saveTextFile(new File(cacheFile.getPath() + "x"), mainJava); saveTextFile(cacheFile, main); } ret main; } } static Class transpileRaw_translator() { if (transpileRaw_trans == null) { //print("Loading translator."); transpileRaw_trans = hotwireSharingLibraries_silently(#759); //print("Loaded translator: " + identityHashCode(transpileRaw_trans)); } setOpt(transpileRaw_trans, "print_silent", transpileRaw_silent); ret transpileRaw_trans; } svoid transpileRaw_copyFromCreator { lock transpileRaw_lock; if (transpileRaw_trans != null) ret; O c = creator(); if (c == null) ret; Class trans = cast getOpt(c, 'transpileRaw_trans); Lock lock = cast getOpt(c, 'transpileRaw_lock); if (trans != null && lock != null) { print("Using creator's transpiler: " + getProgramID(c) + " => " + programID()); transpileRaw_lock = lock; transpileRaw_trans = trans; } } svoid cleanMeUp_transpileRaw { transpileRaw_trans = null; // release proactively (it's big) } endifndef