new codegen

Matthew Fluet mfluet@intertrust.com
Tue, 14 Aug 2001 09:29:57 -0700 (PDT)


> Do I need to do something special in CVS to get it, or haven't you checked it in
> yet?

No, I hadn't checked it in last night.  (You left the ssa directory in a
bad state; commited the sources.cm without the supporting files.)

Here are the results of the series of builds to a fixed-point.  There is a
minor slow down in total compile time.  I think this can primarily be
traced to the fact that while there is a speed up in the computational
portion of the x86 code gen, there is a big increase in GC time in that
pass.  I'll take a look at a -v3 compile and see if I can track down some
sub-pass that is generating all the extra garbage.

compiler: mlton-20010806

Compiling mlton (takes a while)
time mlton @MLton -- -v -o mlton-compile mlton.cm
MLton starting
   Compile SML starting
      pre codegen starting
         gcc -DNODEBUG -DMLton_safe=TRUE -DMLton_detectOverflow=TRUE \
             -I/home/mfluet/mlton/mlton/include -o /tmp/file2TytON \
             /tmp/fileaBoNGn.c -L/home/mfluet/mlton/mlton/lib -lmlton -lm -lgmp
         /tmp/file2TytON /tmp/fileKtIf4F
      pre codegen finished in 106.56 + 119.54 (53% GC)
      x86 code gen starting
      x86 code gen finished in 258.03 + 45.16 (15% GC)
   Compile SML finished in 364.59 + 164.70 (31% GC)
   Compile C starting
      gcc -S -DNODEBUG -DMLton_safe=TRUE -DMLton_detectOverflow=TRUE \
          -I/home/mfluet/mlton/mlton/include -o /tmp/fileHSfgHO.s \
          /tmp/filePI78Nw.c
   Compile C finished in 8.50 + 0.0 (0.0% GC)
    Assemble starting
      gcc -c -o /tmp/filex072HE.o /tmp/fileHSfgHO.s
      gcc -c -o /tmp/file3k1EN2.o /tmp/fileBmroL0.68.S
...
      gcc -c -o /tmp/fileBejKDc.o /tmp/fileXMXIVQ.0.S
   Assemble finished in 24.71 + 0.0 (0.0% GC)
   Link starting
      gcc -o mlton-compile /tmp/filex072HE.o /tmp/fileBejKDc.o \
...
          -lmlton -lm -lgmp
   Link finished in 1.20 + 0.0 (0.0% GC)
MLton finished in 399.12 + 164.70 (29% GC)
556.70user 7.16system 9:35.24elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (50401major+1043307minor)pagefaults 0swaps
size mlton-compile
   text    data     bss     dec     hex filename
6686528  886172   31780 7604480  740900 mlton-compile


compiler: result of above compile
          (i.e., a compiler that compiles using the new codegen,
           but whose binary was generated by the old codegen)

Compiling mlton (takes a while)
time mlton @MLton -- -v -o mlton-compile mlton.cm
MLton starting
   Compile SML starting
      pre codegen starting
         gcc -DNODEBUG -DMLton_safe=TRUE -DMLton_detectOverflow=TRUE \
             -I/home/mfluet/mlton/mlton/include -o /tmp/fileGn2Tyt \
             /tmp/filektaBoN.c -L/home/mfluet/mlton/mlton/lib -lmlton -lm -lgmp
         /tmp/fileGn2Tyt /tmp/fileONKtIf
      pre codegen finished in 103.35 + 130.45 (56% GC)
      x86 code gen starting
      x86 code gen finished in 199.03 + 142.37 (42% GC)
   Compile SML finished in 302.38 + 272.82 (47% GC)
   Compile C starting
      gcc -S -DNODEBUG -DMLton_safe=TRUE -DMLton_detectOverflow=TRUE \
          -I/home/mfluet/mlton/mlton-cvs-merge/include -o /tmp/fileXaTeVG.s \
          /tmp/filewhutiB.c
   Compile C finished in 8.44 + 0.0 (0.0% GC)
   Assemble starting
      gcc -c -o /tmp/fileFsZATK.o /tmp/fileXaTeVG.s
      gcc -c -o /tmp/fileNsRcNe.o /tmp/fileWTi3A9.66.S
...
      gcc -c -o /tmp/file7ktkrg.o /tmp/filekFo30p.0.S
   Assemble finished in 23.62 + 0.0 (0.0% GC)
   Link starting
      gcc -o mlton-compile /tmp/fileFsZATK.o /tmp/file7ktkrg.o \
...
          -lmlton -lm -lgmp
   Link finished in 2.19 + 0.0 (0.0% GC)
MLton finished in 336.74 + 272.87 (45% GC)
604.73user 4.91system 10:16.87elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (47876major+518832minor)pagefaults 0swaps
size mlton-compile
   text    data     bss     dec     hex filename
5761696  880812   31812 6674320  65d790 mlton-compile


compiler: result of above compile
          (i.e., a compiler that compiles using the new codegen,
           and whose binary was generated by the new codegen)

Compiling mlton (takes a while)
time mlton @MLton -- -v -o mlton-compile mlton.cm
MLton starting
   Compile SML starting
      pre codegen starting
         gcc -DNODEBUG -DMLton_safe=TRUE -DMLton_detectOverflow=TRUE \
             -I/home/mfluet/mlton/mlton/include -o /tmp/fileoNGn2T \
             /tmp/file8fktaB.c -L/home/mfluet/mlton/mlton/lib -lmlton -lm -lgmp
         /tmp/fileoNGn2T /tmp/fileytONKt
      pre codegen finished in 103.07 + 130.58 (56% GC)
      x86 code gen starting
      x86 code gen finished in 199.45 + 142.43 (42% GC)
   Compile SML finished in 302.53 + 273.01 (47% GC)
   Compile C starting
      gcc -S -DNODEBUG -DMLton_safe=TRUE -DMLton_detectOverflow=TRUE \
          -I/home/mfluet/mlton/mlton/include -o /tmp/file8DELqj.s \
          /tmp/file3IVu1q.c
   Compile C finished in 8.43 + 0.0 (0.0% GC)
   Assemble starting
      gcc -c -o /tmp/fileGtsBsz.o /tmp/file8DELqj.s
      gcc -c -o /tmp/fileEjUD2z.o /tmp/filep2fwHe.65.S
...
      gcc -c -o /tmp/filemZkd2D.o /tmp/file9o72LC.0.S
   Assemble finished in 23.61 + 0.0 (0.0% GC)
   Link starting
      gcc -o mlton-compile /tmp/fileGtsBsz.o /tmp/filemZkd2D.o \
...
          -lmlton -lm -lgmp
   Link finished in 2.17 + 0.0 (0.0% GC)
MLton finished in 336.86 + 273.08 (45% GC)
605.05user 4.92system 10:22.26elapsed 98%CPU (0avgtext+0avgdata
0maxresident)k
0inputs+0outputs (47213major+359541minor)pagefaults 0swaps
size mlton-compile
   text    data     bss     dec     hex filename
5756784  879876   31780 6668440  65c098 mlton-compile

[Note: the size differences between the last two compiles are due to my
commenting out of some diagnostic code that I hadn't realized were still
on.  So, I think that probably accounts for the very minor speed up
between the two compiles.  So, the conclusion is that the new codegen
(without tracking stack slots) is about the same as the old codegen --
which is what I generally expected.]