CVS Commit

Matthew Fluet fluet@CS.Cornell.EDU
Wed, 19 Sep 2001 13:35:04 -0400 (EDT)


> BTW, here's the time to build G2 from G1.
> MLton finished in 290.73 + 205.25 (41% GC)

Hmmm...  That's up a little bit from before.

I'd be interested in the mlprof output.

The -v3 output would also be helpful, but I seem to have broken
traceBatch in the x86 codegen.

traceBatch looks like:

val ('a, 'b) traceBatch: (verbosity * string) -> ('a -> 'b) -> 
                         (('a -> 'b) * (unit -> unit)) =
   fn (verb, name) =>
   fn f => if Verbosity.<= (verb, !verbosity)
             then ...
             else (f, fn () => ())

and all of the x86 traced functions use the functions defined in the x86
functor:

    val tracer
    = fn s => Control.traceBatch (Control.Detail, s)
    val tracerTop
    = fn s => Control.traceBatch (Control.Pass, s)

So, an instance looks like:

  val (translateChunk, translateChunk_msg)
    = tracerTop
      "translateChunk"
      translateChunk

The "bug" is that the application of tracerTop is occuring in the
definition of the structure, so it's seeing the default Verbosity setting
of Silent before the command line args set it to another value.

I'm not quite sure what is the right thing to do.  I can obviously fix it
by pushing the Verbosity.<= test into either the message printer or the
function application, but that seems a shame, because we'll either pay for
computing the total time (and not print it) or pay for a verbosity test at
every function application.  I guess the latter isn't so bad, but it is
what I was hoping to avoid.