ziv@2214: structure MonoInline = struct ziv@2214: ziv@2214: fun inlineFull file = ziv@2214: let ziv@2214: val oldInline = Settings.getMonoInline () ziv@2214: val oldFull = !MonoReduce.fullMode ziv@2214: in ziv@2214: (Settings.setMonoInline (case Int.maxInt of ziv@2214: NONE => 1000000 ziv@2214: | SOME n => n); ziv@2214: MonoReduce.fullMode := true; ziv@2214: let ziv@2214: val file = MonoReduce.reduce file ziv@2214: val file = MonoOpt.optimize file ziv@2214: val file = Fuse.fuse file ziv@2214: val file = MonoOpt.optimize file ziv@2214: val file = MonoShake.shake file ziv@2214: in ziv@2214: file ziv@2214: end before ziv@2214: (MonoReduce.fullMode := oldFull; ziv@2214: Settings.setMonoInline oldInline)) ziv@2214: handle ex => (Settings.setMonoInline oldInline; ziv@2214: MonoReduce.fullMode := oldFull; ziv@2214: raise ex) ziv@2214: end ziv@2214: ziv@2214: end