Mercurial > urweb
annotate src/mono_inline.sml @ 2258:b1ba35ce2613
Fix bug where pure caching didn't treat FFI applications as effectful.
author | Ziv Scully <ziv@mit.edu> |
---|---|
date | Sun, 27 Sep 2015 17:02:14 -0400 |
parents | edd634b889d0 |
children |
rev | line source |
---|---|
ziv@2214 | 1 structure MonoInline = struct |
ziv@2214 | 2 |
ziv@2214 | 3 fun inlineFull file = |
ziv@2214 | 4 let |
ziv@2214 | 5 val oldInline = Settings.getMonoInline () |
ziv@2214 | 6 val oldFull = !MonoReduce.fullMode |
ziv@2214 | 7 in |
ziv@2214 | 8 (Settings.setMonoInline (case Int.maxInt of |
ziv@2214 | 9 NONE => 1000000 |
ziv@2214 | 10 | SOME n => n); |
ziv@2214 | 11 MonoReduce.fullMode := true; |
ziv@2214 | 12 let |
ziv@2214 | 13 val file = MonoReduce.reduce file |
ziv@2214 | 14 val file = MonoOpt.optimize file |
ziv@2214 | 15 val file = Fuse.fuse file |
ziv@2214 | 16 val file = MonoOpt.optimize file |
ziv@2214 | 17 val file = MonoShake.shake file |
ziv@2214 | 18 in |
ziv@2214 | 19 file |
ziv@2214 | 20 end before |
ziv@2214 | 21 (MonoReduce.fullMode := oldFull; |
ziv@2214 | 22 Settings.setMonoInline oldInline)) |
ziv@2214 | 23 handle ex => (Settings.setMonoInline oldInline; |
ziv@2214 | 24 MonoReduce.fullMode := oldFull; |
ziv@2214 | 25 raise ex) |
ziv@2214 | 26 end |
ziv@2214 | 27 |
ziv@2214 | 28 end |