comparison src/compiler.sml @ 692:09df0c85f306

Fix overzealous Marshalcheck; garbage-collect string-embedded closures when no dyns are active
author Adam Chlipala <adamc@hcoop.net>
date Sat, 04 Apr 2009 12:54:39 -0400
parents 54ec237a3028
children 5819fb63c93a
comparison
equal deleted inserted replaced
691:cc58941da3e2 692:09df0c85f306
473 print = CorePrint.p_file CoreEnv.empty 473 print = CorePrint.p_file CoreEnv.empty
474 } 474 }
475 475
476 val toTag = transform tag "tag" o toCore_untangle2 476 val toTag = transform tag "tag" o toCore_untangle2
477 477
478 val reduce = {
479 func = Reduce.reduce,
480 print = CorePrint.p_file CoreEnv.empty
481 }
482
483 val toReduce = transform reduce "reduce" o toTag
484
485 val unpoly = {
486 func = Unpoly.unpoly,
487 print = CorePrint.p_file CoreEnv.empty
488 }
489
490 val toUnpoly = transform unpoly "unpoly" o toReduce
491
492 val specialize = {
493 func = Specialize.specialize,
494 print = CorePrint.p_file CoreEnv.empty
495 }
496
497 val toSpecialize = transform specialize "specialize" o toUnpoly
498
499 val toShake3 = transform shake "shake3" o toSpecialize
500
478 val marshalcheck = { 501 val marshalcheck = {
479 func = (fn file => (MarshalCheck.check file; file)), 502 func = (fn file => (MarshalCheck.check file; file)),
480 print = CorePrint.p_file CoreEnv.empty 503 print = CorePrint.p_file CoreEnv.empty
481 } 504 }
482 505
483 val toMarshalcheck = transform marshalcheck "marshalcheck" o toTag 506 val toMarshalcheck = transform marshalcheck "marshalcheck" o toShake3
484
485 val reduce = {
486 func = Reduce.reduce,
487 print = CorePrint.p_file CoreEnv.empty
488 }
489
490 val toReduce = transform reduce "reduce" o toMarshalcheck
491
492 val unpoly = {
493 func = Unpoly.unpoly,
494 print = CorePrint.p_file CoreEnv.empty
495 }
496
497 val toUnpoly = transform unpoly "unpoly" o toReduce
498
499 val specialize = {
500 func = Specialize.specialize,
501 print = CorePrint.p_file CoreEnv.empty
502 }
503
504 val toSpecialize = transform specialize "specialize" o toUnpoly
505
506 val toShake3 = transform shake "shake3" o toSpecialize
507 507
508 val monoize = { 508 val monoize = {
509 func = Monoize.monoize CoreEnv.empty, 509 func = Monoize.monoize CoreEnv.empty,
510 print = MonoPrint.p_file MonoEnv.empty 510 print = MonoPrint.p_file MonoEnv.empty
511 } 511 }
512 512
513 val toMonoize = transform monoize "monoize" o toShake3 513 val toMonoize = transform monoize "monoize" o toMarshalcheck
514 514
515 val mono_opt = { 515 val mono_opt = {
516 func = MonoOpt.optimize, 516 func = MonoOpt.optimize,
517 print = MonoPrint.p_file MonoEnv.empty 517 print = MonoPrint.p_file MonoEnv.empty
518 } 518 }