Changes by: Aleksey Nogin (nogin at cs.caltech.edu)
Date: 2005-03-24 05:44:00 -0800 (Thu, 24 Mar 2005)
Revision: 7027
Log message:

      A number of changes to the closure/sweeper:
      
      1) The "let type" now has the form
      let type <ty_params_c> as <bound_ty_params_c> : <singleton_ty_params_c> = <ty_args_c> in rest
      where the new "<bound_ty_params_c> :" is the ty_args{| |} of the variables
      bound by ty_params_c.
      
      2) I attempted to use the <bound_ty_params_c> in the closure (as we've
      discussed in the "Problems with close_letrec_phase1" thread). Surprisingly, it
      didn't affect any test results. I still puzzled by this.
      
      3) When closing for variable v:ty, one needs to close for the free variables
      of ty as well!
      
      4) Optimizations:
         - when looking for variable indeces, scan the hyps _once_, build a table
           and use the table for lookup.
         - first create "let exp" without any "let type" in the picture, then create
           the "let type".
      
      Jason, please take a look. If you think I got it right, then you'd probably
      want to replicate the changes to the x86.
      

Changes  Path
+51 -88 mpcompiler/mmc/core/mmc_core_closure.ml
+61 -40 mpcompiler/mmc/core/mmc_core_sweep.ml
+22 -17 mpcompiler/mmc/core/mmc_core_sweep.mli
+19 -17 mpcompiler/mmc/core/mmc_core_typeof.ml
+13 -13 mpcompiler/mmc/test/mmc_tests_out.previous