Ok so my squashed down data is done, I just need to start implementing the code generator.
Currently 20KiB, not writing the end of class magic number gives me 19KiB. This is likely the lowest I can go without compressing resources. One thing I can do to reduce the size (an average of 2 bytes per class) would be to make the super class implicit and instead sort the class entries by super class, but that would be rather complex to do.
Since I would like to keep the binaries below 65KiB, this give me either 13KiB or 45KiB for native code to be generated. Now if the entire set of stuff including the UI elements can fit within 65KiB, that would be quite awesome. As I develop the code more, I can likely make up for some code size savings. One thing I can have however is a global generated code storage. For every method where the machine code is exactly the same, use the same code. This would work initially where everything is a TODO but it would be less effective as time moves on and more of the library is implemented. So this would not really be practical in the long run.
I can definitely feel being close to a workable demo soon. I can feel the chills of concentration.
It feels like I am almost at the top of the first hill with the mountain faded in the distance.
I can store the constant values of fields in the constant pool so that constants are shared across differing classes in an namespace (such an event may occur, especially for popular numbers).
So the question is, do I make identifiers and types their own entries? Identifiers would be a bit pointless but I can see it for types. Perhaps just for methods. If it is in the constant pool it can be determined the arguments to something. However there is no reflection so this information is generally pointless. The only thing it would really be good for would be debugging, but that is very minimal. For linking, since everything is already verified, only the names are needed. So for simplicity it will just be a name for the most part.
It is very neat and interesting how everything turns orange as the suns set, you can definitely notice it with the windows open. Another day gone past ready for the nearly full moon to shine.
I need to make sure that duplicate fields and methods are checked since they are not legal (and would confuse the code much).
Now the orange is gone and it is now blue, so the sun has set.