[<<][libprim][>>][..]
Tue Aug 11 11:21:40 CEST 2009
size
Looks like the real culprit is the primitive registration code. This
can be done in a table.
strip scheme
ls -l scheme
# currently
-rwxr-xr-x 1 tom tom 44592 2009-08-11 11:28 scheme
# Ha!
# The prim table actually made it bigger :)
-rwxr-xr-x 1 tom tom 45912 2009-08-11 11:34 scheme
# Changing the prototype of the function to take strings instead of
# symbols made it smaller:
-rwxr-xr-x 1 tom tom 43936 2009-08-11 12:02 scheme
So it's really the code that generates the boot code that bloats the
binary. Looks like a reader is what's needed to compress further.
Also, part of the data structures could be loaded as constants:
symbols and primitives are not GC-managed, so they could be defined as
constant data.
Another thing that leads to bloat is the tag shifting. Can this be
simplified to a single AND + compare?
After separating the bootstrap code to lib.o i get these stripped sizes:
# gcc -m32
-rw-r--r-- 1 tom tom 1256 2009-08-11 12:48 gc.o
-rw-r--r-- 1 tom tom 16116 2009-08-11 12:48 lib.o
-rw-r--r-- 1 tom tom 2032 2009-08-11 12:48 main.o
-rw-r--r-- 1 tom tom 12456 2009-08-11 12:48 scheme.o
-rw-r--r-- 1 tom tom 676 2009-08-11 12:48 symbol.o
-rw-r--r-- 1 tom tom 1136 2009-08-11 12:48 task.o
# gcc -m64
-rw-r--r-- 1 tom tom 1904 2009-08-11 12:49 gc.o
-rw-r--r-- 1 tom tom 18040 2009-08-11 12:49 lib.o
-rw-r--r-- 1 tom tom 2640 2009-08-11 12:49 main.o
-rw-r--r-- 1 tom tom 17344 2009-08-11 12:49 scheme.o
-rw-r--r-- 1 tom tom 1176 2009-08-11 12:49 symbol.o
-rw-r--r-- 1 tom tom 1832 2009-08-11 12:49 task.o
[Reply][About][<<][libprim][>>][..]