Something that may be most efficient would be to have it where the JIT writers are essentially the description interfaces with some modified methods. However they still need to be bridged in some cases because the JIT will perform some basic register allocation.
For the generic JIT, I should move off the actual file output bits to another class rather than having it done in the classes themselves.
Another thing is that class flags can go in the global pool since many classes could share the same flags, but these are just a single bitfield which would cost a few more bytes to reference.
It might be easier to refactor the base JIT changes into a new JIT which I will call the basic JIT.
Requiring that something registered to the output have properties for later system property output usage, is a bad idea. It should be optional and if it does exist then they can be used accordingly. I do need a system property system that can be reused to initialize and setup the JIT without being helped by the operating system target information. Although I still have to solve this issue.
Basically I need a serialization and a de-serialization of the configuration data. So this means I should split off the immutable configuration and instead have a configuration builder. JIT specific parts would need to be initialized by properties which are serialized and de-serialized as needed.
One thing that somewhat needs to go is the cache system which writes to the disk somewhere, that can be handled by a JIT output system of sorts. Basically the JIT outputs namespace binaries as normal, then that cache can be read from when it is needed. Before this was part of the configuration system, however it no longer is a part of it. I suppose one thing I should do is have an actual package that handles the JAR cache system for compilation. That is, the AOT compiler for the SquirrelJME binary acts the same as if it were the JIT running on real hardware.
JITCacheCreator goes away and instead I suppose somewhere in
there is a cache selection system that can figure out what to use. It must
be in the base because it should not pull in the entire JIT since one might not
even be included at all.
JITNamespaceContent should instead become
JITCacheManager can go away. Then the browser can be
used to implement that functionality.
My sorted tree map does not work properly in a case.
And that is fixed.
One thing that could be handy is if
JITConfig can have a cached class lookup
depending on the key used, similar to the factory code itself.