// Idea: Every class loader makes only a single class so they can be // garbage collected more easily. srecord noeq LASMultiClassLoader(ClassLoader parent) is ILASClassLoader { settable bool rememberClassBytes; gettable Map definedClasses = syncMap(); Lock lock = lock(); *(Class parent) { this(parent.getClassLoader()); } public Class defineLASClass(S name, IF0 generateClass) { lock lock; try object definedClasses.get(name); var cl = new InMemoryClassLoader(parent); print("Generating class " + name); Class c = cl.defineAClass(name, generateClass!); definedClasses.put(name, c); ret c; } }