Mercurial > urweb
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 } |