Skip to content

Strip bytecode for particular graph

Clean Importer requested to merge 56-strip-bytecode-for-particular-graph into master

Closes #56 (closed)

To do:

  • Prevent generating dead code by overwriting labels (see TODO in strip.c)
  • Add start field to bytecode header; in linker add option to select the main module
  • Add bcstrip binary to strip binary leaving only the Start rule and all code reachable from there
  • Use bcstrip in run_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

Merge request reports