You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(56) |
Sep
(40) |
Oct
(30) |
Nov
(144) |
Dec
(23) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(41) |
Feb
(29) |
Mar
(31) |
Apr
(39) |
May
(193) |
Jun
(45) |
Jul
(19) |
Aug
(3) |
Sep
(23) |
Oct
(83) |
Nov
(92) |
Dec
(123) |
2007 |
Jan
(90) |
Feb
(267) |
Mar
(120) |
Apr
(51) |
May
(40) |
Jun
(121) |
Jul
(109) |
Aug
(173) |
Sep
(77) |
Oct
(52) |
Nov
(121) |
Dec
(62) |
2008 |
Jan
(76) |
Feb
(53) |
Mar
(98) |
Apr
(87) |
May
(26) |
Jun
(27) |
Jul
(23) |
Aug
(136) |
Sep
(79) |
Oct
(68) |
Nov
(29) |
Dec
(14) |
2009 |
Jan
(7) |
Feb
(2) |
Mar
(11) |
Apr
(75) |
May
(1) |
Jun
(95) |
Jul
(19) |
Aug
(4) |
Sep
(8) |
Oct
(93) |
Nov
(43) |
Dec
(21) |
2010 |
Jan
(20) |
Feb
(23) |
Mar
(18) |
Apr
(6) |
May
(20) |
Jun
(23) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
(2) |
Feb
(6) |
Mar
(15) |
Apr
(5) |
May
(9) |
Jun
(14) |
Jul
(9) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(2) |
Jun
(17) |
Jul
(37) |
Aug
|
Sep
(1) |
Oct
(6) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(5) |
Apr
(2) |
May
(7) |
Jun
(11) |
Jul
(8) |
Aug
|
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(7) |
Aug
(2) |
Sep
|
Oct
(5) |
Nov
(2) |
Dec
(4) |
2015 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
(9) |
Jul
(1) |
Aug
|
Sep
|
Oct
(4) |
Nov
(1) |
Dec
|
2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
(3) |
Mar
(3) |
Apr
(7) |
May
(2) |
Jun
(2) |
Jul
(5) |
Aug
(1) |
Sep
(2) |
Oct
(17) |
Nov
(4) |
Dec
(7) |
2018 |
Jan
(5) |
Feb
(14) |
Mar
(2) |
Apr
(5) |
May
(2) |
Jun
(5) |
Jul
|
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(5) |
Dec
|
2019 |
Jan
(4) |
Feb
(2) |
Mar
(3) |
Apr
(1) |
May
(8) |
Jun
(14) |
Jul
(2) |
Aug
|
Sep
(2) |
Oct
(2) |
Nov
(15) |
Dec
(2) |
2020 |
Jan
(10) |
Feb
(3) |
Mar
(1) |
Apr
|
May
(9) |
Jun
(4) |
Jul
(16) |
Aug
(10) |
Sep
(4) |
Oct
(3) |
Nov
|
Dec
|
2021 |
Jan
(11) |
Feb
(2) |
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(5) |
Sep
|
Oct
(6) |
Nov
(4) |
Dec
(4) |
2022 |
Jan
(4) |
Feb
(2) |
Mar
(2) |
Apr
|
May
(6) |
Jun
(3) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(5) |
Jun
(1) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(13) |
Dec
|
2024 |
Jan
(1) |
Feb
|
Mar
(5) |
Apr
|
May
(10) |
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(14) |
2025 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(3) |
Jul
|
Aug
|
Sep
(2) |
Oct
(2) |
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
1
|
2
|
3
(2) |
4
|
5
|
6
(1) |
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
(1) |
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
|
|
From: GitHub <no...@gi...> - 2019-01-16 20:58:25
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 3b72967f2efdcda496ef1d4a462d5afe4c9878bb https://github.com/MLton/mlton/commit/3b72967f2efdcda496ef1d4a462d5afe4c9878bb Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add `-globalize-arrays {false|true}` compile-time option Commit: ecdb044466da413bac60c27c8a9bf0c5cb9cd183 https://github.com/MLton/mlton/commit/ecdb044466da413bac60c27c8a9bf0c5cb9cd183 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Allow globalization of arrays Space-safety prohibits ConstantPropagation from globalizing all arrays that are allocated at most once by a program. In particular, because globals are live for the duration of the program, globalizing an `int list array` (for example) would not be safe-for-space: arbitrarily large lists may be stored in the array and never garbage collected (whereas, when the `int list array` is not globalized, it will be garbage collected when it is no longer live). On the other hand, globalizing an `int array` (with a constant length) is safe-for-space. However, previously, the globalization of a `val a: t array = Array_alloc[t] (l)` was conditioned on the smallness of `t array`. Furthermore, `Type.isSmall` returns `false` for arrays, so no array would be globalized. It is correct to globalize an array if `t` is small; note that to globalize `val a: t array = Array_alloc[t] (l)`, `l` (the length) must be globalized and must, therefore, be a constant and the array is of constant size. (This is Stephen Weeks's relaxed notion of safe-for-space, where the constant factor blowup can be chosen per program.) In practice, it may be better to limit globalization of arrays to ones with "small" length in addition to small element type. This commit allows a `val a: t array = Array_alloc[t] (l)` to be globalized if `-globalize-arrays true`, `t` is small, and `l` is globalized. Commit: a48f2157740c5863975420c4e56759c060730045 https://github.com/MLton/mlton/commit/a48f2157740c5863975420c4e56759c060730045 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Simplify ConstantPropagation.Value.global{,s} functions Use standard Trace.trace and prep recursive calls. Commit: ed1fc83a567734f7211f37901eef3e2ea504b737 https://github.com/MLton/mlton/commit/ed1fc83a567734f7211f37901eef3e2ea504b737 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Parameterize ConstantPropagation.Value.global by isSmallType Commit: a820082005eb37bb6a8903f09fff1c98c56febb0 https://github.com/MLton/mlton/commit/a820082005eb37bb6a8903f09fff1c98c56febb0 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add `-globalize-small-type <n>` compile-time option Commit: da7d7ebfdaff3e8d7f7c83205be44b142e10fe69 https://github.com/MLton/mlton/commit/da7d7ebfdaff3e8d7f7c83205be44b142e10fe69 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Add a extreme globalizeSmallType variants `-globalize-small-type 0` is the constant `false` function, which globalizes no references or arrays. `-globalize-small-type 1` is the previous `Type.isSmall` function, which returns false for all datatypes. `-globalize-small-type 9` is the constant `true` function, which is not safe-for-space. Commit: c7ab39daa0cfb7f94041862995ed44fb5eea07de https://github.com/MLton/mlton/commit/c7ab39daa0cfb7f94041862995ed44fb5eea07de Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/constant-propagation.fun Log Message: ----------- Add `-globalize-refs {true|false}` compile-time option Commit: 9bdcc934dc26941d66873351e5c828ef12d6ba8b https://github.com/MLton/mlton/commit/9bdcc934dc26941d66873351e5c828ef12d6ba8b Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Add "New Globals (<n>): ..." to ConstantPropagation diagnostics Commit: 92a0ded7b8f3d33196cd290b0518a132210ea246 https://github.com/MLton/mlton/commit/92a0ded7b8f3d33196cd290b0518a132210ea246 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Prepare for implementing `isSmallType` variants via properties Commit: 04ae623c816f48500ce5b2420bb5d340579463bf https://github.com/MLton/mlton/commit/04ae623c816f48500ce5b2420bb5d340579463bf Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Implement simple `isSmallType` variant via a property Commit: fa76804122b081c506acf3f9a28db0010402a5a2 https://github.com/MLton/mlton/commit/fa76804122b081c506acf3f9a28db0010402a5a2 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Refactor to `mkIsSmallType` generator function Commit: 72fa80c1129477be35196f5e875a6002bafa0225 https://github.com/MLton/mlton/commit/72fa80c1129477be35196f5e875a6002bafa0225 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Add `-globalize-small-type 2` variant `-globalize-small-type 2` treats datatypes with all nullary constructors as small. Commit: fdfce309e314d783d67aada6ca57c0c7a422abec https://github.com/MLton/mlton/commit/fdfce309e314d783d67aada6ca57c0c7a422abec Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Rename `destroySmallType` to `destroyIsSmallType` Commit: cc7e84d92761cd9726aec8ba27e562b3f3fdb152 https://github.com/MLton/mlton/commit/cc7e84d92761cd9726aec8ba27e562b3f3fdb152 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Add `-globalize-small-type 3` variant `-globalize-small-type 3` treats datatypes that have all constructor arguments satisfying `#isSmallType o (mkIsSmallType 1)` as small. Commit: dd13c6b23f0458e7154a56cd4c41e22c2931a835 https://github.com/MLton/mlton/commit/dd13c6b23f0458e7154a56cd4c41e22c2931a835 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Code formatting in ConstantPropagation Commit: 7d3774c75087f12dea077180696f03582446edca https://github.com/MLton/mlton/commit/7d3774c75087f12dea077180696f03582446edca Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Add `structure ConstantPropagation.Value.Raw` Fixes a bug (triggered by the `simple` benchmark with `-globalize-arrays true`) where the rawness of an array value was not properly propagated. Previously, the rawness of an array value was implemented as `bool option ref`, but coercing `ref NONE` to `ref NONE` would not remember the coercion when the first raw became `ref (SOME true)`. Now, a proper "flat lattice"-like `structure Raw` is used. Commit: fdc086b3d676faf4c27de981adca98cf22a1a08a https://github.com/MLton/mlton/commit/fdc086b3d676faf4c27de981adca98cf22a1a08a Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/ssa/constant-propagation.fun Log Message: ----------- Disallow globalization of IntInf and Thread types Technically, both IntInf and Thread should not be considered small types, as they can be of unbounded size (an IntInf can be represented by a sequence, while a Thread implicitly contains a stack). Note, an IntInf value can be globalized (as it is a constant), but an `IntInf.int ref` cannot. Commit: ff2961072c85d5785cacda66b9886f050d6161ae https://github.com/MLton/mlton/commit/ff2961072c85d5785cacda66b9886f050d6161ae Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/constant-propagation.fun Log Message: ----------- Add `-globalize-small-int-inf {true|false}` compile-time option Allow previous behavior of globalizing `IntInf.int ref` values. Commit: 0847620cd2c59bfaba40c74865e85cfa94c473fc https://github.com/MLton/mlton/commit/0847620cd2c59bfaba40c74865e85cfa94c473fc Author: Matthew Fluet <mat...@gm...> Date: 2019-01-11 (Fri, 11 Jan 2019) Changed paths: M mlton/main/main.fun M mlton/ssa/constant-propagation.fun Log Message: ----------- Add `-globalize-small-type 4` variant `-globalize-small-type 4` uses RefFlatten's more precise notion of small/large types: build a graph of the dependencies between datatypes, force any (mutually) recursive datatypes to be large types, solve a fixed-point analysis of `Size.<=` constraints. Commit: 752467c48d840620c71b7f92feb4572c85bcce5e https://github.com/MLton/mlton/commit/752467c48d840620c71b7f92feb4572c85bcce5e Author: Matthew Fluet <Mat...@gm...> Date: 2019-01-16 (Wed, 16 Jan 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/constant-propagation.fun Log Message: ----------- Merge pull request #288 from MatthewFluet/globalize-opt Alternate strategies for globalization in ConstantPropagation Extend globalization aspect of ConstantPropagation to support globalization of arrays and to support different "small type" strategies. Closes MLton/mlton#206. Space-safety prohibits ConstantPropagation from globalizing all arrays and refs that are allocated at most once by a program. In particular, because globals are live for the duration of the program, globalizing an `int list ref` (for example) would not be safe-for-space: an arbitrarily large list may be written to the reference and never be garbage collected (whereas, when the `int list ref` is not globalized, it will be garbage collected when it is no longer live). On the other hand, globalizing an `int ref` is safe-for-space. However, MLton previously used only a very conservative estimation for space safety. Only "small" types may be globalized, where smallness is defined as: fun isSmall t = case dest t of Array _ => false | Datatype _ => false | Ref t => isSmall t | Tuple ts => Vector.forall (ts, isSmall) | Vector _ => false | _ => true Note that no `Datatype` is small; this is conservative (since a recursive datatype could represent unbounded data), but prevents globalizing `bool ref`. Also, no `Array` is small; this is correct (because an `int array ref` should not be globalized), but the globalization of a `val a: t array = Array_alloc[t] (l)` was conditioned on the smallness of `t array`, not the smallness of `t`. It is correct to globalize an array if `t` were small; note that to globalize `val a: t array = Array_alloc[t] (l)`, `l` (the length) must be globalized and must, therefore, be a constant and the array is of constant size. (This is Stephen Weeks's relaxed notion of safe-for-space, where the constant factor blowup can be chosen per program.) This pull request adds support for alternate globalization strategies: * `-globalize-arrays {false|true}`: globalize arrays * `-globalize-refs {true|false}`: globalize refs * `-globalize-small-int-inf {true|false}`:globalize `IntInf` as a small type * `-globalize-small-type {1|0|2|3|4|9}`: strategies for classifying a type as "small": * `0`: constant `false` function (no types considered small) * `1`: no `Datatype` is considered small (original strategy) * `2`: `Datatype`s with all nullary constructors are considered small * `3`: `Datatype`s with all constructor arguments considered small according to strategy `2` are considered small * `4`: Fixed-point analysis of `Datatype`s to determine smallness * `9`: constant `true` function (all types considered small; not safe-for-space) The defaults correspond to the previous behavior. Unfortunately, additional globalization has little to no (positive) effect on benchmarks: MLton0 -- ~/devel/mlton/builds/20190106.115052-gfe996d4/bin/mlton MLton1 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 1 MLton2 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 2 MLton3 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 3 MLton4 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 4 MLton5 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 1 MLton6 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 2 MLton7 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 3 MLton8 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 4 run time ratio benchmark MLton0 MLton1 MLton2 MLton3 MLton4 MLton5 MLton6 MLton7 MLton8 DLXSimulator 1.00 1.00 1.03 1.00 1.00 0.99 1.00 1.01 1.01 checksum 1.00 1.00 1.13 1.14 1.13 1.00 1.12 1.13 1.14 flat-array 1.00 1.00 1.00 1.00 1.01 1.19 1.19 1.19 1.19 hamlet 1.00 1.00 1.02 1.01 1.01 1.00 0.96 0.97 0.97 imp-for 1.00 1.00 1.06 1.05 1.06 1.00 1.05 1.06 1.06 knuth-bendix 1.00 1.00 1.03 1.03 1.03 1.00 1.03 1.03 1.03 lexgen 1.00 0.99 1.05 0.99 1.03 1.04 1.03 1.02 1.07 model-elimination 1.00 1.01 1.02 1.02 1.02 1.00 1.03 1.02 1.03 peek 1.00 1.00 1.03 1.03 1.04 1.00 1.04 1.04 1.04 ray 1.00 1.03 0.99 0.99 1.01 0.99 0.99 0.99 0.98 raytrace 1.00 1.03 1.00 1.02 1.03 0.99 1.00 1.01 1.01 simple 1.00 0.98 0.99 1.00 0.99 0.97 0.97 0.96 0.97 tak 1.00 1.00 1.04 1.03 1.10 1.01 1.02 1.08 1.00 wc-scanStream 1.00 1.00 1.06 1.06 1.06 1.00 1.04 1.06 1.07 Note that `MLton0` and `MLton1` generate identical code (modulo the random magic number), so the slowdowns in `ray` and `raytrace` are noise, which also suggests that slowdowns/speedups of <= 3% are also likely noise. The slowdown in `flat-array` with `-globalize-array true` is explained as follows. The `flat-array` benchmark uses `Vector.tabulate` to allocate a vector that is used for all iterations of the benchmark. With `-globalize-array false`, the array is not globalized, and in SSA/SSA2, we have: x_1212: ((word32, word32) tuple) array = prim Array_alloc((word32, word32) tuple) (global_138 (*0xF4240*)) ... x_757: ((word32, word32) tuple) vector = prim Array_toVector((word32, word32) tuple) (x_1212) ... x_1287: (word32, word32) tuple = prim Vector_sub((word32, word32) tuple) (x_757, x_1283) but with `-globalize-array true`, the array is globalized, and in SSA/SS2, we have: global_490: ((word32, word32) tuple) array = prim Array_alloc((word32, word32) tuple) (global_138 (*0xF4240*)) ... x_757: ((word32, word32) tuple) vector = prim Array_toVector((word32, word32) tuple) (global_490) ... x_1286: (word32, word32) tuple = prim Vector_sub((word32, word32) tuple) (x_757, x_1282) At RSSA, the `Array_toVector` becomes a header update and the array variable is cast/copy-propagated for the vector variable; with `-globalize-arrays false`, we have L_531 (x_1212: Objptr (opt_11)) CReturn {func = {..., target = GC_sequenceAllocate}} = ... OW64 (x_1212, ~8): Word64 := opt_12 ... x_1354: Word32 = XW32 (Cast (x_1212, Objptr (opt_12)), x_1283, 8, 0) x_1353: Word32 = XW32 (Cast (x_1212, Objptr (opt_12)), x_1283, 8, 4) but with `-globalize-arrays true`, we have L_488 (global_490: Objptr (opt_7)) CReturn {func = {..., target = GC_sequenceAllocate}} = ... OW64 (global_490, ~8): Word64 := opt_12 ... x_1353: Word32 = XW32 (Cast (global_490, Objptr (opt_12)), x_1282, 8, 0) x_1352: Word32 = XW32 (Cast (global_490, Objptr (opt_12)), x_1282, 8, 4) Finally, with `-globalize-arrays false`, `x_1212` becomes a local (because the loops to initialize and use the vector are non-allocating): RW32(2): Word32 = XW32 (Cast (RP(0): Objptr (opt_11), Objptr (opt_12)), RW64(0): Word64, 8, 0): Word32 RW32(3): Word32 = XW32 (Cast (RP(0): Objptr (opt_11), Objptr (opt_12)), RW64(0): Word64, 8, 4): Word32 but with `-globalize-arrays true`: RW32(2): Word32 = XW32 (Cast (glob {index = 1, isRoot = true, ty = Objptr (opt_7)}, Objptr (opt_12)), RW64(0): Word64, 8, 0): Word32 RW32(3): Word32 = XW32 (Cast (glob {index = 1, isRoot = true, ty = Objptr (opt_7)}, Objptr (opt_12)), RW64(0): Word64, 8, 4): Word32 The innermost loop of the benchmark goes from indexing a sequence stored in a local (`RP(0)`) to indexing a sequence stored in a global (`GP(1)`). All of the codegens should implement the former by using a hardware register for `RP(0)`, but will implement the latter with a memory read. In light of the above, and related to MLton/mlton#218, it may be beneficial to "deglobalize" object pointer globals; that is, in RSSA functions that have multiple accesses through the same object pointer global (particularly within loops) could be translated to copy the global to a local. The slowdown in `checksum` is less easily explained. The only new objects globalized with `-globalize-small-type 2` as compared to `-globalize-small-type 1` are two `bool ref` objects, corresponding to the `exiting` flag of `basis-library/mlton/exit.sml` and the `staticIsInUse` flag of `basis-library/util/one.sml` used by `Int.fmt`. That small change seems to lead to code layout and cache effects that result in the slowdown, because the assembly code is not substantial different. With `-enable-pass machineSuffle` and `-seed-rand <w>`, one can perturb the code layout and observe that the slowdowns are not universal: MLton0 -- ~/devel/mlton/builds/20190106.115052-gfe996d4/bin/mlton MLton1 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 1 MLton2 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 1 -enable-pass machineShuffle -seed-rand 42424242 MLton3 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 1 -enable-pass machineShuffle -seed-rand deadbeef MLton4 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 2 MLton5 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 2 -enable-pass machineShuffle -seed-rand 42424242 MLton6 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 2 -enable-pass machineShuffle -seed-rand deadbeef MLton7 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 3 MLton8 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 3 -enable-pass machineShuffle -seed-rand 42424242 MLton9 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 3 -enable-pass machineShuffle -seed-rand deadbeef MLton10 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 4 MLton11 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 4 -enable-pass machineShuffle -seed-rand 42424242 MLton12 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 4 -enable-pass machineShuffle -seed-rand deadbeef MLton13 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 1 MLton14 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 1 -enable-pass machineShuffle -seed-rand 42424242 MLton15 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 1 -enable-pass machineShuffle -seed-rand deadbeef MLton16 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 2 MLton17 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 2 -enable-pass machineShuffle -seed-rand 42424242 MLton18 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 2 -enable-pass machineShuffle -seed-rand deadbeef MLton19 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 3 MLton20 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 3 -enable-pass machineShuffle -seed-rand 42424242 MLton21 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 3 -enable-pass machineShuffle -seed-rand deadbeef MLton22 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 4 MLton23 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 4 -enable-pass machineShuffle -seed-rand 42424242 MLton24 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 4 -enable-pass machineShuffle -seed-rand deadbeef run time ratio benchmark MLton0 MLton1 MLton2 MLton3 MLton4 MLton5 MLton6 MLton7 MLton8 MLton9 MLton10 MLton11 MLton12 MLton13 MLton14 MLton15 MLton16 MLton17 MLton18 MLton19 MLton20 MLton21 MLton22 MLton23 MLton24 checksum 1.00 1.00 1.00 1.01 1.14 1.01 1.00 1.14 1.01 1.01 1.14 1.00 1.04 1.00 1.00 1.00 1.14 1.00 1.01 1.16 1.00 1.01 1.15 1.00 1.01 flat-array 1.00 1.01 1.02 1.00 1.00 1.01 1.01 1.03 1.01 1.01 1.01 1.01 1.01 1.23 1.19 1.19 1.19 1.20 1.19 1.20 1.20 1.19 1.20 1.19 1.20 hamlet 1.00 0.99 1.00 0.99 1.01 1.01 1.00 1.01 1.03 1.01 1.01 1.02 1.01 1.00 1.00 0.99 0.95 0.95 0.94 0.97 0.96 0.96 0.98 0.98 0.99 imp-for 1.00 1.00 1.05 1.05 1.05 1.02 1.00 1.05 0.99 1.00 1.05 1.00 1.01 1.00 1.05 1.05 1.05 0.99 1.00 1.05 1.00 1.00 1.05 1.00 0.99 lexgen 1.00 0.97 1.00 0.97 1.03 1.03 1.01 1.04 0.99 0.95 0.99 0.99 0.95 0.97 0.98 0.95 0.96 1.01 0.98 1.00 1.04 0.95 0.96 1.00 0.95 peek 1.00 1.00 1.00 1.01 1.03 1.01 1.04 1.03 1.01 1.04 1.03 1.01 1.03 1.00 1.00 1.01 1.04 1.01 1.05 1.03 1.01 1.04 1.04 1.00 1.04 simple 1.00 1.01 1.01 1.00 1.00 0.99 1.02 1.00 0.99 1.00 1.00 1.00 1.00 0.98 0.97 0.99 0.98 0.97 0.99 0.97 0.99 0.98 0.98 0.98 0.99 tak 1.00 0.99 0.90 1.00 1.05 0.90 0.99 1.02 0.89 0.99 1.04 0.90 1.00 0.99 0.89 0.99 0.99 0.90 0.99 1.01 0.90 1.00 1.00 0.90 1.00 wc-scanStream 1.00 1.01 1.01 1.03 1.06 1.02 1.03 1.05 1.02 1.02 1.04 1.01 1.00 1.01 1.01 1.00 1.06 1.01 1.00 1.07 1.01 1.00 1.05 1.03 1.02 Note that while `checksum` with MLton4 has a slowdown, `checksum` with MLton5 and MLton6 (which are identical up to shuffling of the functions and basic blocks at the MachineIR) do not have a slowdown. Similarly `tak` with MLton0 and MLton1 have similar running time, but `tak` with MLton3 has a speedup. On the other hand, `flat-array`'s slowdowns with `-globalize-arrays true` are not due to code layout effects. `hamlet` may have a slight speedup with `-globalize-arrays true`, but that is significantly outweighted by the slowdown in `flat-array`. The conclusion is to leave the defaults corresponding to the original behavior. Full benchmark results: MLton0 -- ~/devel/mlton/builds/20190106.115052-gfe996d4/bin/mlton MLton1 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 1 MLton2 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 2 MLton3 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 3 MLton4 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays false -globalize-refs true -globalize-small-type 4 MLton5 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 1 MLton6 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 2 MLton7 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 3 MLton8 -- ~/devel/mlton/builds/20190111.182738-g0847620/bin/mlton -globalize-arrays true -globalize-refs true -globalize-small-type 4 run time ratio benchmark MLton0 MLton1 MLton2 MLton3 MLton4 MLton5 MLton6 MLton7 MLton8 DLXSimulator 1.00 1.00 1.03 1.00 1.00 0.99 1.00 1.01 1.01 barnes-hut 1.00 1.01 1.01 1.02 1.01 1.01 1.01 1.02 1.01 boyer 1.00 1.00 1.01 1.01 1.02 1.00 1.01 1.01 1.01 checksum 1.00 1.00 1.13 1.14 1.13 1.00 1.12 1.13 1.14 count-graphs 1.00 1.00 0.99 1.01 0.99 1.00 1.00 1.00 0.99 even-odd 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 fft 1.00 1.00 1.01 1.02 1.02 1.01 1.01 1.00 1.01 fib 1.00 1.00 1.00 1.00 1.01 1.00 1.00 1.00 1.00 flat-array 1.00 1.00 1.00 1.00 1.01 1.19 1.19 1.19 1.19 hamlet 1.00 1.00 1.02 1.01 1.01 1.00 0.96 0.97 0.97 imp-for 1.00 1.00 1.06 1.05 1.06 1.00 1.05 1.06 1.06 knuth-bendix 1.00 1.00 1.03 1.03 1.03 1.00 1.03 1.03 1.03 lexgen 1.00 0.99 1.05 0.99 1.03 1.04 1.03 1.02 1.07 life 1.00 1.00 1.00 1.00 1.00 1.01 1.01 1.00 1.00 logic 1.00 1.00 0.98 0.99 0.99 1.00 0.98 0.99 1.00 mandelbrot 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 matrix-multiply 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.01 1.00 md5 1.00 1.00 0.99 0.99 0.99 1.00 0.99 0.99 0.99 merge 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 mlyacc 1.00 1.01 1.01 1.01 1.01 1.00 0.99 0.99 1.01 model-elimination 1.00 1.01 1.02 1.02 1.02 1.00 1.03 1.02 1.03 mpuz 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 nucleic 1.00 1.01 1.00 1.00 0.99 1.00 0.99 0.99 1.00 output1 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 peek 1.00 1.00 1.03 1.03 1.04 1.00 1.04 1.04 1.04 psdes-random 1.00 1.00 1.00 1.00 1.00 1.00 1.01 1.00 1.00 ratio-regions 1.00 0.99 0.98 0.98 1.01 1.01 0.99 1.00 1.01 ray 1.00 1.03 0.99 0.99 1.01 0.99 0.99 0.99 0.98 raytrace 1.00 1.03 1.00 1.02 1.03 0.99 1.00 1.01 1.01 simple 1.00 0.98 0.99 1.00 0.99 0.97 0.97 0.96 0.97 smith-normal-form 1.00 1.00 1.01 0.99 1.00 1.00 1.00 1.00 1.00 string-concat 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 tailfib 1.00 1.00 1.00 0.99 1.00 1.00 1.00 1.00 1.00 tak 1.00 1.00 1.04 1.03 1.10 1.01 1.02 1.08 1.00 tensor 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 tsp 1.00 1.00 1.00 1.00 1.00 0.99 1.00 1.00 1.00 tyan 1.00 1.00 1.00 1.01 1.01 1.01 1.01 1.01 1.01 vector-rev 1.00 0.99 0.99 0.98 0.98 0.98 0.99 0.98 0.98 vector32-concat 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 vector64-concat 1.00 1.00 1.00 1.00 1.00 0.99 1.00 1.00 0.99 vliw 1.00 0.98 1.00 1.01 1.00 1.00 0.98 0.98 0.98 wc-input1 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 wc-scanStream 1.00 1.00 1.06 1.06 1.06 1.00 1.04 1.06 1.07 zebra 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 zern 1.00 1.02 1.02 0.99 1.01 0.99 0.99 1.01 0.99 size benchmark MLton0 MLton1 MLton2 MLton3 MLton4 MLton5 MLton6 MLton7 MLton8 DLXSimulator 209,076 209,076 209,140 209,140 209,140 209,076 208,836 208,340 208,340 barnes-hut 176,199 176,199 176,071 176,071 176,071 176,199 176,071 176,071 176,071 boyer 243,369 243,369 243,289 243,289 243,289 243,369 243,289 243,289 243,289 checksum 117,561 117,561 117,433 117,433 117,433 117,561 117,433 117,433 117,433 count-graphs 145,065 145,065 145,017 145,017 145,017 145,065 144,937 144,937 144,937 even-odd 117,529 117,529 117,433 117,433 117,433 117,529 117,433 117,433 117,433 fft 142,307 142,307 141,315 141,315 141,315 142,307 141,315 141,315 141,315 fib 117,449 117,449 117,321 117,321 117,321 117,449 117,321 117,321 117,321 flat-array 117,177 117,177 117,049 117,049 117,049 117,193 117,081 117,081 117,081 hamlet 1,434,228 1,434,228 1,433,220 1,433,220 1,433,220 1,434,228 1,432,564 1,427,956 1,427,396 imp-for 117,241 117,241 117,145 117,145 117,145 117,241 117,145 117,145 117,145 knuth-bendix 186,116 186,116 186,212 186,212 186,212 186,116 186,212 186,212 186,212 lexgen 290,931 290,931 290,819 290,819 290,819 290,931 290,819 290,819 290,819 life 141,113 141,113 141,065 141,065 141,065 141,113 141,065 141,065 141,065 logic 197,417 197,417 197,273 197,273 197,273 197,417 197,273 197,273 197,273 mandelbrot 117,273 117,273 117,177 117,177 117,177 117,273 117,177 117,177 117,177 matrix-multiply 119,577 119,577 119,417 119,417 119,417 119,577 119,417 119,417 119,417 md5 144,676 144,676 144,500 144,500 144,500 144,676 144,500 144,500 144,500 merge 118,953 118,953 118,857 118,857 118,857 118,953 118,857 118,857 118,857 mlyacc 643,555 643,555 643,651 643,651 643,651 643,555 643,651 643,651 643,475 model-elimination 796,054 796,054 793,958 793,798 793,798 796,054 794,166 792,246 792,246 mpuz 123,545 123,545 123,481 123,481 123,481 123,545 123,481 123,481 123,481 nucleic 297,249 297,249 297,233 297,233 297,233 297,249 297,233 297,233 297,233 output1 151,768 151,768 149,848 149,848 149,848 151,768 149,848 149,848 149,848 peek 150,164 150,164 150,132 150,132 150,132 150,164 150,132 150,132 150,132 psdes-random 121,545 121,545 121,401 121,401 121,401 121,545 121,401 121,401 121,401 ratio-regions 144,137 144,137 144,169 144,169 144,169 144,137 144,169 144,169 144,169 ray 250,058 250,058 250,218 250,218 250,218 250,058 249,818 249,066 249,066 raytrace 368,988 368,988 368,108 368,108 368,108 368,956 367,868 367,468 367,468 simple 345,205 345,205 345,381 345,381 345,381 329,557 329,557 329,317 329,317 smith-normal-form 279,837 279,837 279,645 279,645 279,645 279,837 279,341 279,341 279,341 string-concat 119,129 119,129 119,033 119,033 119,033 119,209 119,033 119,033 119,033 tailfib 117,273 117,273 117,177 117,177 117,177 117,273 117,177 117,177 117,177 tak 117,449 117,449 117,321 117,321 117,321 117,449 117,321 117,321 117,321 tensor 179,292 179,292 176,908 176,908 176,908 179,292 176,908 176,908 176,908 tsp 158,860 158,860 158,668 158,668 158,668 158,860 158,668 158,668 158,668 tyan 223,588 223,588 223,044 223,044 223,044 223,588 223,044 223,044 223,044 vector-rev 118,105 118,105 118,009 118,009 118,009 118,153 117,977 117,977 117,977 vector32-concat 118,297 118,297 118,201 118,201 118,201 118,329 118,185 118,185 118,185 vector64-concat 118,329 118,329 118,169 118,169 118,169 118,329 118,217 118,217 118,217 vliw 505,509 505,509 503,013 503,013 503,013 505,637 500,917 497,957 497,957 wc-input1 179,051 179,051 178,923 178,923 178,923 179,051 178,923 178,923 178,923 wc-scanStream 188,155 188,155 188,027 188,027 188,027 188,155 188,027 188,027 188,027 zebra 225,364 225,364 225,220 225,220 225,220 225,364 225,220 225,220 225,220 zern 153,241 153,241 152,521 152,521 152,521 153,241 152,585 152,585 152,585 compile time benchmark MLton0 MLton1 MLton2 MLton3 MLton4 MLton5 MLton6 MLton7 MLton8 DLXSimulator 3.19 3.14 3.45 3.51 3.02 3.27 3.18 3.45 3.24 barnes-hut 2.93 2.94 2.96 2.97 3.06 2.92 2.96 2.93 2.96 boyer 3.36 3.49 3.48 3.32 3.42 3.40 3.52 3.53 3.49 checksum 2.53 2.56 2.47 2.56 2.57 2.46 2.56 2.54 2.62 count-graphs 2.68 2.69 2.71 2.80 2.80 2.79 2.67 2.69 2.76 even-odd 2.45 2.56 2.46 2.56 2.48 2.50 2.48 2.55 2.57 fft 2.64 2.57 2.62 2.66 2.35 2.68 2.60 2.54 2.62 fib 2.46 2.46 2.58 2.48 2.55 2.45 2.55 2.54 2.46 flat-array 2.52 2.56 2.55 2.56 2.55 2.54 2.53 2.56 2.55 hamlet 15.27 15.74 14.48 14.35 14.48 15.63 15.21 14.88 15.04 imp-for 2.48 2.56 2.52 2.55 2.55 2.34 2.42 2.48 2.54 knuth-bendix 2.89 2.90 2.90 3.01 3.02 2.93 3.01 3.13 2.99 lexgen 3.40 3.88 3.76 3.82 3.74 3.62 3.50 3.81 3.71 life 2.66 2.71 2.70 2.74 2.72 2.64 2.74 2.68 2.60 logic 3.06 3.05 3.11 3.12 3.00 3.13 3.14 2.92 2.83 mandelbrot 2.51 2.54 2.53 2.58 2.57 2.53 2.56 2.55 2.45 matrix-multiply 2.48 2.50 2.52 2.49 2.57 2.60 2.60 2.57 2.53 md5 2.65 2.68 2.78 2.58 2.78 2.80 2.58 2.80 2.69 merge 2.47 2.49 2.58 2.57 2.55 2.49 2.57 2.50 2.52 mlyacc 7.85 7.94 8.00 7.98 7.90 7.69 8.05 8.09 7.54 model-elimination 7.08 7.98 7.62 7.11 7.40 8.24 7.84 7.96 8.15 mpuz 2.34 2.61 2.60 2.56 2.53 2.62 2.42 2.53 2.52 nucleic 4.06 4.17 4.07 4.05 4.08 4.06 4.28 4.33 4.14 output1 2.69 2.68 2.52 2.58 2.77 2.79 2.78 2.57 2.77 peek 2.74 2.78 2.58 2.80 2.80 2.73 2.70 2.68 2.72 psdes-random 2.56 2.53 2.49 2.48 2.50 2.48 2.53 2.64 2.50 ratio-regions 2.80 2.82 2.62 2.88 2.86 2.89 2.81 2.80 2.79 ray 3.34 3.62 3.69 3.47 3.45 3.60 3.48 3.37 3.40 raytrace 4.55 4.88 4.47 4.32 4.64 4.30 4.48 4.43 4.50 simple 4.01 4.07 4.04 4.00 3.91 3.83 3.77 3.81 3.74 smith-normal-form 3.75 3.60 3.82 3.58 3.40 3.79 3.60 3.58 3.58 string-concat 2.46 2.66 2.54 2.45 2.57 2.56 2.46 2.51 2.49 tailfib 2.44 2.54 2.53 2.57 2.50 2.57 2.57 2.36 2.54 tak 2.45 2.57 2.56 2.63 2.47 2.44 2.43 2.44 2.52 tensor 3.05 3.16 3.07 3.15 3.10 3.32 3.18 3.16 3.13 tsp 2.81 2.79 2.57 2.74 2.76 2.75 2.84 2.84 2.82 tyan 3.27 3.06 3.38 3.26 3.35 3.23 3.22 3.22 3.24 vector-rev 2.49 2.57 2.56 2.33 2.61 2.40 2.52 2.49 2.54 vector32-concat 2.53 2.49 2.52 2.47 2.55 2.63 2.49 2.49 2.51 vector64-concat 2.48 2.46 2.50 2.52 2.48 2.54 2.46 2.47 2.48 vliw 5.63 5.63 5.64 6.14 5.43 6.26 5.78 6.17 6.16 wc-input1 3.06 2.96 2.95 2.98 2.91 2.87 2.90 2.97 2.96 wc-scanStream 3.01 2.97 3.02 2.95 3.06 3.04 3.03 3.01 3.09 zebra 3.30 3.37 3.36 3.26 3.34 3.51 3.31 3.26 3.34 zern 2.69 2.74 2.62 2.64 2.72 2.74 2.73 2.43 2.70 run time benchmark MLton0 MLton1 MLton2 MLton3 MLton4 MLton5 MLton6 MLton7 MLton8 DLXSimulator 32.67 32.69 33.65 32.71 32.53 32.50 32.63 32.84 32.92 barnes-hut 28.33 28.63 28.64 28.85 28.59 28.50 28.71 28.78 28.61 boyer 55.98 56.01 56.81 56.75 56.82 56.08 56.29 56.72 56.76 checksum 25.35 25.39 28.74 28.79 28.64 25.39 28.42 28.68 28.87 count-graphs 39.96 39.98 39.51 40.23 39.38 40.13 40.16 39.92 39.75 even-odd 39.09 39.07 39.09 39.06 39.08 39.14 39.10 39.09 39.09 fft 30.56 30.69 30.75 31.05 31.20 30.98 30.86 30.62 30.77 fib 17.70 17.75 17.77 17.77 17.83 17.77 17.74 17.67 17.77 flat-array 23.60 23.54 23.65 23.70 23.82 28.18 28.09 28.02 28.01 hamlet 39.69 39.77 40.32 40.20 40.20 39.72 38.00 38.70 38.68 imp-for 24.40 24.44 25.78 25.74 25.79 24.51 25.73 25.98 25.84 knuth-bendix 34.10 34.09 35.05 34.97 35.03 34.16 35.02 35.11 35.07 lexgen 34.22 33.77 35.88 33.88 35.27 35.64 35.09 34.93 36.52 life 38.70 38.80 38.76 38.76 38.89 38.90 38.91 38.74 38.84 logic 35.01 34.93 34.44 34.82 34.82 35.06 34.47 34.77 34.93 mandelbrot 35.78 35.77 35.79 35.80 35.81 35.82 35.79 35.78 35.81 matrix-multiply 29.74 29.80 29.82 29.89 29.79 29.72 29.84 29.90 29.86 md5 28.38 28.39 28.04 28.05 28.01 28.42 28.12 28.14 27.98 merge 32.55 32.45 32.41 32.44 32.59 32.48 32.41 32.56 32.40 mlyacc 32.76 33.01 32.94 33.14 33.23 32.83 32.52 32.49 33.11 model-elimination 38.05 38.26 38.89 38.72 38.80 38.09 39.11 38.97 39.36 mpuz 29.94 29.86 29.88 29.91 29.89 29.91 29.89 29.86 29.90 nucleic 33.73 33.91 33.60 33.68 33.35 33.74 33.40 33.47 33.58 output1 30.01 30.01 29.99 30.01 30.02 30.06 29.99 30.10 29.91 peek 33.58 33.60 34.75 34.63 34.78 33.61 34.79 34.78 34.86 psdes-random 33.84 33.91 33.83 33.86 33.91 33.88 34.16 33.91 33.91 ratio-regions 49.08 48.63 48.33 48.33 49.40 49.45 48.70 48.95 49.45 ray 37.55 38.58 37.18 37.06 37.80 37.04 37.19 37.08 36.65 raytrace 34.20 35.34 34.35 34.94 35.23 34.00 34.08 34.61 34.52 simple 29.73 29.25 29.47 29.64 29.51 28.96 28.84 28.57 28.86 smith-normal-form 39.88 39.79 40.38 39.56 39.99 39.92 39.93 39.85 39.88 string-concat 91.43 91.56 91.68 91.40 91.65 91.58 91.75 91.50 91.36 tailfib 38.06 38.06 37.93 37.85 37.90 38.12 38.00 37.98 37.87 tak 30.73 30.77 31.96 31.60 33.85 30.94 31.41 33.22 30.87 tensor 39.62 39.59 39.67 39.70 39.70 39.54 39.71 39.76 39.67 tsp 37.88 37.80 37.84 37.79 37.75 37.62 37.86 37.99 37.82 tyan 30.48 30.45 30.55 30.86 30.79 30.78 30.74 30.85 30.79 vector-rev 27.00 26.60 26.61 26.44 26.55 26.37 26.68 26.53 26.39 vector32-concat 82.46 82.52 82.56 82.72 82.43 82.56 82.37 82.30 82.22 vector64-concat 91.66 91.86 91.57 91.77 91.63 91.13 91.54 91.42 91.13 vliw 28.91 28.43 28.94 29.05 28.90 28.82 28.29 28.27 28.44 wc-input1 43.95 43.81 43.87 43.95 43.86 43.93 43.95 43.89 43.79 wc-scanStream 21.63 21.64 22.96 23.03 23.02 21.65 22.51 22.89 23.17 zebra 30.39 30.46 30.32 30.29 30.28 30.37 30.37 30.36 30.39 zern 32.37 33.09 33.05 32.00 32.71 31.99 32.04 32.83 31.96 Compare: https://github.com/MLton/mlton/compare/fe996d4ea1e5...752467c48d84 **NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019. |
From: GitHub <no...@gi...> - 2019-01-06 11:51:04
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 5d80a5cd572b1238e4edae8e2a2b99d8bbb47a82 https://github.com/MLton/mlton/commit/5d80a5cd572b1238e4edae8e2a2b99d8bbb47a82 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: M regression/real.sml Log Message: ----------- Improve `real` regression test Previously, the `real.sml` regression test would raise an uncaught `Fail` exception on a test failure, which leads to unhelpfully large diffs when run by the `bin/regression` script. Now, the `real.sml` regression test prints a short message on a test failure and continues the execution. Closes MLton/mlton#36. Commit: 33fa77180d72f2bccca582e402b8e9bccac64832 https://github.com/MLton/mlton/commit/33fa77180d72f2bccca582e402b8e9bccac64832 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: M regression/real.amd64-darwin.ok M regression/real.amd64-linux.ok M regression/real.ok M regression/real.sml A regression/real.x86-linux.ok Log Message: ----------- Improve `real` regression test Restore more informative output regarding operations; helps to make it easier to understand low-order bit differences. Commit: fe82573282267a2c726a84bfcced2f46010289b0 https://github.com/MLton/mlton/commit/fe82573282267a2c726a84bfcced2f46010289b0 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: M bin/regression Log Message: ----------- Support per-os and per-arch `.ok` files in `./bin/regression` Some regression output files can be consolidated by os or arch, rather than by platform. Commit: 86a805a8f8ba9f0420e48cf1480d8dd16a6adaaf https://github.com/MLton/mlton/commit/86a805a8f8ba9f0420e48cf1480d8dd16a6adaaf Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: R regression/real-basic.x86-cygwin.ok R regression/real-basic.x86-darwin.ok R regression/real-basic.x86-freebsd.ok R regression/real-basic.x86-hurd.ok R regression/real-basic.x86-linux.ok R regression/real-basic.x86-mingw.ok A regression/real-basic.x86.ok Log Message: ----------- Consolidate `real-basic.x86-*.ok` regression outputs Commit: dcdef3fcf51b25952560bd5b967c5e15240f213e https://github.com/MLton/mlton/commit/dcdef3fcf51b25952560bd5b967c5e15240f213e Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: M bin/regression Log Message: ----------- Determine `TARGET_{ARCH,OS}` from `-show path-map` in `bin/regression` This makes it easier to test x86-linux on amd64-linux. Commit: 78d35f60926040f94a03b681063b49e6e53240d9 https://github.com/MLton/mlton/commit/78d35f60926040f94a03b681063b49e6e53240d9 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: M bin/regression Log Message: ----------- Determine `OBJPTR_REP` from `-show path-map` in `bin/regression` A number of regression tests have output that only differ due to 32bit vs 64bit platforms. Supporting per-OBJPTR_REP `.ok` files will allow some per-platform output files to be consolidated. See MLton/mlton#259. Commit: 89bd87ccd2014743f273db3cedc5b6a403506d06 https://github.com/MLton/mlton/commit/89bd87ccd2014743f273db3cedc5b6a403506d06 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: R regression/size.amd64-linux.ok M regression/size.ok A regression/size.rep32.ok A regression/size.rep64.ok Log Message: ----------- Consolidate `size` regression test output by `OBJPTR_REP` Partially fixes MLton/mlton#259. Commit: a1b6987e247290c4ebb66c4d127ca6020d559af6 https://github.com/MLton/mlton/commit/a1b6987e247290c4ebb66c4d127ca6020d559af6 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: R regression/int-inf.rep3.amd64-darwin.ok R regression/int-inf.rep3.amd64-linux.ok M regression/int-inf.rep3.ok A regression/int-inf.rep3.rep32.ok A regression/int-inf.rep3.rep64.ok R regression/int-inf.rep3.riscv-linux.ok R regression/int-inf.rep3.x86-linux.ok R regression/int-inf.rep4.amd64-darwin.ok R regression/int-inf.rep4.amd64-linux.ok M regression/int-inf.rep4.ok A regression/int-inf.rep4.rep32.ok A regression/int-inf.rep4.rep64.ok R regression/int-inf.rep4.riscv-linux.ok R regression/int-inf.rep4.x86-linux.ok Log Message: ----------- Consolidate `int-inf.rep{3,4}` regression test output by `OBJPTR_REP` Partially fixes MLton/mlton#259. Commit: de3838febda88c53f0d1989b8596b4130a35b56f https://github.com/MLton/mlton/commit/de3838febda88c53f0d1989b8596b4130a35b56f Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: R regression/mlton.share.alpha-linux.ok R regression/mlton.share.amd64-darwin.ok R regression/mlton.share.amd64-freebsd.ok R regression/mlton.share.amd64-linux.ok R regression/mlton.share.amd64-mingw.ok R regression/mlton.share.ia64-linux.ok M regression/mlton.share.ok A regression/mlton.share.rep32.ok A regression/mlton.share.rep64.ok R regression/mlton.share.riscv-linux.ok Log Message: ----------- Consolidate `mlton.share` regression test output by `OBJPTR_REP` Partially fixes MLton/mlton#259. Commit: 06a3e70a82d7315be7ac2296ddadfc47e3ab9c81 https://github.com/MLton/mlton/commit/06a3e70a82d7315be7ac2296ddadfc47e3ab9c81 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: M bin/regression Log Message: ----------- Determine `ALIGN` in `bin/regression` The `MLton.size` dependent regression tests have output that depend on both `OBJPTR_REP` and `ALIGN`. Supporting per-`${OBJPTR_REP}a${ALIGN}` `.ok` files will allow some per-platform output files to be consolidated. See MLton/mlton#259. Commit: 02f623a466d6d3b1ef51851aaad9f3457306a7a8 https://github.com/MLton/mlton/commit/02f623a466d6d3b1ef51851aaad9f3457306a7a8 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-05 (Sat, 05 Jan 2019) Changed paths: R regression/mlton.share.arm-linux.ok R regression/mlton.share.hppa-hpux.ok R regression/mlton.share.hppa-linux.ok R regression/mlton.share.ia64-hpux.ok R regression/mlton.share.mips-linux.ok R regression/mlton.share.rep32.ok A regression/mlton.share.rep32a4.ok A regression/mlton.share.rep32a8.ok R regression/mlton.share.s390-linux.ok R regression/mlton.share.sparc-linux.ok R regression/mlton.share.sparc-solaris.ok R regression/size.rep32.ok A regression/size.rep32a4.ok A regression/size.rep32a8.ok R regression/size.rep64.ok A regression/size.rep64a4.ok A regression/size.rep64a8.ok Log Message: ----------- Consolidate `size` and `mlton.share` output by `${OBJPTR_REP}a${ALIGN}` Partially fixes MLton/mlton#259. Commit: fe996d4ea1e51ac4697186599d4aa56375de1254 https://github.com/MLton/mlton/commit/fe996d4ea1e51ac4697186599d4aa56375de1254 Author: Matthew Fluet <Mat...@gm...> Date: 2019-01-06 (Sun, 06 Jan 2019) Changed paths: M bin/regression R regression/int-inf.rep3.amd64-darwin.ok R regression/int-inf.rep3.amd64-linux.ok M regression/int-inf.rep3.ok A regression/int-inf.rep3.rep32.ok A regression/int-inf.rep3.rep64.ok R regression/int-inf.rep3.riscv-linux.ok R regression/int-inf.rep3.x86-linux.ok R regression/int-inf.rep4.amd64-darwin.ok R regression/int-inf.rep4.amd64-linux.ok M regression/int-inf.rep4.ok A regression/int-inf.rep4.rep32.ok A regression/int-inf.rep4.rep64.ok R regression/int-inf.rep4.riscv-linux.ok R regression/int-inf.rep4.x86-linux.ok R regression/mlton.share.alpha-linux.ok R regression/mlton.share.amd64-darwin.ok R regression/mlton.share.amd64-freebsd.ok R regression/mlton.share.amd64-linux.ok R regression/mlton.share.amd64-mingw.ok R regression/mlton.share.arm-linux.ok R regression/mlton.share.hppa-hpux.ok R regression/mlton.share.hppa-linux.ok R regression/mlton.share.ia64-hpux.ok R regression/mlton.share.ia64-linux.ok R regression/mlton.share.mips-linux.ok M regression/mlton.share.ok A regression/mlton.share.rep32a4.ok A regression/mlton.share.rep32a8.ok A regression/mlton.share.rep64.ok R regression/mlton.share.riscv-linux.ok R regression/mlton.share.s390-linux.ok R regression/mlton.share.sparc-linux.ok R regression/mlton.share.sparc-solaris.ok R regression/real-basic.x86-cygwin.ok R regression/real-basic.x86-darwin.ok R regression/real-basic.x86-freebsd.ok R regression/real-basic.x86-hurd.ok R regression/real-basic.x86-linux.ok R regression/real-basic.x86-mingw.ok A regression/real-basic.x86.ok M regression/real.amd64-darwin.ok M regression/real.amd64-linux.ok M regression/real.ok M regression/real.sml A regression/real.x86-linux.ok R regression/size.amd64-linux.ok M regression/size.ok A regression/size.rep32a4.ok A regression/size.rep32a8.ok A regression/size.rep64a4.ok A regression/size.rep64a8.ok Log Message: ----------- Merge pull request #287 from MatthewFluet/regression-updates Updates for regression suite Highlights: * Improve `real.sml` regression test to print a short message on a test failure and continue execution (rather than raise an uncaught `Fail` exception and generate an unhelpfully large diff). Closes MLton/mlton#36. * Consolidate a number of regression test output files by `${OBJPTR_REP}a${ALIGN}` (rather than `${TARGET_ARCH}-${TARGET_OS}`. Closes MLton/mlton#259. Compare: https://github.com/MLton/mlton/compare/b0ccf5d6fded...fe996d4ea1e5 **NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019. |
From: GitHub <no...@gi...> - 2019-01-03 15:52:42
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: cd8f1c7b61ae70f7ada4905cd738c08f6ad135fc https://github.com/MLton/mlton/commit/cd8f1c7b61ae70f7ada4905cd738c08f6ad135fc Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun Log Message: ----------- Include number of globals in SSA and SSA2 IL stats Commit: 51d2073bd6a9ef74db95ccbf06051145d84c65cd https://github.com/MLton/mlton/commit/51d2073bd6a9ef74db95ccbf06051145d84c65cd Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Include globals in Useless diagnostics Commit: 895215354ba16c5d34334d346b6a593a2afec224 https://github.com/MLton/mlton/commit/895215354ba16c5d34334d346b6a593a2afec224 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M doc/guide/src/Useless.adoc M mlton/ssa/useless.fun Log Message: ----------- Update Useless commentary Useless does not perform constant propagation. Commit: 158149847620dec1c0feabbd822107ca04e46955 https://github.com/MLton/mlton/commit/158149847620dec1c0feabbd822107ca04e46955 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Move `Useless.filter` tracing adjacent to `Useless.filter` def Commit: a5f43f56faffd61d0d312498cc80bc4593c44304 https://github.com/MLton/mlton/commit/a5f43f56faffd61d0d312498cc80bc4593c44304 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Trace `Useless.deepMakeUseful` Commit: 46258a35738763664eb296e0e54faf47085e5241 https://github.com/MLton/mlton/commit/46258a35738763664eb296e0e54faf47085e5241 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Trace `Useless.Value.unify` Commit: 1b763e5cc882537de14e39cf7c117890da8caf3c https://github.com/MLton/mlton/commit/1b763e5cc882537de14e39cf7c117890da8caf3c Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Eliminate unused component of `Useless.conInfo` Commit: bba7c5044d4b2bf8b873629ab0042bb98e94023f https://github.com/MLton/mlton/commit/bba7c5044d4b2bf8b873629ab0042bb98e94023f Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Add `Useless.` prefix to `Property.initRaise` for `{con,tycon}Info` Commit: 3eaf18f8410250f57108ab73ecc2da15b39f8897 https://github.com/MLton/mlton/commit/3eaf18f8410250f57108ab73ecc2da15b39f8897 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Clarify visited flag for `Useless.deepMakeUseful` Commit: bbbeda87f3867964195bda6b450be13eec5bbb46 https://github.com/MLton/mlton/commit/bbbeda87f3867964195bda6b450be13eec5bbb46 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-26 (Mon, 26 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Add missing unification of `Array` useful component in `Useless` Commit: 623000f151876557d6f88ec3f8f251b2bb11170b https://github.com/MLton/mlton/commit/623000f151876557d6f88ec3f8f251b2bb11170b Author: Matthew Fluet <mat...@gm...> Date: 2018-11-27 (Tue, 27 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Fix latent bug in Useless with `Ref_ref` and `Weak_new` primitives Consider the following program: val r1 : int ref = ref 1 val r2 : int ref = ref 2 val chk = r1 = r2 val () = print (concat [Bool.toString chk, "\n"]) A forthcoming update to the Useless optimization will not force the contents of `array`, `ref`, and `weak` types as useful when the type participates in `MLton_equal` (because polymorphic equality does not inspect the components of types with identity). This will make the contents of `r1` and `r2` useless; however, the values `1` and `2` likely remain useful elsewhere in the program. Hence, for `Ref_ref` and `Weak_new` primitives, it does not suffice to map over the arguments and retain those that are useful. For `Ref_ref` and `Weak_new`, if a `(unit) ref` or `(unit) weak` is being constructred, then ignore the existing arguments and build the object with `unitVar`. Commit: a78029ffcbc9f9b54a0b616d9050f8526bf3f226 https://github.com/MLton/mlton/commit/a78029ffcbc9f9b54a0b616d9050f8526bf3f226 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-27 (Tue, 27 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Fix translation of `Array_uninitIsNop` in Useless If the array does not exist, then it's uninits are nops. Commit: 3a7470849b03d295d18ad1f8e52c3f2216a38581 https://github.com/MLton/mlton/commit/3a7470849b03d295d18ad1f8e52c3f2216a38581 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-27 (Tue, 27 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Strengthen Useless optimization wrt MLton_equal and MLton_hash The MLton_equal (polymorphic equality) and MLton_hash (polymorphic hashing) primitives were analyzed by applying `deepMakeUseful` to their arguments. However, when implemented, these primitives do not descend into Array, Ref, or Weak types, so marking the contents of Array, Ref, and Weak types as useful is unnecessary and misses opportunities to eliminate useless components. In particular, while investigating the issue described in 19b07c0, it was observed that the tuple component that was useless but must exist was only forced to exist due to another tuple's corresponding component being made useful by the `deepMakeUseful` triggered by analyzing MLton_equal. However, this was confusing, as the tuple component in question was a `lambdas_nnn` type, which should not be compared by polymorphic equality. Further investigation revealed that it was a `MLton_equal((list_mmm) ref)`, with `list_mmm` corresponding to a list of lambdas. This had the effect of marking *many* transitive closure components as useful, even though they would not actually be used by the implementation of polymorphic equality. This strengthening of Useless has a non-trivial effect on a self-compile: pre.useless: pre.ssa size = 146,403,800 bytes num globals = 37936 num vars in main = 10709 num blocks in main = 2082 num functions in program = 7711 num blocks in program = 231863 num statements in program = 308427 num types in program = 21671 post.useless (old): post.ssa size = 170,454,040 bytes num globals = 19772 num vars in main = 10264 num blocks in main = 2082 num functions in program = 7711 num blocks in program = 230017 num statements in program = 283672 num types in program = 18112 post.useless (new): post.ssa size = 167,373,184 bytes num globals = 19084 num vars in main = 9628 num blocks in main = 2067 num functions in program = 7711 num blocks in program = 229503 num statements in program = 279612 num types in program = 17065 Commit: de3de79f81ba00302d9671939345b159f87856a2 https://github.com/MLton/mlton/commit/de3de79f81ba00302d9671939345b159f87856a2 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-27 (Tue, 27 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Cleanup whitespace/formatting Commit: 7ef30bae5476820162d844c75040d6cd940b7153 https://github.com/MLton/mlton/commit/7ef30bae5476820162d844c75040d6cd940b7153 Author: Matthew Fluet <mat...@gm...> Date: 2018-11-28 (Wed, 28 Nov 2018) Changed paths: M doc/guide/src/Useless.adoc M mlton/ssa/useless.fun Log Message: ----------- Eliminate "weirdness with raise/handle" in Useless Previously, the Useless pass would unify all handler arguments so that raise/handle had a consistent calling convention. This seems to be a (long) hold-over from the CPS IL with explicit HandlerPush and HandlerPop statements. Now, allow functions to raise more than is used by a handler, inserting coercion wrapper blocks as necessary. (Something very similar is done in RemoveUnsed.) While this can eliminate useless components of a function's `raises`, it can also require turning a Return.Tail into a Return.NonTail or a Handler.Caller into a Handler.Handle, in order to discard useless components. On a self-compile, compared to previously: * 397 functions go from `raises = Some (exn)` to `raises = Some ()` * 3 calls go from Return.Tail to Return.NonTail * 1571 calls go from Return.Handler to Handler.Handle Commit: f297e456bc836ae9e843d6ff2a96142e43d0676b https://github.com/MLton/mlton/commit/f297e456bc836ae9e843d6ff2a96142e43d0676b Author: Matthew Fluet <mat...@gm...> Date: 2018-11-28 (Wed, 28 Nov 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Add signatures to Useless.Value.{Exists,Useful} Commit: 602bad4a60cefe749bf01b756997f9684b7dcbfc https://github.com/MLton/mlton/commit/602bad4a60cefe749bf01b756997f9684b7dcbfc Author: Matthew Fluet <mat...@gm...> Date: 2018-12-21 (Fri, 21 Dec 2018) Changed paths: R regression/size2.alpha-linux.ok R regression/size2.amd64-darwin.ok R regression/size2.amd64-freebsd.ok R regression/size2.amd64-linux.ok R regression/size2.amd64-mingw.ok R regression/size2.arm-linux.ok R regression/size2.hppa-hpux.ok R regression/size2.hppa-linux.ok R regression/size2.ia64-hpux.ok R regression/size2.ia64-linux.ok R regression/size2.mips-linux.ok R regression/size2.ok R regression/size2.riscv-linux.ok R regression/size2.s390-linux.ok R regression/size2.sml R regression/size2.sparc-linux.ok R regression/size3.amd64-darwin.ok R regression/size3.amd64-linux.ok R regression/size3.ok R regression/size3.riscv-linux.ok R regression/size3.sml R regression/size3.x86-linux.ok Log Message: ----------- Remove `size2` and `size3` regression tests A forthcoming update to the `Useless` optimization to address MLton/mlton#201 will not force the argument of `MLton_size` to be "deeply useful". However, nearly all of the data structures in the `size2` and `size3` regression tests are only used for their size (and, so, the new `Useless` optimization mostly eliminates the argument to `MLton_size` leading to 0 sizes). It has proven too difficult to robustly use the values after measuring their size. Moreover, the regression tests have been awkward, due to their sensitivity to the architecture. Commit: dd9facbdb0f77f53d379d61a65b611c4b6648a4f https://github.com/MLton/mlton/commit/dd9facbdb0f77f53d379d61a65b611c4b6648a4f Author: Matthew Fluet <mat...@gm...> Date: 2018-12-21 (Fri, 21 Dec 2018) Changed paths: A regression/size.amd64-linux.ok M regression/size.ok M regression/size.sml Log Message: ----------- Rework `size` regression test A forthcoming update to the `Useless` optimization to address MLton/mlton#201 will not force the argument of `MLton_size` to be "deeply useful". However, many of the data structures in the `size` regression test are only used for their size (and, so, the new `Useless` optimization mostly eliminates the argument to `MLton_size` leading to 0 sizes). This commit adds an explicit "use" of the values after measuring their size. In addition, since the `size2` and `size3` regression tests have been removed, the `size` regression test now outputs exact sizes (except for the "continuation option ref") in order to monitor changes to object sizes. Commit: 0e36e4304d576baef793a54dbeacc0d7a91c80c8 https://github.com/MLton/mlton/commit/0e36e4304d576baef793a54dbeacc0d7a91c80c8 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-21 (Fri, 21 Dec 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Strengthen Useless optimization wrt MLton_{eq,share,size} Closes MLton/mlton#201 The `Useless` optimization eliminates components of of tuples and constructors that are not observed by the computation. Previously, `MLton_share` was analyzed as a side-effect primitive (it must be preserved by optimizations to perform as the programmer intended) and side-effect primitives have `deepMakeUseful` applied to their arguments; this effectively forced all components of the types flowing to `MLton_share` to be retained. Similarly, although `MLton_eq` and `MLton_size` are not considered side-effect primitives, if the result of `MLton_eq`/`MLton_size` was considered useful, then all components of the types flowing to them were retained. Now, we allow the type upon which these primitives are acting to change as dictated by the rest of the program. In particular, we split the single "useless/useful" lattice element into a pair of "useless/useful" and "not wanted/wanted" lattice elements. Flipping from "not wanted" to "wanted" causes any "not wanted/wanted" element flowing into the current element to be flipped to "wanted" and unifies with any "useless/useful" element flowing into the current element. This has the effect that a component that is "wanted" is also "useful" if any "useful" component flows to it. Commit: 31d9befe621ffb48190c62ba0c4ea7139994616e https://github.com/MLton/mlton/commit/31d9befe621ffb48190c62ba0c4ea7139994616e Author: Matthew Fluet <mat...@gm...> Date: 2018-12-24 (Mon, 24 Dec 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Add `{array,weak}Useful` selector functions to Useless pass Commit: 2baa151358dd31f7bf096105c32ed858ee626d21 https://github.com/MLton/mlton/commit/2baa151358dd31f7bf096105c32ed858ee626d21 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-24 (Mon, 24 Dec 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Fix Useless optimization wrt Array_uninitIsNop Use the array, but not the array elements, when the result of the Array_uninitIsNop primitive is used. Commit: 6755b0a5b723a9206300e7e772a2093996688dfc https://github.com/MLton/mlton/commit/6755b0a5b723a9206300e7e772a2093996688dfc Author: Matthew Fluet <mat...@gm...> Date: 2018-12-24 (Mon, 24 Dec 2018) Changed paths: M regression/weak.2.ok M regression/weak.2.sml Log Message: ----------- Rework `weak.2` regression test A forthcoming update to the `Useless` optimization will not force the argument to `Weak_canGet` to be "deeply useful". However, the tuple used in the `weak.2` regression test is not actually used (and, so, the new `Useless` optimization changes the `(int * int ref) Weak.t` to a `unit Weak.t`, which is considered never alive). This commit adds an explicit "use" of the tuple. Commit: b0681653fb8b4370a6530c532a3a966136472537 https://github.com/MLton/mlton/commit/b0681653fb8b4370a6530c532a3a966136472537 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-24 (Mon, 24 Dec 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Strengthen Useless optimization wrt Weak_canGet The `Useless` optimization eliminates components of of tuples and constructors that are not observed by the computation. Previously, `Weak_canGet` was analyzed as a non-side-effect primitive; if the result of `Weak_canGet` was considered useful, then all components of the argument of `Weak_canGet` were considered useful. However, 'Weak_canGet` does not actually use the components of the weak reference; rather, it only uses the reference itself. Commit: dc7c7a6eaa4362312447b0a12b4417fa32c03f4c https://github.com/MLton/mlton/commit/dc7c7a6eaa4362312447b0a12b4417fa32c03f4c Author: Matthew Fluet <mat...@gm...> Date: 2018-12-25 (Tue, 25 Dec 2018) Changed paths: M mlton/ssa/useless.fun Log Message: ----------- Strengthen Useless optimization wrt MLton_touch The `Useless` optimization eliminates components of data constructors that are not observed by the computation. Previously, `MLton_touch` was analyzed as a side-effect primitive; side-effect primitives have `deepMakeUseful` applied to their arguments; this effectively forced all components of the types flowing to `MLton_touch` to be retained. However, 'MLton_touch` does not actually use the data structure; it simply keeps the data structure alive. The typical usage of `MLton_touch` for finalizers is to `touch` a reference; hence, it suffices to use `shallowMakeUseful` to make the reference useful, without necessarily making the contents deeply useful. Commit: 5b04eb82bfc91689f97cbca87b8280e5ca7561b1 https://github.com/MLton/mlton/commit/5b04eb82bfc91689f97cbca87b8280e5ca7561b1 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-03 (Thu, 03 Jan 2019) Changed paths: M CHANGELOG.adoc Log Message: ----------- Note strengthening of Useless optimization in CHANGELOG.adoc Commit: b0ccf5d6fded14f7d6bcffd58f62e42450733446 https://github.com/MLton/mlton/commit/b0ccf5d6fded14f7d6bcffd58f62e42450733446 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-03 (Thu, 03 Jan 2019) Changed paths: M CHANGELOG.adoc M doc/guide/src/Useless.adoc M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun M mlton/ssa/useless.fun A regression/size.amd64-linux.ok M regression/size.ok M regression/size.sml R regression/size2.alpha-linux.ok R regression/size2.amd64-darwin.ok R regression/size2.amd64-freebsd.ok R regression/size2.amd64-linux.ok R regression/size2.amd64-mingw.ok R regression/size2.arm-linux.ok R regression/size2.hppa-hpux.ok R regression/size2.hppa-linux.ok R regression/size2.ia64-hpux.ok R regression/size2.ia64-linux.ok R regression/size2.mips-linux.ok R regression/size2.ok R regression/size2.riscv-linux.ok R regression/size2.s390-linux.ok R regression/size2.sml R regression/size2.sparc-linux.ok R regression/size3.amd64-darwin.ok R regression/size3.amd64-linux.ok R regression/size3.ok R regression/size3.riscv-linux.ok R regression/size3.sml R regression/size3.x86-linux.ok M regression/weak.2.ok M regression/weak.2.sml Log Message: ----------- Merge pull request #286 from MatthewFluet/useless-updates Strengthen Useless optimization with respect to a number of primitives (MLton_equal, MLton_hash, MLton_eq, MLton_share, MLton_size, Weak_canGet, and MLton_touch). Closes #201. Compare: https://github.com/MLton/mlton/compare/f73965085cf8...b0ccf5d6fded **NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019. |
From: GitHub <no...@gi...> - 2019-01-03 15:08:36
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: b88d787d8019a21d16bb5d5865af7c9eb67867e9 https://github.com/MLton/mlton/commit/b88d787d8019a21d16bb5d5865af7c9eb67867e9 Author: Jason Carr <jca...@gm...> Date: 2018-09-11 (Tue, 11 Sep 2018) Changed paths: M mlton/ssa/simplify.fun M mlton/ssa/sources.cm M mlton/ssa/sources.mlb A mlton/ssa/split-types.fun Log Message: ----------- Initial version of split-types Commit: 64becf1226da9711ab40613f53c253906f485d38 https://github.com/MLton/mlton/commit/64becf1226da9711ab40613f53c253906f485d38 Author: Jason Carr <jca...@gm...> Date: 2018-09-14 (Fri, 14 Sep 2018) Changed paths: M mlton/ssa/simplify.fun M mlton/ssa/split-types.fun Log Message: ----------- Simple transform for cons and arguemnts Commit: 6b280af09a9a548cb56cdf68bf14a8b754d0c263 https://github.com/MLton/mlton/commit/6b280af09a9a548cb56cdf68bf14a8b754d0c263 Author: Jason Carr <jca...@gm...> Date: 2018-09-14 (Fri, 14 Sep 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Split type analysis now handles all coercions Commit: 72619d8b339236f0990df772ec9683be4aef2645 https://github.com/MLton/mlton/commit/72619d8b339236f0990df772ec9683be4aef2645 Author: Jason Carr <jca...@gm...> Date: 2018-09-14 (Fri, 14 Sep 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Start replacing code, broken Commit: 7efa1030188856556cb05b4477cde3a47039ecbe https://github.com/MLton/mlton/commit/7efa1030188856556cb05b4477cde3a47039ecbe Author: Jason Carr <jca...@gm...> Date: 2018-09-14 (Fri, 14 Sep 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Apply changes to globals Commit: 0da5d907b74a6f0320bb515649d8ba631db4818b https://github.com/MLton/mlton/commit/0da5d907b74a6f0320bb515649d8ba631db4818b Author: Jason Carr <jca...@gm...> Date: 2018-09-18 (Tue, 18 Sep 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Iterate over function signatures Commit: cb578d042296872f023253712751b06e0116aa44 https://github.com/MLton/mlton/commit/cb578d042296872f023253712751b06e0116aa44 Author: Jason Carr <jca...@gm...> Date: 2018-09-18 (Tue, 18 Sep 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Improve naming, Value -> TypeInfo, t -> typeInfo Commit: d72f12dff165687e67dadd677dda6990d9af5ffd https://github.com/MLton/mlton/commit/d72f12dff165687e67dadd677dda6990d9af5ffd Author: Jason Carr <jca...@gm...> Date: 2018-09-20 (Thu, 20 Sep 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Add bools, correctly lookup new types better Commit: 91cd4afe43a3fcddccc7ee44305c7e2d80792c08 https://github.com/MLton/mlton/commit/91cd4afe43a3fcddccc7ee44305c7e2d80792c08 Author: Jason Carr <jca...@gm...> Date: 2018-10-01 (Mon, 01 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Handle constructors and filters correctly Commit: 401716206b101d73e77f56666b63e83a36bdebc5 https://github.com/MLton/mlton/commit/401716206b101d73e77f56666b63e83a36bdebc5 Author: Jason Carr <jca...@gm...> Date: 2018-10-01 (Mon, 01 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Fix constructor merging Commit: e4d330e0bbfda7f6fb2de30ae9711828ee563dd8 https://github.com/MLton/mlton/commit/e4d330e0bbfda7f6fb2de30ae9711828ee563dd8 Author: Jason Carr <jca...@gm...> Date: 2018-10-01 (Mon, 01 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Add Heap types and prims to splitTypes Commit: 42b69f34633ba5a48757f82569c407998dd19bb2 https://github.com/MLton/mlton/commit/42b69f34633ba5a48757f82569c407998dd19bb2 Author: Jason Carr <jca...@gm...> Date: 2018-10-03 (Wed, 03 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- split-types: Properly handle remapping constructors Commit: 83626e0fc7a2f2cde04171a40f6711ea437531cf https://github.com/MLton/mlton/commit/83626e0fc7a2f2cde04171a40f6711ea437531cf Author: Jason Carr <jca...@gm...> Date: 2018-10-03 (Wed, 03 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- split-types: Move more information into TypeInfo so we don't need the old type to construct the type Commit: 664e0afe3efdc0daa0bd85522a0b954b318b2a20 https://github.com/MLton/mlton/commit/664e0afe3efdc0daa0bd85522a0b954b318b2a20 Author: Jason Carr <jca...@gm...> Date: 2018-10-03 (Wed, 03 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- split-types: Remap cons in cases Commit: 24692fa7d0a43562e30471f5289a8b82349abaa0 https://github.com/MLton/mlton/commit/24692fa7d0a43562e30471f5289a8b82349abaa0 Author: Jason Carr <jca...@gm...> Date: 2018-10-03 (Wed, 03 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- split-types: Fix type arguments of prim apps Commit: 64b001c9c5c5c3b0102678148d8183083e93b4cc https://github.com/MLton/mlton/commit/64b001c9c5c5c3b0102678148d8183083e93b4cc Author: Jason Carr <jca...@gm...> Date: 2018-10-09 (Tue, 09 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- split-types: Improve recursion order for coercing types Commit: 87788a56a1af77dad86716d8ce32a91bd8bbbe76 https://github.com/MLton/mlton/commit/87788a56a1af77dad86716d8ce32a91bd8bbbe76 Author: Jason Carr <jca...@gm...> Date: 2018-10-09 (Tue, 09 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- split-types: Handle zero-length vectors Commit: 350c43944607edc2b5dde9c14501e6ac5459ff78 https://github.com/MLton/mlton/commit/350c43944607edc2b5dde9c14501e6ac5459ff78 Author: Jason Carr <jca...@gm...> Date: 2018-10-12 (Fri, 12 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Fix type caching for output Commit: c59fc1352f4ffdaa276bda6030a6f056b1ff074d https://github.com/MLton/mlton/commit/c59fc1352f4ffdaa276bda6030a6f056b1ff074d Author: Jason Carr <jca...@gm...> Date: 2018-10-31 (Wed, 31 Oct 2018) Changed paths: M lib/mlton/basic/hash-table.sig M lib/mlton/basic/hash-table.sml A lib/mlton/basic/hash.sig A lib/mlton/basic/hash.sml M lib/mlton/basic/sources.cm M lib/mlton/basic/sources.mlb M lib/mlton/sources.cm M lib/mlton/sources.mlb M mlnlffigen/sources.mlb M mlton/atoms/hash-type.fun M mlton/atoms/profile-exp.fun M mlton/ssa/common-subexp.fun M mlton/ssa/known-case.fun M mlton/ssa/parse-ssa.fun M mlton/ssa/parse-ssa2.fun M mlton/ssa/restore.fun M mlton/ssa/restore2.fun M mlton/ssa/share-zero-vec.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun M mlton/xml/monomorphise.fun Log Message: ----------- Merge branch 'hash-additions' into split-types Commit: 54896da05d4da85e6fe8a817cbeb825cb7ea92a1 https://github.com/MLton/mlton/commit/54896da05d4da85e6fe8a817cbeb825cb7ea92a1 Author: Jason Carr <jca...@gm...> Date: 2018-10-31 (Wed, 31 Oct 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Use HashTables instead of HashSets Commit: ce2f36d754ec2f8398341263865dfbf386eb0525 https://github.com/MLton/mlton/commit/ce2f36d754ec2f8398341263865dfbf386eb0525 Author: Jason Carr <jca...@gm...> Date: 2018-11-02 (Fri, 02 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Add initial dupGlobals Commit: 775e67b43a303711eb6d8d9a1e772f180e430984 https://github.com/MLton/mlton/commit/775e67b43a303711eb6d8d9a1e772f180e430984 Author: Jason Carr <jca...@gm...> Date: 2018-11-05 (Mon, 05 Nov 2018) Changed paths: M .travis.yml M CHANGELOG.adoc M basis-library/arrays-and-vectors/array2.sml M basis-library/arrays-and-vectors/sequence.fun M basis-library/arrays-and-vectors/sequence0.sml M basis-library/integer/int-inf.sig M basis-library/integer/int-inf0.sml M basis-library/integer/int.sml M basis-library/integer/integer.sig M basis-library/integer/num0.sml M basis-library/list/list.sml M basis-library/primitive/basis-ffi.sml M basis-library/primitive/prim-int.sml M basis-library/primitive/prim1.sml M basis-library/text/char.sml M basis-library/text/string-cvt.sml M basis-library/top-level/infixes-overflow.sml M basis-library/top-level/infixes-unsafe.sml M basis-library/util/CUtil.sml M include/amd64-main.h M include/x86-main.h M lib/mlton/basic/hash-table.sig M lib/mlton/basic/hash-table.sml M lib/mlton/basic/hash.sig M mlton/atoms/prim.fun M mlton/atoms/prim.sig M mlton/backend/rep-type.fun M mlton/backend/ssa-to-rssa.fun M mlton/codegen/amd64-codegen/amd64-mlton-basic.fun M mlton/codegen/amd64-codegen/amd64-mlton-basic.sig M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-simplify.fun M mlton/codegen/amd64-codegen/amd64.fun M mlton/codegen/amd64-codegen/amd64.sig M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-mlton-basic.fun M mlton/codegen/x86-codegen/x86-mlton-basic.sig M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-simplify.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/common-subexp.fun M mlton/ssa/known-case.fun M mlton/ssa/parse-ssa.fun M mlton/ssa/parse-ssa2.fun M mlton/ssa/redundant-tests.fun M mlton/ssa/share-zero-vec.fun M mlton/ssa/ssa-tree2.fun A regression/int-mul-pow2.ok A regression/int-mul-pow2.sml M runtime/basis-ffi.h M runtime/basis/Word/Word-check.h M runtime/basis/Word/Word-ops.h M runtime/gen/basis-ffi.def M runtime/gen/basis-ffi.h M runtime/gen/basis-ffi.sml Log Message: ----------- Merge branch 'master' into split-types Commit: c6164509cb7ca91717106af891c1cc2c1c154d78 https://github.com/MLton/mlton/commit/c6164509cb7ca91717106af891c1cc2c1c154d78 Author: Jason Carr <jca...@gm...> Date: 2018-11-05 (Mon, 05 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Fix a major bug where recursive coercions could cause lost updates Commit: ec8d6e784b625230a722bccd75c855780ca897ee https://github.com/MLton/mlton/commit/ec8d6e784b625230a722bccd75c855780ca897ee Author: Jason Carr <jca...@gm...> Date: 2018-11-05 (Mon, 05 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Fix Vector_vector to coerce all its arguments together Commit: 185b25d00157823b5f161721e8a74e56e8305204 https://github.com/MLton/mlton/commit/185b25d00157823b5f161721e8a74e56e8305204 Author: Jason Carr <jca...@gm...> Date: 2018-11-05 (Mon, 05 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Update dupGlobals, but keep disabled for now testing correctness Commit: 0da419eb459b9c73c6ae0b1fc75ee7b786e9f7e3 https://github.com/MLton/mlton/commit/0da419eb459b9c73c6ae0b1fc75ee7b786e9f7e3 Author: Jason Carr <jca...@gm...> Date: 2018-11-05 (Mon, 05 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Correctly coerce for MLton_equal Commit: af59d0350fd7ed0ed8c127d7dcee5c597c6f7d64 https://github.com/MLton/mlton/commit/af59d0350fd7ed0ed8c127d7dcee5c597c6f7d64 Author: Jason Carr <jca...@gm...> Date: 2018-11-07 (Wed, 07 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Cleanup split-types and fix unused variables Commit: 695cb2a8e9b89cfc1bbc5a32ade797c7a14fb32d https://github.com/MLton/mlton/commit/695cb2a8e9b89cfc1bbc5a32ade797c7a14fb32d Author: Jason Carr <jca...@gm...> Date: 2018-11-07 (Wed, 07 Nov 2018) Changed paths: A mlton/ssa/duplicate-globals.fun M mlton/ssa/simplify.fun M mlton/ssa/sources.cm M mlton/ssa/sources.mlb M mlton/ssa/split-types.fun Log Message: ----------- Add DuplicateGlobals as seperate pass Commit: 5fbca03ebef52712c9d3519f38184d23e2106ed8 https://github.com/MLton/mlton/commit/5fbca03ebef52712c9d3519f38184d23e2106ed8 Author: Jason Carr <jca...@gm...> Date: 2018-11-14 (Wed, 14 Nov 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Fix duplicateGlobals duplicating too much Commit: 5d84886e017ab5ff98ccf1c6025a768cd13e3372 https://github.com/MLton/mlton/commit/5d84886e017ab5ff98ccf1c6025a768cd13e3372 Author: Jason Carr <jca...@gm...> Date: 2018-11-14 (Wed, 14 Nov 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- splitTypes: Improve diagnostics and case handling Commit: e8739cc8c5f47c974e1718bb363f5b911f23a139 https://github.com/MLton/mlton/commit/e8739cc8c5f47c974e1718bb363f5b911f23a139 Author: Jason Carr <jca...@gm...> Date: 2018-11-14 (Wed, 14 Nov 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Only duplicate globals which are ConApps Commit: 66aff92d6267796784740bc288831d7389147724 https://github.com/MLton/mlton/commit/66aff92d6267796784740bc288831d7389147724 Author: Jason Carr <jca...@gm...> Date: 2018-11-14 (Wed, 14 Nov 2018) Changed paths: M mlton/ssa/simplify.fun Log Message: ----------- Copy duplicateGlobals and splitTypes into three separate locations in ssaSimplify Commit: f9f70ac4d46f5c8225070020553afd85110f272e https://github.com/MLton/mlton/commit/f9f70ac4d46f5c8225070020553afd85110f272e Author: Jason Carr <jca...@gm...> Date: 2018-11-19 (Mon, 19 Nov 2018) Changed paths: M mlton/ssa/duplicate-globals.fun M mlton/ssa/split-types.fun Log Message: ----------- Improve code & comments for split-types/duplicate-globals Commit: 2a618b7871dd9a2447077e0cc30c850dac9ae63a https://github.com/MLton/mlton/commit/2a618b7871dd9a2447077e0cc30c850dac9ae63a Author: Jason Carr <jca...@gm...> Date: 2018-11-19 (Mon, 19 Nov 2018) Changed paths: M mlton/ssa/simplify.fun Log Message: ----------- Remove duplicateGlobals/splitTypes3 Commit: 8b52f9677b26f0d2d6db52cb956ce3a0212cbb86 https://github.com/MLton/mlton/commit/8b52f9677b26f0d2d6db52cb956ce3a0212cbb86 Author: Jason Carr <jca...@gm...> Date: 2018-12-04 (Tue, 04 Dec 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Don't leave useless globals in duplicate-globals Commit: 47cb34db3bef5cf66ab005c0db9888d1b340990c https://github.com/MLton/mlton/commit/47cb34db3bef5cf66ab005c0db9888d1b340990c Author: Jason Carr <jca...@gm...> Date: 2018-12-04 (Tue, 04 Dec 2018) Changed paths: M mlton/ssa/simplify.fun Log Message: ----------- Enable splitTypes1, splitTypes2, and duplicateGlobals2 by default Commit: 13572058fab892c377bec54e2dffd61567a72fa2 https://github.com/MLton/mlton/commit/13572058fab892c377bec54e2dffd61567a72fa2 Author: Jason Carr <jca...@gm...> Date: 2018-12-04 (Tue, 04 Dec 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Duplicate bogus globals Commit: e21fb78ddcb2a684593ae8ed25b01f54a1ed723d https://github.com/MLton/mlton/commit/e21fb78ddcb2a684593ae8ed25b01f54a1ed723d Author: Jason Carr <jca...@gm...> Date: 2018-12-04 (Tue, 04 Dec 2018) Changed paths: M .travis.yml M CHANGELOG.adoc M README.adoc M doc/guide/src/Home.adoc M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/x86-codegen/x86-codegen.fun M mlton/ssa/n-point-lattice.fun M mlton/ssa/simplify-types.fun M mlton/ssa/ssa-tree.fun M runtime/gc/signals.c M runtime/gc/virtual-memory.c M runtime/platform.h M runtime/platform/mmap-protect.c M runtime/platform/mmap.c M runtime/platform/openbsd.c M runtime/platform/use-mmap.c Log Message: ----------- Merge branch 'master' into split-types Commit: e5ff0dcf5f299acf663cbbf0ed9e198c5be03c18 https://github.com/MLton/mlton/commit/e5ff0dcf5f299acf663cbbf0ed9e198c5be03c18 Author: Jason Carr <jca...@gm...> Date: 2018-12-05 (Wed, 05 Dec 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Fix swapped Weak prims in split-types Commit: 1dcb830c0199df63de153b59f310a36f6a49a2f4 https://github.com/MLton/mlton/commit/1dcb830c0199df63de153b59f310a36f6a49a2f4 Author: Jason Carr <jca...@gm...> Date: 2018-12-06 (Thu, 06 Dec 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Support splitting booleans (restricted by FFI usage) Commit: dd2feecf499febc96f145c642de3aab45478bc05 https://github.com/MLton/mlton/commit/dd2feecf499febc96f145c642de3aab45478bc05 Author: Jason Carr <jca...@gm...> Date: 2018-12-07 (Fri, 07 Dec 2018) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Remap FFI only if it's kind runtime. Unfortunately we can't use Prim.map or CFunction.map since the new types are based on argument values, not argument types Commit: c0f752f0a226d1f2e0200e637de4c4c05293ee30 https://github.com/MLton/mlton/commit/c0f752f0a226d1f2e0200e637de4c4c05293ee30 Author: Jason Carr <jca...@gm...> Date: 2018-12-13 (Thu, 13 Dec 2018) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/split-types.fun Log Message: ----------- Add expert split-bools option to decide whether to split boolean types Commit: 649b0c5f45bb81dc46508675632b651ffe291f4d https://github.com/MLton/mlton/commit/649b0c5f45bb81dc46508675632b651ffe291f4d Author: Jason Carr <jca...@gm...> Date: 2018-12-13 (Thu, 13 Dec 2018) Changed paths: M regression/size3.amd64-darwin.ok M regression/size3.amd64-linux.ok M regression/size3.riscv-linux.ok Log Message: ----------- Set sizes for regressions to 0 Commit: 8aff7f3f43779b9c70c4907b816b032396375b3f https://github.com/MLton/mlton/commit/8aff7f3f43779b9c70c4907b816b032396375b3f Author: Jason Carr <jca...@gm...> Date: 2018-12-13 (Thu, 13 Dec 2018) Changed paths: M regression/size3.amd64-darwin.ok M regression/size3.amd64-linux.ok M regression/size3.riscv-linux.ok M regression/size3.x86-linux.ok Log Message: ----------- Fix remaining bad size regressions Commit: 4092a80da7e7cf16e691dba8f477b259bd7501fc https://github.com/MLton/mlton/commit/4092a80da7e7cf16e691dba8f477b259bd7501fc Author: Matthew Fluet <mat...@gm...> Date: 2018-12-30 (Sun, 30 Dec 2018) Changed paths: M mlton/ssa/sources.cm M mlton/ssa/sources.mlb Log Message: ----------- Alphabetize `split-types.fun` in `sources.{cm,mlb}`. Commit: f7f0ab2a3002339ca87ebe7ad6bddb003fb088f8 https://github.com/MLton/mlton/commit/f7f0ab2a3002339ca87ebe7ad6bddb003fb088f8 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-30 (Sun, 30 Dec 2018) Changed paths: M mlton/ssa/simplify.fun Log Message: ----------- Alphabetize `structure SplitTypes` in `simplify.fun` Commit: b6d3833f1fdf7b93d884164db8476d344d1fc776 https://github.com/MLton/mlton/commit/b6d3833f1fdf7b93d884164db8476d344d1fc776 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-30 (Sun, 30 Dec 2018) Changed paths: M mlton/ssa/simplify.fun Log Message: ----------- Whitespace cleanup Commit: a2e37629aed8c1e6f7689a2049cf153d874cca9a https://github.com/MLton/mlton/commit/a2e37629aed8c1e6f7689a2049cf153d874cca9a Author: Matthew Fluet <mat...@gm...> Date: 2018-12-30 (Sun, 30 Dec 2018) Changed paths: M mlton/ssa/simplify.fun Log Message: ----------- Support `duplicateGlobals` and `splitTypes` in `-ssa-passes` option Commit: 5110a01b349ea6d1f74547a88e8e96fce83bb601 https://github.com/MLton/mlton/commit/5110a01b349ea6d1f74547a88e8e96fce83bb601 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-30 (Sun, 30 Dec 2018) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/split-types.fun Log Message: ----------- Rename `-split-bools` option to `-split-types-bool` Also, alphabetize `splitTypesBool` in `signature CONTROL_FLAGS` and `structure ControlFlags`. Commit: 5372b4d89f1092238ee4d5f0a469da5c4374a025 https://github.com/MLton/mlton/commit/5372b4d89f1092238ee4d5f0a469da5c4374a025 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-31 (Mon, 31 Dec 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Code style cleanup (minor) Commit: 6007b0f56eb6f528125be2e5a078939b468e7efa https://github.com/MLton/mlton/commit/6007b0f56eb6f528125be2e5a078939b468e7efa Author: Matthew Fluet <mat...@gm...> Date: 2018-12-31 (Mon, 31 Dec 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Handle global statements with no var in DuplicateGlobals Commit: 8fec78a57919a36e084b161473a7fb5661eba900 https://github.com/MLton/mlton/commit/8fec78a57919a36e084b161473a7fb5661eba900 Author: Matthew Fluet <mat...@gm...> Date: 2018-12-31 (Mon, 31 Dec 2018) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Simplify `isUsedInGlobals` in DuplicateGlobals Commit: 2ef2cff42f9f5f519d972b3d6fed44ae3839fdd5 https://github.com/MLton/mlton/commit/2ef2cff42f9f5f519d972b3d6fed44ae3839fdd5 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Code style cleanup (minor) Commit: 22572a1cf968e55aa75de5bf07ad1137e2eb835c https://github.com/MLton/mlton/commit/22572a1cf968e55aa75de5bf07ad1137e2eb835c Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Simplify calculation of new datatypes in SplitTypes `reifyCon` is never called with the primitive boolean type. Commit: e08cf1ff0a378a345453b71c7560a0aabf8cf1a3 https://github.com/MLton/mlton/commit/e08cf1ff0a378a345453b71c7560a0aabf8cf1a3 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Add SplitTypes.TypeInfo.deFresh Commit: ae86acb4ecdf093192c71e8d8e9bda7252228441 https://github.com/MLton/mlton/commit/ae86acb4ecdf093192c71e8d8e9bda7252228441 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Include heap type in SplitTypes.TypeInfo.layout Commit: ee1e3c4e47e4ab7da699bcd67089087bd5af4c55 https://github.com/MLton/mlton/commit/ee1e3c4e47e4ab7da699bcd67089087bd5af4c55 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Use `Vector.toListMap` rather than `Vector.toList o Vector.map` Commit: 13ddc99e6c3ae1c55bc7ae0ec90d4006932a3ce9 https://github.com/MLton/mlton/commit/13ddc99e6c3ae1c55bc7ae0ec90d4006932a3ce9 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Use `Type.bool` rather than `Type.datatypee Tycon.bool` Commit: 59c6870a05604c1d9ae4ff745c41b962454c1858 https://github.com/MLton/mlton/commit/59c6870a05604c1d9ae4ff745c41b962454c1858 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Simplify calculation of new functions in SplitTypes Commit: 351f11a130739131c52e6e6a91bbf941b62370b1 https://github.com/MLton/mlton/commit/351f11a130739131c52e6e6a91bbf941b62370b1 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Extract SplitTypes.TypeInfo.hashFresh Commit: ba8741906a9bc96dfb7bab727729f05ea1aeeb5e https://github.com/MLton/mlton/commit/ba8741906a9bc96dfb7bab727729f05ea1aeeb5e Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Simplify HashMap from fresh tycons to new tycons in SimplifyTypes Commit: c35163d3b51ff55b81b1aaad5242f9a6ce979d2c https://github.com/MLton/mlton/commit/c35163d3b51ff55b81b1aaad5242f9a6ce979d2c Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Simplify mapping from fresh cons to new cons in SimplifyTypes Commit: f396f847d862fb6eb11630cb22b2cdf643372eeb https://github.com/MLton/mlton/commit/f396f847d862fb6eb11630cb22b2cdf643372eeb Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Regularize arguments to analyze in SplitTypes Commit: 2ee534f339e2d1e04167fb4e401ff588b59d3464 https://github.com/MLton/mlton/commit/2ee534f339e2d1e04167fb4e401ff588b59d3464 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Require tycon for TypeInfo.Fresh in SplitTypes It is possible to always create TypeInfo.Fresh with a known tycon by recording the original tycon for each con. Commit: 3dcf4a1c13e1d25246a99490613b8d1bf5e2517c https://github.com/MLton/mlton/commit/3dcf4a1c13e1d25246a99490613b8d1bf5e2517c Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Create fresh reference when equating in SplitTypes Commit: 8bbffb01328b35303e123443001942419b6ee40f https://github.com/MLton/mlton/commit/8bbffb01328b35303e123443001942419b6ee40f Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/duplicate-globals.fun Log Message: ----------- Duplicate global vector constants in DuplicateGlobals In particular, this allows empty vectors to be duplicated. Commit: 88139fff0c3f37794612f8238c5b418e71a60a4f https://github.com/MLton/mlton/commit/88139fff0c3f37794612f8238c5b418e71a60a4f Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/ssa-tree.fun Log Message: ----------- Use type args for `SsaTree.Exp.{hash,equals}` of `PrimApp`-s Some primitives (e.g., `Vector_vector` and `MLton_bogus`) may be applied to no arguments and must be distinguished by the type argument. Commit: 9d2b60bd2d92b4f293b13c0db6c03fd6eecd1235 https://github.com/MLton/mlton/commit/9d2b60bd2d92b4f293b13c0db6c03fd6eecd1235 Author: Matthew Fluet <mat...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/common-subexp.fun Log Message: ----------- Perform elimination of common globals in CommonSubexp Various passes may introduce redundant globals. The DuplicateGlobals pass specifically introduces redundant globals (that may be separated by SplitTypes), which should be recombined. But, various other passes introduce `true`, `false`, `0`, `1`, etc. global constants in order to avoid needing to search the globals for a particular constant (that is likely, but not guaranteed, to exist). Commit: 59108a448d53e9fb19280b5a3c486a5d60a733a5 https://github.com/MLton/mlton/commit/59108a448d53e9fb19280b5a3c486a5d60a733a5 Author: Jason Carr <jca...@gm...> Date: 2019-01-02 (Wed, 02 Jan 2019) Changed paths: M mlton/ssa/split-types.fun Log Message: ----------- Fix split-types result type for updating primitives Commit: 2365d115967878ac7daa55cf2771cb528aea550b https://github.com/MLton/mlton/commit/2365d115967878ac7daa55cf2771cb528aea550b Author: Matthew Fluet <mat...@gm...> Date: 2019-01-03 (Thu, 03 Jan 2019) Changed paths: M CHANGELOG.adoc Log Message: ----------- Note DuplicateGlobals and SplitTypes in CHANGELOG.adoc Commit: f73965085cf85828ca6117d81f8574167aeaabfd https://github.com/MLton/mlton/commit/f73965085cf85828ca6117d81f8574167aeaabfd Author: Matthew Fluet <Mat...@gm...> Date: 2019-01-03 (Thu, 03 Jan 2019) Changed paths: M CHANGELOG.adoc M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/common-subexp.fun A mlton/ssa/duplicate-globals.fun M mlton/ssa/simplify.fun M mlton/ssa/sources.cm M mlton/ssa/sources.mlb A mlton/ssa/split-types.fun M mlton/ssa/ssa-tree.fun M regression/size3.amd64-darwin.ok M regression/size3.amd64-linux.ok M regression/size3.riscv-linux.ok M regression/size3.x86-linux.ok Log Message: ----------- Merge pull request #285 from jasoncarr0/split-types Add new `DuplicateGlobals` and `SplitTypes` SSA optimization passes. `DuplicateGlobals` introduces a distinct instance of a `ConApp` global for each distinct use within the program. `SplitTypes` performs a unification-based analysis to split a datatype into distinct instances for constructed values that are not unified. Because datatypes are recursive, other analyses often conflate all defs and uses of `ConApp`-s; `SplitTypes` allows non-unified instances of a datatype to be analyzed separately. Compare: https://github.com/MLton/mlton/compare/8b6ab888d4be...f73965085cf8 **NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019. |