Strip bytecode for particular graph
Closes #56 (closed)
To do:
-
Prevent generating dead code by overwriting labels (see TODO
instrip.c
) -
Add start
field to bytecode header; in linker add option to select the main module -
Add bcstrip
binary to strip binary leaving only theStart
rule and all code reachable from there -
Use bcstrip
inrun_tests.sh
for CI
Here is how much it saves on the tests (from least to most):
test | old size | new size | relative size |
---|---|---|---|
weird_types.bc | 24300 | 13834 | 56.93% |
fills.bc | 20883 | 10761 | 51.53% |
prolog.bc | 213379 | 36861 | 17.27% |
arrays.bc | 772635 | 130520 | 16.89% |
parser.bc | 210728 | 33733 | 16.01% |
long_integers.bc | 374823 | 54807 | 14.62% |
reals.bc | 123786 | 16885 | 13.64% |
mulmat.bc | 113698 | 15473 | 13.61% |
chars.bc | 111320 | 13903 | 12.49% |
symsieve.bc | 112226 | 13802 | 12.30% |
war_seq.bc | 111040 | 13116 | 11.81% |
functions.bc | 110782 | 12664 | 11.43% |
invperm.bc | 109769 | 11635 | 10.60% |
twice.bc | 108805 | 10811 | 9.94% |
revtwice.bc | 119637 | 11436 | 9.56% |
stwice.bc | 108808 | 10383 | 9.54% |
str_arit.bc | 113172 | 10717 | 9.47% |
fsieve.bc | 121779 | 11389 | 9.35% |
acker.bc | 108542 | 10119 | 9.32% |
tak.bc | 108529 | 10106 | 9.31% |
nfib.bc | 108468 | 10045 | 9.26% |
iks.bc | 786870 | 71059 | 9.03% |
cafs.bc | 187591 | 16162 | 8.62% |
rfib.bc | 120669 | 10077 | 8.35% |
pascal.bc | 189435 | 14998 | 7.92% |
compress.bc | 709375 | 56150 | 7.92% |
e.bc | 185755 | 13835 | 7.45% |
infprimes.bc | 184853 | 13351 | 7.22% |
revrec.bc | 189347 | 13255 | 7.00% |
sieve.bc | 184526 | 12807 | 6.94% |
hamming.bc | 184665 | 12729 | 6.89% |
match.bc | 184783 | 12565 | 6.80% |
lqueen.bc | 185430 | 12491 | 6.74% |
brainfuck.bc | 318020 | 21366 | 6.72% |
reverse2.bc | 184939 | 11994 | 6.49% |
reverse.bc | 184047 | 11912 | 6.47% |
squeen.bc | 184668 | 11527 | 6.24% |
matchlarge.bc | 203511 | 12695 | 6.24% |
reversearray.bc | 185622 | 11048 | 5.95% |
sudoku.bc | 655488 | 29313 | 4.47% |
unboxed_arrays.bc | 311144 | 10698 | 3.44% |
Edited by Clean Importer