Hey, I'm the author. Yes, I worked in the University of Toronto's AI lab as a student many years ago, back when Lisp in AI was a thing. It definitely would be full circle!
I worked on this years ago. Gcj did support loading and interpreting bytecode alongside the AOT-compiled code. libffi's closures were originally implemented to support calling interpreted methods from AOT-compiled code, because a class's vtable could include a mix of AOT-compiled and interpreted methods. You could also compile jar files directly into .so files, which would get loaded and used at runtime if a classloader ever loaded the corresponding jar.
reply