diff options
author | Benjamin Barenblat <bbaren@mit.edu> | 2015-12-23 16:01:51 -0500 |
---|---|---|
committer | Benjamin Barenblat <bbaren@mit.edu> | 2015-12-23 16:01:51 -0500 |
commit | 3d3886672433f0775f772d8d2ee47c5f5e0bc745 (patch) | |
tree | 072d171c17d92a6696024256c4b2f5aaa760df35 /src/mono_inline.sml | |
parent | bf037ce78c2c76a34ecca0fb8bafa5d5be38968a (diff) | |
parent | 4be7962adf740a35222bfd99608c04329a802a04 (diff) |
Merge branch 'upstream' into dfsg_clean20151220+dfsg
Diffstat (limited to 'src/mono_inline.sml')
-rw-r--r-- | src/mono_inline.sml | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/mono_inline.sml b/src/mono_inline.sml new file mode 100644 index 00000000..d23419f3 --- /dev/null +++ b/src/mono_inline.sml @@ -0,0 +1,28 @@ +structure MonoInline = struct + +fun inlineFull file = + let + val oldInline = Settings.getMonoInline () + val oldFull = !MonoReduce.fullMode + in + (Settings.setMonoInline (case Int.maxInt of + NONE => 1000000 + | SOME n => n); + MonoReduce.fullMode := true; + let + val file = MonoReduce.reduce file + val file = MonoOpt.optimize file + val file = Fuse.fuse file + val file = MonoOpt.optimize file + val file = MonoShake.shake file + in + file + end before + (MonoReduce.fullMode := oldFull; + Settings.setMonoInline oldInline)) + handle ex => (Settings.setMonoInline oldInline; + MonoReduce.fullMode := oldFull; + raise ex) + end + +end |