Why interpret dynamically loaded classes?
Jack Andrews
jack.andrews@str.com.au
Tue Aug 22 23:23:00 GMT 2000
Hi,
I note that both GCJ and TowerJ use a bytecode interpreter to handle dynamic
class loading. But why not just compile the dynamically loaded class to a
native shared object at *runtime*, then link at runtime, too?
ie. implement this native ClassLoader (in pseudo-c):
Class ClassLoader::defineClass(String name, byte [] b, int off, int len )
{
filename = "lib" + mangle(name) + ".so";
compile_to_shared_object(filename, b);
void * ptr = dlopen("mypackage_myclass");
return new Class(ptr);
}
You'd just need to deploy the bytecode to native compiler with the
executable rather than the bytecode interpreter.
This way, you get the benefit of before-time compilation for dynamically
loaded classes too. Of course, you'd add an
if (already_compiled(name)) {...}
to the defineClass method for efficiency.
Jack.
More information about the Java
mailing list