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
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
(1) |
14
|
15
(1) |
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
(1) |
26
|
27
|
28
(2) |
29
|
30
|
31
(3) |
|
From: Matthew F. <no...@gi...> - 2019-05-31 17:35:32
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: c4b95b54cb59515d658b16b589336572432bbf37 https://github.com/MLton/mlton/commit/c4b95b54cb59515d658b16b589336572432bbf37 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M lib/mlton/basic/directed-graph.sig M lib/mlton/basic/directed-graph.sml M mlton/backend/limit-check.fun M mlton/backend/signal-check.fun M mlton/codegen/amd64-codegen/amd64-loop-info.fun M mlton/codegen/x86-codegen/x86-loop-info.fun M mlton/ssa/loop-unroll.fun M mlton/ssa/loop-unswitch.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun Log Message: ----------- Change LoopForest to contain data rather than (necessarily) nodes The interface matches Tree.t more now This can simplify some iteration that's just passing the nodes back through a plist by putting that iteration inside the tree creator. So interfaces don't have to work with Nodes and we can sometimes GC the graph a bit sooner Commit: 55fa1649cdba14160329f52b9f65fb5709533b18 https://github.com/MLton/mlton/commit/55fa1649cdba14160329f52b9f65fb5709533b18 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Add public loopForest method to rssa Commit: 2ba849c84931d8789dcf2c76f063a261d64f8a34 https://github.com/MLton/mlton/commit/2ba849c84931d8789dcf2c76f063a261d64f8a34 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Make loopForest less specific about the kind of transfer Commit: 2c1545a2ac4b8a682487d7e751f0b1257ab783b1 https://github.com/MLton/mlton/commit/2c1545a2ac4b8a682487d7e751f0b1257ab783b1 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Fix Rssa.Function.loopForest to use Blocks in the predicate Commit: 4c52e0deafca992297d660cfe3ec3ce34abdb680 https://github.com/MLton/mlton/commit/4c52e0deafca992297d660cfe3ec3ce34abdb680 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: A mlton/backend/separate-vars.fun Log Message: ----------- Create separate-vars.fun rssa pass and move loop detection code Commit: dbb2c2c6c7d5ee044131d30b5cfb5b88a53516be https://github.com/MLton/mlton/commit/dbb2c2c6c7d5ee044131d30b5cfb5b88a53516be Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: A mlton/backend/restore.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/ssa/sources.mlb Log Message: ----------- Initial version of restore rssa Commit: c1bb15c2dcb3e6a42cdcefbb5508c47306be8034 https://github.com/MLton/mlton/commit/c1bb15c2dcb3e6a42cdcefbb5508c47306be8034 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/restore.fun M mlton/backend/separate-vars.fun Log Message: ----------- Cleanup unused variables and disable separate-vars Commit: 51a89b83a77d8d9d7e8305ed6a8444a03f9bec27 https://github.com/MLton/mlton/commit/51a89b83a77d8d9d7e8305ed6a8444a03f9bec27 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/restore.fun Log Message: ----------- Add RestoreR structure. restoreR does not reverse function order Commit: 6a6a96ad9a64ed0e3120fe211a0d7cc8ec995eee https://github.com/MLton/mlton/commit/6a6a96ad9a64ed0e3120fe211a0d7cc8ec995eee Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/restore.fun M mlton/ssa/sources.cm Log Message: ----------- Fix restoreFunction to take an argument again, preventing it from accidentally having functor-level global state Commit: 2694e79e559409e7d00967c92c02d46f7897dee7 https://github.com/MLton/mlton/commit/2694e79e559409e7d00967c92c02d46f7897dee7 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/restore.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb Log Message: ----------- Add signature & copyright for RestoreR Commit: 40539ff123981c1b8760d914a3445b11ae14bad6 https://github.com/MLton/mlton/commit/40539ff123981c1b8760d914a3445b11ae14bad6 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Clean up unfixed rebase conflicts in separate-vars Commit: b89b913f2fdc7e7fbc800e431893096624704cf6 https://github.com/MLton/mlton/commit/b89b913f2fdc7e7fbc800e431893096624704cf6 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/restore.fun M mlton/backend/separate-vars.fun Log Message: ----------- Fix RestoreR functor signature Commit: 59c746c9e6ebc4638aa19263ab7cef63551b4008 https://github.com/MLton/mlton/commit/59c746c9e6ebc4638aa19263ab7cef63551b4008 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/sources.cm M mlton/backend/sources.mlb Log Message: ----------- Add restore & separate-vars to sources Commit: 194ba5a0ae1f70fa4b10e308ef445760f21c1535 https://github.com/MLton/mlton/commit/194ba5a0ae1f70fa4b10e308ef445760f21c1535 Author: Jason Carr <jca...@gm...> Date: 2019-01-22 (Tue, 22 Jan 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/separate-vars.fun Log Message: ----------- Rework separate-vars a bit and start on new implementation Commit: 0efeac23c542bd61bead23af59fdfc4890ed9588 https://github.com/MLton/mlton/commit/0efeac23c542bd61bead23af59fdfc4890ed9588 Author: Jason Carr <jca...@gm...> Date: 2019-01-28 (Mon, 28 Jan 2019) Changed paths: M mlton/backend/rssa.sig M mlton/backend/separate-vars.fun Log Message: ----------- Make progress on separate-vars Commit: ef33e23b249a862a2e7435e261ee82c70c332a02 https://github.com/MLton/mlton/commit/ef33e23b249a862a2e7435e261ee82c70c332a02 Author: Jason Carr <jca...@gm...> Date: 2019-01-31 (Thu, 31 Jan 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Add a messy separate-vars that adds appropriate moves Commit: ce9877574c0ee1f98d0433325017314f2f2e92a7 https://github.com/MLton/mlton/commit/ce9877574c0ee1f98d0433325017314f2f2e92a7 Author: Jason Carr <jca...@gm...> Date: 2019-01-31 (Thu, 31 Jan 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Fix seperateVars to create binds instead of moves Commit: c92c4b3c48a6b4f86f26247bcd70816852d4380c https://github.com/MLton/mlton/commit/c92c4b3c48a6b4f86f26247bcd70816852d4380c Author: Jason Carr <jca...@gm...> Date: 2019-02-03 (Sun, 03 Feb 2019) Changed paths: M mlton/backend/restore.fun M mlton/backend/separate-vars.fun Log Message: ----------- Set types of all global variables in restoreR Commit: f5e5158990b13874674dc2d8aff3e3b8a27b92de https://github.com/MLton/mlton/commit/f5e5158990b13874674dc2d8aff3e3b8a27b92de Author: Jason Carr <jca...@gm...> Date: 2019-02-04 (Mon, 04 Feb 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/switch.fun M mlton/backend/switch.sig Log Message: ----------- Fix a latent missing case in Rssa.replaceLabels Commit: d4ae458227cf0aaaf3b182c27787cb098b9175c7 https://github.com/MLton/mlton/commit/d4ae458227cf0aaaf3b182c27787cb098b9175c7 Author: Jason Carr <jca...@gm...> Date: 2019-02-04 (Mon, 04 Feb 2019) Changed paths: M mlton/backend/restore.fun Log Message: ----------- Use HashTable instead of HashSet in restoreR Commit: 071d6349b4b223bb663e7c99b352eec3ccfd7b8c https://github.com/MLton/mlton/commit/071d6349b4b223bb663e7c99b352eec3ccfd7b8c Author: Jason Carr <jca...@gm...> Date: 2019-02-04 (Mon, 04 Feb 2019) Changed paths: M mlton/backend/restore.fun Log Message: ----------- Factor out rewrites of var defs and add addPost to transfer Commit: 6c65cfb07c751c03daa4624a47087363b97aa59c https://github.com/MLton/mlton/commit/6c65cfb07c751c03daa4624a47087363b97aa59c Author: Jason Carr <jca...@gm...> Date: 2019-02-04 (Mon, 04 Feb 2019) Changed paths: M mlton/backend/restore.fun Log Message: ----------- Add handling for Arith defs in restoreR Commit: 3c6a9254135afaa40b105bb536b581c8bd8cbda3 https://github.com/MLton/mlton/commit/3c6a9254135afaa40b105bb536b581c8bd8cbda3 Author: Jason Carr <jca...@gm...> Date: 2019-02-04 (Mon, 04 Feb 2019) Changed paths: M mlton/backend/restore.fun Log Message: ----------- Add some almost-correct Cont/Handler routing to restoreR Commit: 611203c58e2bd7033e94bc00df01d01ceadfecfd https://github.com/MLton/mlton/commit/611203c58e2bd7033e94bc00df01d01ceadfecfd Author: Jason Carr <jca...@gm...> Date: 2019-02-08 (Fri, 08 Feb 2019) Changed paths: A mlton/backend/restore.sig Log Message: ----------- Add missing restore.sig Commit: 9c93b8d4dd8c8eeac9ef5b880049ef03308e7a91 https://github.com/MLton/mlton/commit/9c93b8d4dd8c8eeac9ef5b880049ef03308e7a91 Author: Jason Carr <jca...@gm...> Date: 2019-02-11 (Mon, 11 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Handle join points correctly in separate-vars Commit: 5d8a9f292e2910d2950e515febd1fb934e114e0f https://github.com/MLton/mlton/commit/5d8a9f292e2910d2950e515febd1fb934e114e0f Author: Jason Carr <jca...@gm...> Date: 2019-02-11 (Mon, 11 Feb 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Move separate vars to before implementHandlers Commit: e16241bd1b52c4833897e684574f8055c75e9d6f https://github.com/MLton/mlton/commit/e16241bd1b52c4833897e684574f8055c75e9d6f Author: Jason Carr <jca...@gm...> Date: 2019-02-11 (Mon, 11 Feb 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/restore.fun M mlton/backend/separate-vars.fun Log Message: ----------- Do some slight cleanup of separate-vars/restore Commit: fee896f50ebdf3d4405797fcc5dd76ef577f3ebc https://github.com/MLton/mlton/commit/fee896f50ebdf3d4405797fcc5dd76ef577f3ebc Author: Jason Carr <jca...@gm...> Date: 2019-02-11 (Mon, 11 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add options for controlling when separate-vars bounces variables Commit: c92db327636f1d72812772bd4f9da766450c80d7 https://github.com/MLton/mlton/commit/c92db327636f1d72812772bd4f9da766450c80d7 Author: Jason Carr <jca...@gm...> Date: 2019-02-11 (Mon, 11 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Block loops only with SML calls, not C Commit: f0d49f63194cb9e701d3951c00d684c93649bd4c https://github.com/MLton/mlton/commit/f0d49f63194cb9e701d3951c00d684c93649bd4c Author: Jason Carr <jca...@gm...> Date: 2019-02-14 (Thu, 14 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Use isMutable on bounced vars Commit: e5fa8f794c3cb4ab9b3b826d7b6ab53924908fb4 https://github.com/MLton/mlton/commit/e5fa8f794c3cb4ab9b3b826d7b6ab53924908fb4 Author: Jason Carr <jca...@gm...> Date: 2019-02-18 (Mon, 18 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add bounce-rssa-limit for naiive limitation of bounced vars Commit: 3b52a3b831daad1c3d76bff7b98464232736bc1a https://github.com/MLton/mlton/commit/3b52a3b831daad1c3d76bff7b98464232736bc1a Author: Jason Carr <jca...@gm...> Date: 2019-02-20 (Wed, 20 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Add a preliminary simplified separate-vars Commit: e51472f91cb298ec8997455e0230d79320118923 https://github.com/MLton/mlton/commit/e51472f91cb298ec8997455e0230d79320118923 Author: Jason Carr <jca...@gm...> Date: 2019-02-20 (Wed, 20 Feb 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Rewrite blocks from separateVars online; Fix avoided locations Commit: 53a8d3f2476010dac4bc62dace46015e10926cb3 https://github.com/MLton/mlton/commit/53a8d3f2476010dac4bc62dace46015e10926cb3 Author: Jason Carr <jca...@gm...> Date: 2019-02-25 (Mon, 25 Feb 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Add an ad-hoc bit of code to Rssa loopForest to prevent disconnectedness; Commit: 4c8c109cd1fba6efa9df07ef7ca0406e69e9811e https://github.com/MLton/mlton/commit/4c8c109cd1fba6efa9df07ef7ca0406e69e9811e Author: Jason Carr <jca...@gm...> Date: 2019-02-25 (Mon, 25 Feb 2019) Changed paths: M mlton/backend/restore.fun Log Message: ----------- Fix RestoreR to handle Cont blocks with Handler better Commit: 2e8589cadb8cd89bc5d5fd00c4026957f4aa249f https://github.com/MLton/mlton/commit/2e8589cadb8cd89bc5d5fd00c4026957f4aa249f Author: Jason Carr <jca...@gm...> Date: 2019-03-12 (Tue, 12 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Broken - Bounce vars at loop entrance/exits Commit: 739915259131e7ed6ccc1c045f081708c84b7493 https://github.com/MLton/mlton/commit/739915259131e7ed6ccc1c045f081708c84b7493 Author: Jason Carr <jca...@gm...> Date: 2019-03-12 (Tue, 12 Mar 2019) Changed paths: M mlton/backend/restore.fun M mlton/backend/separate-vars.fun Log Message: ----------- Instead, bounce vars to the same name, and fix restoreR to deal with handlers correctly Commit: c6a9e47b584429cd62f3b3c3e0d22b4c467f6fa4 https://github.com/MLton/mlton/commit/c6a9e47b584429cd62f3b3c3e0d22b4c467f6fa4 Author: Jason Carr <jca...@gm...> Date: 2019-03-12 (Tue, 12 Mar 2019) Changed paths: M mlton/backend/allocate-registers.fun M mlton/backend/separate-vars.fun Log Message: ----------- Add support for bounce-rssa-limit w/ weighting Commit: 6ef5fc526b0cdb1973f53cac806fc4f6dfe72b6d https://github.com/MLton/mlton/commit/6ef5fc526b0cdb1973f53cac806fc4f6dfe72b6d Author: Jason Carr <jca...@gm...> Date: 2019-03-14 (Thu, 14 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Only consider variables that are live over a bouncing location Commit: be3b3305fd7629fc24db3bc5fddf1e8818eab693 https://github.com/MLton/mlton/commit/be3b3305fd7629fc24db3bc5fddf1e8818eab693 Author: Jason Carr <jca...@gm...> Date: 2019-03-14 (Thu, 14 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Add diagnostics and fuel for rewrites Commit: 45c82772e4105faebe6bd0086d8c9ca57868c68f https://github.com/MLton/mlton/commit/45c82772e4105faebe6bd0086d8c9ca57868c68f Author: Jason Carr <jca...@gm...> Date: 2019-03-14 (Thu, 14 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Improve diagnostics and accuracy of limit flag Commit: ddb4c113bd3b34887526cdc32132a4a2a9f413ac https://github.com/MLton/mlton/commit/ddb4c113bd3b34887526cdc32132a4a2a9f413ac Author: Jason Carr <jca...@gm...> Date: 2019-03-19 (Tue, 19 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Avoid bouncing at only blocks that force args to stack Commit: 9e3b2771326ce22ec8a42e93f9d3e4883acf214b https://github.com/MLton/mlton/commit/9e3b2771326ce22ec8a42e93f9d3e4883acf214b Author: Jason Carr <jca...@gm...> Date: 2019-03-28 (Thu, 28 Mar 2019) Changed paths: M mlton/backend/machine.fun M mlton/backend/separate-vars.fun Log Message: ----------- Machine layout now includes chunk information Commit: cc4efa56e0b05d6044ab38e9d4aaa4b090a51971 https://github.com/MLton/mlton/commit/cc4efa56e0b05d6044ab38e9d4aaa4b090a51971 Author: Jason Carr <jca...@gm...> Date: 2019-03-28 (Thu, 28 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Record definition for separate-vars and add a much worse selection heuristic Commit: 4e1d5a2c4574ffb6e8eca5ccb12225f60dc6385a https://github.com/MLton/mlton/commit/4e1d5a2c4574ffb6e8eca5ccb12225f60dc6385a Author: Jason Carr <jca...@gm...> Date: 2019-03-28 (Thu, 28 Mar 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Fixup the order to make it slightly less terrible Commit: 564e59a17bb104faee19170d348ee6a025778cc3 https://github.com/MLton/mlton/commit/564e59a17bb104faee19170d348ee6a025778cc3 Author: Jason Carr <ja...@ri...> Date: 2019-04-08 (Mon, 08 Apr 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Add more info about loops Commit: a48c5606f234d749fb41583621bc1147cd2dd24b https://github.com/MLton/mlton/commit/a48c5606f234d749fb41583621bc1147cd2dd24b Author: Jason Carr <ja...@ri...> Date: 2019-04-14 (Sun, 14 Apr 2019) Changed paths: M mlton/backend/machine.fun M mlton/backend/separate-vars.fun Log Message: ----------- Merge branch 'register-allocation-refactor' of github.com:jasoncarr0/mlton into register-allocation-refactor Commit: 9d67dd5dbec2a6585f4fb2d1dc2d49d35f80d15f https://github.com/MLton/mlton/commit/9d67dd5dbec2a6585f4fb2d1dc2d49d35f80d15f Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M basis-library/primitive/basis-ffi.sml M basis-library/primitive/prim-basis.sml M basis-library/primitive/prim-int.sml M basis-library/primitive/prim1.sml M bin/regression M doc/guide/src/Users.adoc M include/c-chunk.h M lib/mlton/basic/char.sig M lib/mlton/basic/char0.sig M lib/mlton/basic/parse.sig M lib/mlton/basic/parse.sml M lib/mlton/basic/real.sig M lib/mlton/basic/vector.fun M lib/mlton/basic/vector.sig M mlton/atoms/c-function.fun M mlton/atoms/c-function.sig M mlton/atoms/c-type.fun M mlton/atoms/c-type.sig M mlton/atoms/const.fun M mlton/atoms/const.sig M mlton/atoms/id.fun M mlton/atoms/id.sig M mlton/atoms/prim-cons.fun M mlton/atoms/prim-cons.sig M mlton/atoms/prim.fun M mlton/atoms/prim.sig M mlton/atoms/real-x.fun M mlton/atoms/real-x.sig M mlton/atoms/word-size.fun M mlton/atoms/word-size.sig M mlton/atoms/word-x-vector.fun M mlton/atoms/word-x-vector.sig M mlton/atoms/word-x.fun M mlton/atoms/word-x.sig M mlton/backend/backend.fun M mlton/backend/chunkify.fun M mlton/backend/implement-profiling.fun M mlton/backend/limit-check.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/signal-check.fun M mlton/backend/ssa-to-rssa.fun M mlton/backend/switch.fun M mlton/closure-convert/closure-convert.fun M mlton/closure-convert/globalize.fun M mlton/closure-convert/lambda-free.fun M mlton/closure-convert/lambda-free.sig M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-mlton.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/amd64-codegen/amd64.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-mlton.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/control/control.sml M mlton/defunctorize/defunctorize.fun M mlton/main/compile.fun M mlton/main/compile.sig M mlton/main/main.fun M mlton/match-compile/match-compile.fun M mlton/match-compile/match-compile.sig M mlton/ssa/analyze.fun M mlton/ssa/analyze2.fun M mlton/ssa/common-arg.fun M mlton/ssa/common-subexp.fun M mlton/ssa/constant-propagation.fun M mlton/ssa/direct-exp.fun M mlton/ssa/direct-exp.sig M mlton/ssa/direct-exp2.fun M mlton/ssa/direct-exp2.sig M mlton/ssa/duplicate-globals.fun M mlton/ssa/local-flatten.fun M mlton/ssa/loop-unroll.fun R mlton/ssa/parse-ssa.fun R mlton/ssa/parse-ssa.sig R mlton/ssa/parse-ssa2.fun R mlton/ssa/parse-ssa2.sig M mlton/ssa/redundant-tests.fun M mlton/ssa/redundant.fun M mlton/ssa/remove-unused.fun M mlton/ssa/remove-unused2.fun M mlton/ssa/shrink.fun M mlton/ssa/shrink2.fun M mlton/ssa/simplify-types.fun M mlton/ssa/simplify.fun M mlton/ssa/simplify2.fun M mlton/ssa/sources.cm M mlton/ssa/sources.mlb M mlton/ssa/ssa-to-ssa2.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree.sig M mlton/ssa/ssa-tree2.fun M mlton/ssa/ssa-tree2.sig M mlton/ssa/type-check.fun M mlton/ssa/type-check2.fun M mlton/ssa/useless.fun M mlton/xml/cps-transform.fun M mlton/xml/implement-exceptions.fun M mlton/xml/implement-suffix.fun M mlton/xml/monomorphise.fun R mlton/xml/parse-sxml.fun R mlton/xml/parse-sxml.sig M mlton/xml/polyvariance.fun M mlton/xml/scc-funs.fun M mlton/xml/shrink.fun M mlton/xml/simplify-types.fun M mlton/xml/sources.cm M mlton/xml/sources.mlb M mlton/xml/sxml-simplify.fun M mlton/xml/type-check.fun M mlton/xml/xml-simplify.fun M mlton/xml/xml-tree.fun M mlton/xml/xml-tree.sig A regression/gc-collect2.ok A regression/gc-collect2.sml M runtime/Makefile M runtime/basis-ffi.h R runtime/basis/Word/Word-check.h R runtime/basis/Word/Word-consts.h M runtime/basis/Word/Word-ops.h M runtime/basis/Word/Word.c M runtime/gen/basis-ffi.def M runtime/gen/basis-ffi.h M runtime/gen/basis-ffi.sml M runtime/platform.h Log Message: ----------- Merge branch 'master' into register-allocation-refactor Commit: 1b97811f99b64f8ccfb2d001f7f16d86760d02f1 https://github.com/MLton/mlton/commit/1b97811f99b64f8ccfb2d001f7f16d86760d02f1 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/backend/restore.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Merge-related fixes Commit: 4767f56081712e94e5e84a1f83c4ea85233c5471 https://github.com/MLton/mlton/commit/4767f56081712e94e5e84a1f83c4ea85233c5471 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Remove unused loopId field Commit: 78fc6765ee5ce67ae0a4e9d4e2090d86c11a33d9 https://github.com/MLton/mlton/commit/78fc6765ee5ce67ae0a4e9d4e2090d86c11a33d9 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Remove duplicate replaceLabels definition from merging Commit: 6530cb6c4d13c215786a1a0c197a43435def87a4 https://github.com/MLton/mlton/commit/6530cb6c4d13c215786a1a0c197a43435def87a4 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Remove loop depth which never appeared in practice Commit: b9ef8edae7ec51a7daafc11b31317fc37c202da2 https://github.com/MLton/mlton/commit/b9ef8edae7ec51a7daafc11b31317fc37c202da2 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/backend/restore.fun M mlton/backend/separate-vars.fun Log Message: ----------- Remove now-unused vars Commit: 06149771cf3a288643d9481c53c120d0c3994d46 https://github.com/MLton/mlton/commit/06149771cf3a288643d9481c53c120d0c3994d46 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Merge Local and LoopLocal definition location designators Commit: e327d86725cfb20ccdb53e2793ed6754a36bb5b4 https://github.com/MLton/mlton/commit/e327d86725cfb20ccdb53e2793ed6754a36bb5b4 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/control/control-flags.sml Log Message: ----------- Remove unused bounceRssaLoops/Locations options Commit: c9501cdd00f3a1fad420f66d66afe7253352fad8 https://github.com/MLton/mlton/commit/c9501cdd00f3a1fad420f66d66afe7253352fad8 Author: Jason Carr <jca...@gm...> Date: 2019-05-14 (Tue, 14 May 2019) Changed paths: M mlton/control/control-flags.sml Log Message: ----------- Default bounceRssaLimit to 2 instead of 8, it's conservative but quite effective Commit: cfc73f43ebadca04bac11ad65b0ce80638643199 https://github.com/MLton/mlton/commit/cfc73f43ebadca04bac11ad65b0ce80638643199 Author: Jason Carr <jca...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/control/control-flags.sig M mlton/main/main.fun Log Message: ----------- Fix bounce rssa flags left in signature/main Commit: a4200bf0d1276db5916616970a2fd91b15e9ed53 https://github.com/MLton/mlton/commit/a4200bf0d1276db5916616970a2fd91b15e9ed53 Author: Jason Carr <jca...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Merge branch 'rssa-shrink-fix' into register-allocation-refactor Commit: 25e1d3ef1b52327942186bfe9bc478f6fd5a73d5 https://github.com/MLton/mlton/commit/25e1d3ef1b52327942186bfe9bc478f6fd5a73d5 Author: Jason Carr <jca...@gm...> Date: 2019-05-20 (Mon, 20 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Skip bouncing at locations which have a large number of variables to bounce Commit: 06b3d3a47a0b9d96c63c942fec4dc50e3673fcb2 https://github.com/MLton/mlton/commit/06b3d3a47a0b9d96c63c942fec4dc50e3673fcb2 Author: Jason Carr <jca...@gm...> Date: 2019-05-20 (Mon, 20 May 2019) Changed paths: M mlton/control/control-flags.sml Log Message: ----------- Fix default bounce limit and remove unused flag structure Commit: f9cd0dc063da583b6c9d9af9984422af82dff640 https://github.com/MLton/mlton/commit/f9cd0dc063da583b6c9d9af9984422af82dff640 Author: Jason Carr <jca...@gm...> Date: 2019-05-20 (Mon, 20 May 2019) Changed paths: M mlton/backend/separate-vars.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Support configurability of the cutoff for bounce locations Commit: 75209071716fb3e700269a0ceb7c4bd66c88acef https://github.com/MLton/mlton/commit/75209071716fb3e700269a0ceb7c4bd66c88acef Author: Jason Carr <jca...@gm...> Date: 2019-05-20 (Mon, 20 May 2019) Changed paths: M mlton/backend/separate-vars.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Support configurability of other bounce-rssa cutoffs Commit: df5569afe9fc52860f561f90c239093a744b8c99 https://github.com/MLton/mlton/commit/df5569afe9fc52860f561f90c239093a744b8c99 Author: Jason Carr <jca...@gm...> Date: 2019-05-26 (Sun, 26 May 2019) Changed paths: M mlton/control/control-flags.sml Log Message: ----------- Fix control flags names Commit: b610a50a073a013a1995f4e20b6817326acbf2d2 https://github.com/MLton/mlton/commit/b610a50a073a013a1995f4e20b6817326acbf2d2 Author: Jason Carr <jca...@gm...> Date: 2019-05-26 (Sun, 26 May 2019) Changed paths: M mlton/backend/restore.fun M mlton/backend/restore.sig M mlton/backend/separate-vars.fun Log Message: ----------- RESTORE_R/RestoreR -> RESTORE_RSSA/RestoreRssa Commit: 60e4f9679b56989594bc1b5444ce6756b03cf48f https://github.com/MLton/mlton/commit/60e4f9679b56989594bc1b5444ce6756b03cf48f Author: Jason Carr <jca...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Cleanup separate-vars a bit, fix issue with unlimited loop size Commit: 6774d29c7025a86f8763ba95351392c558f1efad https://github.com/MLton/mlton/commit/6774d29c7025a86f8763ba95351392c558f1efad Author: Jason Carr <jca...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Change bounce weights to be the sum of 1/loopSize for each use in a loop Commit: d2a8467aae6964a3a7bd4f6f0d7e4bcb3694551b https://github.com/MLton/mlton/commit/d2a8467aae6964a3a7bd4f6f0d7e4bcb3694551b Author: Jason Carr <jca...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M mlton/backend/separate-vars.fun Log Message: ----------- Change bounce weights to intInfs to prevent overflow Commit: b7faf7abf7c6ab2fa7f2967f95578d625e360de2 https://github.com/MLton/mlton/commit/b7faf7abf7c6ab2fa7f2967f95578d625e360de2 Author: Jason Carr <jca...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/backend/backend.fun A mlton/backend/bounce-vars.fun R mlton/backend/separate-vars.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb Log Message: ----------- Move SeparateVars -> BounceVars Commit: d168722b9ca247b4f5a448f65f3202b1b6d206ba https://github.com/MLton/mlton/commit/d168722b9ca247b4f5a448f65f3202b1b6d206ba Author: Jason Carr <jca...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/backend/bounce-vars.fun Log Message: ----------- Improve clarity for bounce rssa pass Commit: b5702fd2dce4d196d55296ef7a2838bfa1123460 https://github.com/MLton/mlton/commit/b5702fd2dce4d196d55296ef7a2838bfa1123460 Author: Jason Carr <jca...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/backend/bounce-vars.fun Log Message: ----------- Fix logic errors with bounce point cutoffs Commit: 37bf7bac0ae34f31dca66be3fbd3de410fc44249 https://github.com/MLton/mlton/commit/37bf7bac0ae34f31dca66be3fbd3de410fc44249 Author: Jason Carr <jca...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/backend/bounce-vars.fun Log Message: ----------- More comment and control flow simplications for bounce-vars Commit: 2c618977ae05cbcff08f0fd7ac4d655f293cd07f https://github.com/MLton/mlton/commit/2c618977ae05cbcff08f0fd7ac4d655f293cd07f Author: Jason Carr <jca...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/backend/bounce-vars.fun Log Message: ----------- Elaborate on isMutable setting on bounced variables Commit: a353d785106207dbc44376f7d07e4679994f3857 https://github.com/MLton/mlton/commit/a353d785106207dbc44376f7d07e4679994f3857 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M basis-library/mlton/exit.sml M basis-library/primitive/prim-mlton.sml M basis-library/primitive/prim2.sml M bin/mlton-script M include/amd64-main.h M include/c-chunk.h M include/c-common.h M include/c-main.h M include/common-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 lib/mlton/basic/hash.sml M lib/mlton/basic/vector.sig M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig M mlton/atoms/c-function.fun M mlton/atoms/c-function.sig M mlton/atoms/ffi.fun M mlton/atoms/profile-label.fun M mlton/atoms/profile-label.sig A mlton/atoms/source-maps.fun A mlton/atoms/source-maps.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/allocate-registers.fun M mlton/backend/backend.fun M mlton/backend/bounce-vars.fun M mlton/backend/chunkify.fun M mlton/backend/chunkify.sig M mlton/backend/equivalence-graph.fun M mlton/backend/implement-handlers.fun M mlton/backend/implement-profiling.fun R mlton/backend/implement-profiling.sig M mlton/backend/limit-check.fun M mlton/backend/live.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/restore.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/runtime.fun M mlton/backend/runtime.sig M mlton/backend/signal-check.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/backend/ssa-to-rssa.fun M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/amd64-codegen/amd64-entry-transfer.fun M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-jump-info.fun M mlton/codegen/amd64-codegen/amd64-live-transfers.fun M mlton/codegen/amd64-codegen/amd64-loop-info.fun M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-mlton.sig M mlton/codegen/amd64-codegen/amd64-pseudo.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/amd64-codegen/amd64-translate.sig 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/c-codegen/c-codegen.sig M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-codegen.fun M mlton/codegen/x86-codegen/x86-entry-transfer.fun M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-jump-info.fun M mlton/codegen/x86-codegen/x86-live-transfers.fun M mlton/codegen/x86-codegen/x86-loop-info.fun M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-mlton.sig M mlton/codegen/x86-codegen/x86-pseudo.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86-translate.sig M mlton/codegen/x86-codegen/x86.fun M mlton/codegen/x86-codegen/x86.sig M mlton/control/bits.sml M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/compile.fun M mlton/main/lookup-constant.fun M mlton/main/main.fun M mlton/ssa/direct-exp.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree.sig M mlton/ssa/ssa-tree2.fun M mlton/ssa/ssa-tree2.sig M runtime/Makefile R runtime/basis/Real/Math-fns.h R runtime/basis/Real/Math.c M runtime/basis/Real/Real-ops.h M runtime/gc.h M runtime/gc/call-stack.c M runtime/gc/dfs-mark.c M runtime/gc/foreach.c M runtime/gc/frame.c M runtime/gc/frame.h M runtime/gc/gc_state.h M runtime/gc/init.c M runtime/gc/invariant.c M runtime/gc/profiling.c M runtime/gc/sources.c M runtime/gc/sources.h M runtime/gc/stack.c M runtime/gc/stack.h M runtime/platform.h Log Message: ----------- Merge branch 'master' of github.com:MLton/mlton into register-allocation-refactor Commit: ebe0ef79f635249a8d64adb8cbe1eee8222b07f0 https://github.com/MLton/mlton/commit/ebe0ef79f635249a8d64adb8cbe1eee8222b07f0 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-31 (Fri, 31 May 2019) Changed paths: M lib/mlton/basic/directed-graph.sig M lib/mlton/basic/directed-graph.sml M mlton/backend/allocate-registers.fun M mlton/backend/limit-check.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/signal-check.fun M mlton/codegen/amd64-codegen/amd64-loop-info.fun M mlton/codegen/x86-codegen/x86-loop-info.fun M mlton/control/control-flags.sml M mlton/ssa/loop-unroll.fun M mlton/ssa/loop-unswitch.fun Log Message: ----------- Code style cleanup (minor) Commit: 9ccfb06a97a0b50bee0e50181f0adf9346cf86b9 https://github.com/MLton/mlton/commit/9ccfb06a97a0b50bee0e50181f0adf9346cf86b9 Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-31 (Fri, 31 May 2019) Changed paths: M lib/mlton/basic/directed-graph.sig M lib/mlton/basic/directed-graph.sml M mlton/backend/allocate-registers.fun M mlton/backend/backend.fun A mlton/backend/bounce-vars.fun M mlton/backend/limit-check.fun M mlton/backend/machine.fun A mlton/backend/restore.fun A mlton/backend/restore.sig M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/signal-check.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/codegen/amd64-codegen/amd64-loop-info.fun M mlton/codegen/x86-codegen/x86-loop-info.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun M mlton/ssa/loop-unroll.fun M mlton/ssa/loop-unswitch.fun M mlton/ssa/sources.cm M mlton/ssa/sources.mlb M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun Log Message: ----------- Merge pull request #299 from jasoncarr0/register-allocation-refactor Bounce variables around forced stack allocations in RSSA loops See MLton/mlton#218. In the translation from RSSA to Machine, each RSSA variable is assigned a location: either a stack slot or a register (i.e., local). An RSSA variable is assigned to a stack slot if it is live across a non-tail call or a `mayGC` ccall. Assigning an RSSA variable to a stack slot has a potential cost, because stack-slot accesses appear as memory reads and writes to the codegens and are not easily realized by hardware registers. This cost is multiplied when the stack-slot accesses are within a loop. For example, consider the tail recursive `revapp`: ``` standard-ml fun revapp (l, acc) = case l of [] => acc | h::t => revapp (t, h::acc) ``` This will be realized as an intraprocedural loop; however, due to the `h::acc` allocation in the loop, there will be a potential GC that forces `l` and `acc` to be assigned to stack slots (assuming the GC check occurs at the loop header). It would seem to be more efficient to assign `l` and `acc` to registers, moving them to and from stack slots at the GC, because a GC should occur on only a small fraction of the loop iterations. A new `BounceVars` RSSA pass attempts to split the live ranges of RSSA variables that are used within loops so that the within-loop instances of the variables are assigned registers (possibly being moved to and from stack slots around a GC). Unfortunately, it has not been easy to find good heuristics. The current defaults are biased towards not degrading performance. ## Benchmark results (cadmium) Specs: * 4 x AMD Opteron(tm) Processor 6172 (2.1GHz; 48 physical cores) * Ubuntu 16.04.6 LTS * gcc: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11) * gcc-8: gcc version 8.3.0 (Homebrew GCC 8.3.0) * llvm: LLVM version 8.0.0 ``` text config command C00 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen amd64 C01 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen c C02 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen c -cc gcc-8 C03 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen llvm C04 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen amd64 C05 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen c C06 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen c -cc gcc-8 C07 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen llvm ``` ### Run-Time Ratio ``` text program `C04/C00` `C05/C01` `C06/C02` `C07/C03` barnes-hut 1.050 1.004 0.9939 0.9724 boyer 1.020 0.9547 0.9826 0.9940 checksum 1.007 1.034 0.9795 1.003 count-graphs 0.9735 1.008 0.9826 0.9722 DLXSimulator 0.9397 0.9566 0.9553 0.8925 even-odd 0.9185 1.019 1.000 0.9754 fft 1.061 1.041 1.039 1.021 fib 1.013 1.046 1.040 0.9884 flat-array 1.064 0.9138 0.9901 0.9247 hamlet 0.9442 0.9713 0.9664 0.9955 imp-for 1.040 0.9223 0.8787 1.005 knuth-bendix 0.9967 1.007 0.9924 0.9744 lexgen 1.005 1.025 0.9892 0.9574 life 0.9805 0.9813 0.9779 1.012 logic 1.062 0.9721 1.002 0.9641 mandelbrot 0.9995 1.003 1.005 1.000 matrix-multiply 0.9424 1.028 1.040 0.9958 md5 0.9946 0.9913 0.9929 1.053 merge 0.9942 0.9397 0.9797 0.9558 mlyacc 0.9956 0.9558 1.021 1.026 model-elimination 0.9816 0.9842 1.000 0.9769 mpuz 0.6748 0.8899 0.9354 1.084 nucleic 0.9955 0.9901 1.008 0.9746 output1 0.9880 0.8836 0.8840 0.9090 peek 1.010 1.075 0.9669 1.000 pidigits 0.9778 1.055 0.9936 1.018 psdes-random 0.9905 0.9943 1.054 1.000 ratio-regions 1.030 1.071 0.9943 0.9448 ray 1.016 0.9944 0.9993 1.030 raytrace 1.024 1.009 0.9994 1.017 simple 0.9900 1.017 1.019 1.032 smith-normal-form 1.015 1.017 1.080 1.061 string-concat 0.9619 1.004 0.9863 1.173 tailfib 0.9867 1.056 1.001 0.9989 tailmerge 1.005 1.002 0.9844 0.9697 tak 0.9886 1.025 0.9999 1.013 tensor 1.015 0.9728 1.006 0.9927 tsp 1.028 0.9878 0.9956 0.9745 tyan 1.029 1.011 1.012 0.9404 vector32-concat 0.7653 0.6395 0.8281 1.003 vector64-concat 0.8517 0.7782 0.8571 0.9619 vector-rev 0.9514 0.9847 0.8541 0.9161 vliw 1.028 0.9368 1.017 1.011 wc-input1 0.9170 0.9157 0.9084 0.9240 wc-scanStream 0.9929 1.007 1.146 1.038 zebra 0.9984 1.008 1.008 0.9941 zern 1.026 0.9929 1.005 0.9942 MIN 0.6748 0.6395 0.8281 0.8925 GMEAN 0.9811 0.9771 0.9846 0.9912 MAX 1.064 1.075 1.146 1.173 ``` Notes: * Overall, there is less run-time improvements than were hoped, although there are some "big" wins and no "big" losses. * The LLVM codegen seems to benefit the least; it may be that LLVM is able to realizes some stack-slot accesses as hardware registers (although it is unclear how it justifies doing so --- LLVM should not be able to "see" that the access of stack slots and heap objects do not alias). * The speedups with `vector32-concat` and `vector64-concat` may be related to the observation made in MLton/mlton#288, where it was observed that moving a sequence from a register to a global had a significant slowdown (since the access through the global required an additional level of indirection). In this case, a sequence may be moving from a stack slot to a register, eliminating a level of indirection. ### Compile-Time Ratio ``` text program `C04/C00` `C05/C01` `C06/C02` `C07/C03` barnes-hut 0.9721 0.9760 0.9171 0.9393 boyer 0.9054 0.9675 0.9988 1.024 checksum 0.9636 0.9630 0.9753 1.016 count-graphs 0.9822 1.002 0.9862 0.9151 DLXSimulator 0.9205 0.9248 0.9340 0.9704 even-odd 0.9808 0.9600 0.9705 1.015 fft 0.9938 0.9644 0.9817 0.9656 fib 0.9670 0.9777 0.9750 0.9473 flat-array 0.9781 0.9758 1.013 0.9805 hamlet 0.9942 1.104 1.029 1.000 imp-for 0.9380 0.9764 0.9429 0.9979 knuth-bendix 0.9409 0.9584 0.8814 0.8520 lexgen 0.9317 0.8911 0.8933 0.9525 life 0.9598 0.9610 0.9812 0.9046 logic 0.9704 0.9620 0.9474 0.9856 mandelbrot 0.9370 0.9926 1.011 0.9694 matrix-multiply 0.9510 0.9425 0.9634 0.9497 md5 0.9568 0.9609 0.9473 0.9282 merge 0.9896 0.9517 0.9780 0.9987 mlyacc 1.124 1.076 1.161 1.150 model-elimination 0.9912 0.9493 1.093 0.9879 mpuz 0.9568 0.9690 1.006 0.9763 nucleic 0.9010 0.9169 0.9384 1.079 output1 0.9668 0.9896 0.9598 0.9086 peek 0.9713 0.9736 0.9840 0.9626 pidigits 0.9720 0.9686 0.9494 0.9379 psdes-random 0.9761 1.004 1.002 0.9435 ratio-regions 0.9844 0.9421 0.9679 0.9262 ray 0.9605 0.8728 0.8533 0.8406 raytrace 0.9130 0.9501 0.8719 1.029 simple 0.8696 0.9130 0.9537 0.9602 smith-normal-form 0.9000 0.9400 0.9632 1.167 string-concat 0.9667 0.9934 0.9466 1.000 tailfib 0.9807 0.9598 0.9779 0.9713 tailmerge 0.9848 0.9871 0.9878 0.9870 tak 0.9720 1.0000 0.9728 0.9968 tensor 0.9739 0.9348 0.9057 0.8996 tsp 0.9955 1.001 0.9283 0.9518 tyan 0.9734 0.9536 0.9052 0.9488 vector32-concat 0.9527 0.9997 0.9673 0.9471 vector64-concat 0.9617 0.9722 0.9921 0.9885 vector-rev 0.9809 0.9846 0.9625 0.9955 vliw 1.020 1.004 1.111 1.086 wc-input1 0.9345 1.002 0.9502 0.9549 wc-scanStream 0.9890 0.9830 1.027 1.028 zebra 0.9712 0.9204 1.101 0.9702 zern 0.9416 1.013 1.098 0.8998 MIN 0.8696 0.8728 0.8533 0.8406 GMEAN 0.9635 0.9691 0.9740 0.9727 MAX 1.124 1.104 1.161 1.167 ``` Notes: * One concern with assigning more RSSA variables to registers is that increases the burden on the codegen (hardware) register allocator. * With the exception of `mlyacc`, there is a general improvement in compile time. Note that configs C04, C05, C06, and C07 are using a MLton compiled with `BounceVars` to compile programs with `BounceVars`. It isn't clear how much of the benefit is due to the effect of `BounceVars` on the compiled MLton and how much is due to the effect of `BounceVars` on the IR of the compiled programs. In any case, it seems that `BounceVars` "pays for itself", although the greatest improvements are not on the largest benchmark programs (`hamlet`, `mlyacc`, `model-elimination`, `nucleic`, `vliw`). ### Executable-Size Ratio ``` text program `C04/C00` `C05/C01` `C06/C02` `C07/C03` barnes-hut 1.005 1.005 1.009 0.9982 boyer 1.002 0.9940 0.9967 0.9972 checksum 1.005 1.001 1.001 1.000 count-graphs 1.007 1.004 1.005 1.001 DLXSimulator 1.015 1.005 1.006 1.007 even-odd 1.005 1.001 0.9999 1.0000 fft 1.009 1.006 1.004 1.003 fib 1.005 1.001 0.9998 1.000 flat-array 1.005 1.001 1.001 0.9993 hamlet 1.002 1.003 1.004 0.9999 imp-for 1.005 1.001 1.001 0.9991 knuth-bendix 1.004 0.9990 1.003 1.001 lexgen 1.025 1.001 1.002 1.004 life 1.003 0.9999 1.000 0.9999 logic 1.004 1.003 1.001 1.002 mandelbrot 1.005 1.001 1.001 0.9994 matrix-multiply 1.005 1.000 1.002 0.9993 md5 1.005 1.002 1.002 1.007 merge 1.004 1.000 0.9994 0.9995 mlyacc 1.176 1.154 1.183 1.180 model-elimination 1.006 1.009 1.011 1.003 mpuz 1.006 0.9998 1.001 1.001 nucleic 1.000 0.9996 0.9998 0.9985 output1 1.006 1.002 1.002 1.006 peek 1.005 1.001 1.001 0.9996 pidigits 1.003 0.9998 1.001 1.005 psdes-random 1.005 1.001 1.002 0.9976 ratio-regions 1.020 1.008 1.007 1.009 ray 1.023 1.021 1.018 1.013 raytrace 1.008 1.003 1.003 1.011 simple 1.009 1.033 1.034 1.055 smith-normal-form 1.005 1.005 1.006 1.003 string-concat 1.004 0.9997 1.002 0.9980 tailfib 1.005 1.000 1.000 0.9998 tak 1.005 1.001 0.9997 0.9999 tensor 1.019 1.019 1.018 1.020 tsp 1.005 1.002 1.004 1.007 tyan 1.034 1.026 1.025 1.030 vector32-concat 1.005 1.000 1.001 0.9984 vector64-concat 1.005 1.000 1.001 0.9982 vector-rev 1.005 1.001 1.001 0.9988 vliw 1.033 1.010 1.012 1.027 wc-input1 1.012 1.009 1.008 1.010 wc-scanStream 1.011 1.006 1.007 1.007 zebra 1.004 1.001 1.002 1.005 zern 1.006 1.003 1.001 1.002 MIN 1.000 0.9940 0.9967 0.9972 GMEAN 1.012 1.007 1.008 1.008 MAX 1.176 1.154 1.183 1.180 ``` Notes: * Consistent with the increase in compile-time for `mlyacc`, there is an increase in code size for `mlyacc`. * Otherwise, there is little change in code size. ## Benchmark results (sulfur) Specs: * 2 x Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz (8 physical cores; 16 logical cores) * Ubuntu 16.04.6 LTS * gcc: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11) * gcc-8: gcc version 8.3.0 (Homebrew GCC 8.3.0) * llvm: LLVM version 8.0.0 ``` text config command C00 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen amd64 C01 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen c C02 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen c -cc gcc-8 C03 /home/mtf/devel/mlton/builds/g9ba73ad1e/bin/mlton -codegen llvm C04 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen amd64 C05 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen c C06 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen c -cc gcc-8 C07 /home/mtf/devel/mlton/builds/ga353d7851/bin/mlton -codegen llvm ``` ### Run-Time Ratio ``` text program `C04/C00` `C05/C01` `C06/C02` `C07/C03` barnes-hut 1.066 1.004 0.9963 0.8840 boyer 0.9890 0.9917 0.9902 0.9567 checksum 1.065 1.001 0.9935 0.9681 count-graphs 0.9580 0.9805 0.9665 0.9672 DLXSimulator 0.7266 0.7235 0.7374 0.7496 even-odd 1.009 0.9903 0.9873 0.9845 fft 0.9930 0.9983 0.9710 0.9682 fib 1.108 1.023 1.0000 0.9724 flat-array 0.9638 0.9581 0.9604 0.9620 hamlet 0.8991 0.9415 0.9295 0.9544 imp-for 0.9688 0.9359 0.9240 1.123 knuth-bendix 1.005 0.9915 1.025 1.005 lexgen 1.001 0.9954 0.9583 0.9974 life 0.9659 1.003 0.9652 0.9923 logic 0.9887 0.9938 0.9702 0.9919 mandelbrot 0.9989 1.015 1.024 1.008 matrix-multiply 1.017 0.9927 1.014 0.9881 md5 0.9846 1.006 0.9868 1.026 merge 1.071 1.077 1.039 1.074 mlyacc 0.9994 0.9986 1.012 1.011 model-elimination 0.9850 0.9656 0.9885 0.9879 mpuz 0.7695 0.8649 0.9525 1.018 nucleic 0.9267 0.9614 0.9359 0.9804 output1 0.9453 0.8869 0.8673 0.8782 peek 0.9988 1.000 1.011 0.9938 pidigits 0.9734 0.9961 1.003 0.9986 psdes-random 0.9902 0.9998 1.016 0.9956 ratio-regions 1.107 0.9887 0.9315 0.9852 ray 0.9905 0.9674 0.9930 0.9931 raytrace 1.008 1.032 1.005 1.057 simple 0.9659 0.9692 0.9842 0.9648 smith-normal-form 0.9858 0.9876 0.9712 0.9615 string-concat 0.9901 1.001 1.007 0.9731 tailfib 0.9968 1.015 1.000 0.9936 tailmerge 0.9893 0.9932 0.9810 0.8081 tak 0.9724 1.058 0.9762 0.9693 tensor 1.005 0.9982 0.9914 1.006 tsp 1.030 1.049 1.037 1.032 tyan 1.007 0.9887 0.9850 1.002 vector32-concat 0.3328 0.3212 0.6566 1.029 vector64-concat 0.3983 0.3806 0.7111 0.9922 vector-rev 0.9282 1.032 0.9473 0.9013 vliw 0.9068 0.8996 0.8662 0.9419 wc-input1 1.396 0.9463 1.120 1.348 wc-scanStream 0.9928 1.015 1.117 0.9642 zebra 0.9957 0.9966 0.9974 0.9967 zern 0.9958 1.013 1.000 0.9743 MIN 0.3328 0.3212 0.6566 0.7496 GMEAN 0.9468 0.9393 0.9640 0.9827 MAX 1.396 1.077 1.120 1.348 ``` Notes: * Again, there are some "big" wins and no "big" losses. * Interestingly, compared to `cadmium`, `vector32-concat` and `vector64-concat` see greater speedups, though `mpuz` sees a smaller speedup. ### Compile-Time Ratio ``` text program `C04/C00` `C05/C01` `C06/C02` `C07/C03` barnes-hut 0.9401 0.9632 1.013 1.006 boyer 0.9659 1.000 0.9725 0.9629 checksum 1.022 0.9911 0.9966 0.9967 count-graphs 1.005 1.042 1.004 1.011 DLXSimulator 0.9910 0.9526 0.9833 0.9914 even-odd 0.9654 0.9591 1.009 0.9795 fft 0.9841 0.9713 0.9885 0.9923 fib 0.9417 0.9946 1.000 0.9976 flat-array 1.002 1.049 0.9716 1.012 hamlet 1.103 1.018 0.9917 0.9781 imp-for 0.9586 1.041 0.9824 1.032 knuth-bendix 0.9690 1.007 1.034 0.9347 lexgen 1.049 0.9718 0.9930 1.029 life 0.9490 0.9798 1.023 1.018 logic 0.9936 0.9303 0.9768 0.9715 mandelbrot 0.9959 0.9518 0.9339 0.9740 matrix-multiply 1.117 1.060 1.013 0.9176 md5 1.007 0.9454 0.9904 0.9973 merge 0.9922 0.9493 0.9793 1.015 mlyacc 1.113 1.125 1.136 1.143 model-elimination 0.9702 1.030 1.025 1.017 mpuz 1.015 0.9249 1.053 0.9401 nucleic 0.9813 1.007 0.9919 1.043 output1 0.9285 0.9746 0.9603 1.049 peek 0.9547 0.9915 0.9410 0.9543 pidigits 0.9569 0.9757 0.9745 0.9973 psdes-random 0.9687 0.9835 1.006 0.9596 ratio-regions 0.9640 1.021 1.019 1.036 ray 1.079 0.9156 0.9577 0.9714 raytrace 1.008 0.9028 1.010 1.052 simple 1.025 1.154 0.9570 1.068 smith-normal-form 0.9611 0.9399 0.9215 0.9196 string-concat 1.023 0.9968 0.9789 1.072 tailfib 0.9869 0.9748 0.9711 1.001 tailmerge 0.9812 0.9766 0.9731 0.9051 tak 0.9694 0.9863 0.9719 0.9681 tensor 0.9759 1.061 0.9847 1.030 tsp 0.9818 1.094 0.9497 1.066 tyan 1.018 1.004 0.9927 1.011 vector32-concat 0.9783 0.9755 0.9766 0.9792 vector64-concat 0.9820 0.9876 0.9830 0.9607 vector-rev 0.9648 0.9215 1.066 1.002 vliw 1.075 1.045 1.035 1.052 wc-input1 1.012 1.025 1.005 0.9931 wc-scanStream 0.9747 0.9883 0.9940 0.9761 zebra 0.9838 0.9624 0.9758 1.003 zern 0.8921 0.9604 0.9794 0.9880 MIN 0.8921 0.9028 0.9215 0.9051 GMEAN 0.9921 0.9920 0.9919 0.9985 MAX 1.117 1.154 1.136 1.143 ``` Notes: * Compared to `cadmium`, there is less general improvement in compile time, though (with the exception of `mlyacc`), no "across the board" slowdowns. ### Executable-Size Ratio ``` text program `C04/C00` `C05/C01` `C06/C02` `C07/C03` barnes-hut 1.005 1.005 1.009 0.9983 boyer 1.002 0.9940 0.9967 0.9972 checksum 1.005 1.001 1.001 1.000 count-graphs 1.007 1.004 1.005 1.001 DLXSimulator 1.015 1.005 1.006 1.008 even-odd 1.005 1.001 0.9999 0.9999 fft 1.009 1.006 1.004 1.003 fib 1.005 1.001 0.9998 1.000 flat-array 1.005 1.001 1.001 0.9995 hamlet 1.002 1.003 1.004 0.9999 imp-for 1.005 1.001 1.001 0.9991 knuth-bendix 1.004 0.9989 1.003 1.000 lexgen 1.025 1.001 1.002 1.004 life 1.003 0.9998 1.000 0.9997 logic 1.004 1.003 1.001 0.9997 mandelbrot 1.005 1.001 1.001 0.9994 matrix-multiply 1.005 1.000 1.002 0.9996 md5 1.005 1.002 1.002 1.007 merge 1.004 1.000 0.9993 0.9994 mlyacc 1.176 1.154 1.183 1.179 mo... [truncated message content] |
From: Matthew F. <no...@gi...> - 2019-05-31 01:46:48
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: c253f1bfc6c520cd2279059271e97ae415ba1a30 https://github.com/MLton/mlton/commit/c253f1bfc6c520cd2279059271e97ae415ba1a30 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-25 (Sat, 25 May 2019) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig A mlton/atoms/profile-info.fun A mlton/atoms/profile-info.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/machine.fun M mlton/backend/machine.sig Log Message: ----------- Move `ProfileInfo` to `atoms` to facilitate sharing between RSSA and Machine Commit: 40f8e6788b5c425b248f66c609e547612840d7ce https://github.com/MLton/mlton/commit/40f8e6788b5c425b248f66c609e547612840d7ce Author: Matthew Fluet <mat...@gm...> Date: 2019-05-25 (Sat, 25 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/implement-profiling.sig Log Message: ----------- Drop `structure Machine` from `functor ImplementProfiling` Commit: 9f8b548b4adab5b5eb0b94ccb4b832f1946a4c96 https://github.com/MLton/mlton/commit/9f8b548b4adab5b5eb0b94ccb4b832f1946a4c96 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-25 (Sat, 25 May 2019) Changed paths: M mlton/atoms/profile-info.fun M mlton/atoms/profile-info.sig M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/backend/rep-type.fun M mlton/backend/runtime.fun M mlton/backend/runtime.sig M mlton/codegen/c-codegen/c-codegen.fun M mlton/main/compile.fun M mlton/main/lookup-constant.fun M runtime/gc/profiling.c M runtime/gc/sources.c M runtime/gc/sources.h Log Message: ----------- Unify fields of `structure ProfileInfo.T` and `struct GC_sourceMaps` Commit: 09268743e3c9e501f164b868f4affcd6a523104d https://github.com/MLton/mlton/commit/09268743e3c9e501f164b868f4affcd6a523104d Author: Matthew Fluet <mat...@gm...> Date: 2019-05-25 (Sat, 25 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/implement-handlers.fun M mlton/backend/implement-profiling.fun R mlton/backend/implement-profiling.sig M mlton/backend/limit-check.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/signal-check.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/backend/ssa-to-rssa.fun Log Message: ----------- Move `makeProfileInfo` into `Rssa.Program.T` Simplifies `rssaSimplify` pass. Commit: 09d1c1866632b06710a0754e97d7e85692f8eb3a https://github.com/MLton/mlton/commit/09d1c1866632b06710a0754e97d7e85692f8eb3a Author: Matthew Fluet <mat...@gm...> Date: 2019-05-25 (Sat, 25 May 2019) Changed paths: M mlton/backend/implement-profiling.fun Log Message: ----------- Replace `HashSet` with `HashTable` in `ImplementProfiling` Commit: 19958ba8335c094ac80a2dcd441f90d7b99c635d https://github.com/MLton/mlton/commit/19958ba8335c094ac80a2dcd441f90d7b99c635d Author: Matthew Fluet <mat...@gm...> Date: 2019-05-26 (Sun, 26 May 2019) Changed paths: M mlton/backend/implement-profiling.fun Log Message: ----------- Use HashTable for Label to sourceSeqIndex map in ImplementProfiling First infrastructure change to moving the runtime representation the frame to sourceSeqIndex mapping into the frame info. Commit: b9c3f9fa79e48f200cec8c89899634ceced9b088 https://github.com/MLton/mlton/commit/b9c3f9fa79e48f200cec8c89899634ceced9b088 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Export `getFrameSourceSeqIndex` as part of `makeProfileInfo` in RSSA `Program.T` Commit: d0edfb52605f6a3fa17dde075ca5d08b23aed915 https://github.com/MLton/mlton/commit/d0edfb52605f6a3fa17dde075ca5d08b23aed915 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M include/common-main.h M mlton/backend/machine.fun M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-pseudo.sig M mlton/codegen/amd64-codegen/amd64-translate.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/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-pseudo.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86.fun M mlton/codegen/x86-codegen/x86.sig M runtime/gc.h M runtime/gc/dfs-mark.c M runtime/gc/foreach.c M runtime/gc/frame.c M runtime/gc/frame.h M runtime/gc/gc_state.h M runtime/gc/invariant.c M runtime/gc/profiling.c M runtime/gc/sources.h M runtime/gc/stack.c M runtime/gc/stack.h Log Message: ----------- Rename `frameLayout{,s}` to `frameInfo{,s}` in runtime Commit: 2bdf6650d2bcae5bb642e7dc9e3ae53fdc8340b2 https://github.com/MLton/mlton/commit/2bdf6650d2bcae5bb642e7dc9e3ae53fdc8340b2 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M lib/mlton/basic/hash.sig M lib/mlton/basic/hash.sml Log Message: ----------- Add `Hash.option{,Map}` to MLton Library Commit: 01ca92f87407dd8b205353f57fbfa405b523c438 https://github.com/MLton/mlton/commit/01ca92f87407dd8b205353f57fbfa405b523c438 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/c-codegen/c-codegen.fun M runtime/gc/frame.h Log Message: ----------- Add `sourceSeqIndex` to `Machine.FrameInfo.T`/`struct GC_frameInfo` By including the `sourceSeqIndex` in the frame info, frames that share their sourceSeqIndex and all other frame info fields are automatically shared. With defunctorization and monomorphisation and inlining, it is quite possible for distinct blocks of the final RSSA IR program to nontheless correspond to the same source location. This avoids unnecessarily creating extraneous frame infos and simplifies the logic of when to create unique frame infos. Commit: 151a835d24ac66c1e6cece672b994c5225e507ef https://github.com/MLton/mlton/commit/151a835d24ac66c1e6cece672b994c5225e507ef Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M include/common-main.h M mlton/codegen/c-codegen/c-codegen.fun M runtime/gc/call-stack.c M runtime/gc/init.c M runtime/gc/profiling.c M runtime/gc/sources.c M runtime/gc/sources.h Log Message: ----------- Use `s->frameInfos[fi].sourceSeqIndex` rather than `s->sourceMaps.frameSources[fi]` Commit: 1cc3b0c54e1d5342bb83ae2bd33eea2059451ea5 https://github.com/MLton/mlton/commit/1cc3b0c54e1d5342bb83ae2bd33eea2059451ea5 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M mlton/atoms/profile-info.fun M mlton/atoms/profile-info.sig M mlton/backend/backend.fun M mlton/backend/implement-handlers.fun M mlton/backend/implement-profiling.fun M mlton/backend/limit-check.fun M mlton/backend/machine.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/signal-check.fun M mlton/backend/ssa-to-rssa.fun M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Eliminate `frameSources` field of `ProfileInfo.T` Commit: b48edf789250f99eb5807d89fd3fc1fa415b7d88 https://github.com/MLton/mlton/commit/b48edf789250f99eb5807d89fd3fc1fa415b7d88 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M include/common-main.h M mlton/atoms/profile-info.fun M mlton/atoms/profile-info.sig M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/codegen/c-codegen/c-codegen.fun M runtime/gc/profiling.c M runtime/gc/sources.c M runtime/gc/sources.h Log Message: ----------- Rename `sourceLabel` to `profileLabelInfo` Commit: 8219dd673eecac795c60d95e6be758f032716338 https://github.com/MLton/mlton/commit/8219dd673eecac795c60d95e6be758f032716338 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M runtime/gc/profiling.c M runtime/gc/sources.c M runtime/gc/sources.h Log Message: ----------- Rename macros in `sources.h` Commit: 50e54cd6eec60827eb8217a26703fd5563fed40f https://github.com/MLton/mlton/commit/50e54cd6eec60827eb8217a26703fd5563fed40f Author: Matthew Fluet <mat...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M mlton/backend/ssa-to-rssa.fun Log Message: ----------- Drop `MLton_touch` applied to unit during SSA to RSSA Commit: 11014af8dbc2d383d00ef1212df9033033dcbca3 https://github.com/MLton/mlton/commit/11014af8dbc2d383d00ef1212df9033033dcbca3 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-29 (Wed, 29 May 2019) Changed paths: M mlton/atoms/profile-info.fun M mlton/atoms/profile-info.sig M mlton/atoms/profile-label.fun M mlton/atoms/profile-label.sig M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Additional checking of ProfileInfo in RSSA and Machine IR Commit: dac1962ed8d714f30091e5100136ed427987726f https://github.com/MLton/mlton/commit/dac1962ed8d714f30091e5100136ed427987726f Author: Matthew Fluet <mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/main/main.fun Log Message: ----------- `-profile-stack true` is incompatible with `-const 'Exn.keepHistory true'` Commit: 076ac441a5cf274ef09d4277be69870ce473ea5e https://github.com/MLton/mlton/commit/076ac441a5cf274ef09d4277be69870ce473ea5e Author: Matthew Fluet <mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig R mlton/atoms/profile-info.fun R mlton/atoms/profile-info.sig A mlton/atoms/source-maps.fun A mlton/atoms/source-maps.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/x86-codegen/x86-codegen.fun Log Message: ----------- Rename `ProfileInfo` to `SourceMaps` to match `sources.h` Commit: 2a6f3398f7fa58bd2417d3de2180527bb758c6fa https://github.com/MLton/mlton/commit/2a6f3398f7fa58bd2417d3de2180527bb758c6fa Author: Matthew Fluet <mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/x86-codegen/x86-codegen.fun Log Message: ----------- Add more robust handling of sourceMaps data in x86/amd64 codegens Commit: 060897304cefb98f52a5e687c7f2142b4a1be3d3 https://github.com/MLton/mlton/commit/060897304cefb98f52a5e687c7f2142b4a1be3d3 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Simplify printing of static arrays in C codegen Commit: 738bb11d8d6382622ad3d1f76bd51a2562efe368 https://github.com/MLton/mlton/commit/738bb11d8d6382622ad3d1f76bd51a2562efe368 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Emit `main` function on one line Commit: 9ba73ad1e15839afbf0b306a32b344499e462007 https://github.com/MLton/mlton/commit/9ba73ad1e15839afbf0b306a32b344499e462007 Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M include/common-main.h M lib/mlton/basic/hash.sig M lib/mlton/basic/hash.sml M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig M mlton/atoms/profile-label.fun M mlton/atoms/profile-label.sig A mlton/atoms/source-maps.fun A mlton/atoms/source-maps.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/backend.fun M mlton/backend/implement-handlers.fun M mlton/backend/implement-profiling.fun R mlton/backend/implement-profiling.sig M mlton/backend/limit-check.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/backend/rep-type.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/runtime.fun M mlton/backend/runtime.sig M mlton/backend/signal-check.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/backend/ssa-to-rssa.fun M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-pseudo.sig M mlton/codegen/amd64-codegen/amd64-translate.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/x86-codegen/x86-codegen.fun M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-pseudo.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86.fun M mlton/codegen/x86-codegen/x86.sig M mlton/main/compile.fun M mlton/main/lookup-constant.fun M mlton/main/main.fun M runtime/gc.h M runtime/gc/call-stack.c M runtime/gc/dfs-mark.c M runtime/gc/foreach.c M runtime/gc/frame.c M runtime/gc/frame.h M runtime/gc/gc_state.h M runtime/gc/init.c M runtime/gc/invariant.c M runtime/gc/profiling.c M runtime/gc/sources.c M runtime/gc/sources.h M runtime/gc/stack.c M runtime/gc/stack.h Log Message: ----------- Merge pull request #308 from MatthewFluet/profile-info-updates Some small updates to profiling/source information. Highlights: * Move profiling information into RSSA IR `Program.T`, avoiding the need for `ImplementProfiling` to return information out of band. * Move frame to source sequence index mapping from a separate `frameSources` array into the `frameInfos` array. By including the `sourceSeqIndex` in the frame info, frames that share their `sourceSeqIndex` and all other frame info fields are automatically shared. With defunctorization and monomorphisation and inlining, it is quite possible for distinct blocks of the final RSSA IR program to nontheless correspond to the same source location. This avoids unnecessarily creating extraneous frame infos and simplifies the logic of when to create unique frame infos. Compare: https://github.com/MLton/mlton/compare/8f69c3893122...9ba73ad1e158 |
From: Matthew F. <no...@gi...> - 2019-05-31 01:36:56
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: bf9426bebb6508cec0073f680b566183b1a72168 https://github.com/MLton/mlton/commit/bf9426bebb6508cec0073f680b566183b1a72168 Author: Jason Carr <jca...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/ssa/ssa-tree2.fun Log Message: ----------- Change mutability keyword for SSA2 IR from 'ref' to 'mut'. Ref may imply that the field is separately boxed, whereas in the SSA2 IR, boxing is separate from mutability, and is instead indicated by 'tuple' or another object type. Commit: 8f69c38931222a059cc7acb1aa818c1f5f8c75a5 https://github.com/MLton/mlton/commit/8f69c38931222a059cc7acb1aa818c1f5f8c75a5 Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-30 (Thu, 30 May 2019) Changed paths: M mlton/ssa/ssa-tree2.fun Log Message: ----------- Merge pull request #309 from jasoncarr0/ssa2-layout-mut Change mutability keyword for SSA2 IR from 'ref' to 'mut'. Compare: https://github.com/MLton/mlton/compare/c3fdc5ace92a...8f69c3893122 |
From: Matthew F. <no...@gi...> - 2019-05-28 14:53:47
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 06f8833f69792eea9bf058cff4168ba5f7235a00 https://github.com/MLton/mlton/commit/06f8833f69792eea9bf058cff4168ba5f7235a00 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M include/c-common.h Log Message: ----------- Fix `Chunk<N>` prototype The `stackTop` and `frontier` arguments should be `CPointer`, not `Pointer`. Commit: c3fdc5ace92adaec2077b9ae298943c57555a02f https://github.com/MLton/mlton/commit/c3fdc5ace92adaec2077b9ae298943c57555a02f Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M include/c-common.h Log Message: ----------- Merge pull request #307 from MatthewFluet/fix-chunk-prototype Fix `Chunk<N>` prototype Compare: https://github.com/MLton/mlton/compare/1dac1fa61a3f...c3fdc5ace92a |
From: Matthew F. <no...@gi...> - 2019-05-28 14:03:16
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 1eb3ca2b4e4b0ded1540d619c7484cc37724b6f1 https://github.com/MLton/mlton/commit/1eb3ca2b4e4b0ded1540d619c7484cc37724b6f1 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-27 (Mon, 27 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Trace `Backend.varOperand` Commit: 428321adb92b17c1a955eeb43191c3cdce1833dc https://github.com/MLton/mlton/commit/428321adb92b17c1a955eeb43191c3cdce1833dc Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Omit copying unused args of `Jump` blocks at a `Goto` transfer Fixes a bug that was introduced by 136f3573c. The intended purpose of 136f3573c was to omit copying values returned via the ML stack on non-tail calls to `Cont` (normal return) and `Handle` (exceptional return) blocks and to omit copying a result returned from a `CCall` to a `CReturn` block; essentially, the receiving block is required to accept those arguments due to calling convention, but the argument may not be otherwise used, so the copies are extraneous. The implementation of 136f3573c simply omitted allocating a location (Machine IR stack slot or register (local)) for any unused argument of any block. The assumption was that only `Cont`, `Handle`, and `CReturn` blocks could have unused arguments; it was assumed that previous optimizations would eliminate any argument of a `Jump` block that was unused. However, with RedPRL, there is (at least one) `Jump` block with an unused argument; that argument is not assigned a location, so the `Option` exception is raised when trying to implement a `Goto` transfer that copies the actual operands to the formal arguments (and the corresponding formal argument doesn't exist). The fix is straight forward: only copy the actual arguments that correspond to formal arguments that are used; this is essentially the same filtering that is used to implement the prologue of `Cont` and `Handle` blocks. Closes MLton/mlton#305. Commit: 78fffc480aa56612b7deb3d187450fe1f3cabf45 https://github.com/MLton/mlton/commit/78fffc480aa56612b7deb3d187450fe1f3cabf45 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Simplify code to generate prologue of `Cont` and `Handler` blocks f2b08b921 (Omit copying unused args of Cont and Handler blocks from stack) introduced code to check whether or not a `Cont` or `Handler` block argument was used by inspecting the `live` set. Then 136f3573c (Omit allocating registers for unused args of Cont, CReturn, and Handler blocks) introduced code to check whether or not a `Cont` or `Handler` block argument was assigned a location. However, `Cont` or `Handler` block argument is not assigned a location exactly when it is not a member of the `live` set. Hence, the original code to check whether or not a `Cont` or `Handler` block argument was used by inspecting the `live` set is redundant; the code to check whether or not a `Cont` or `Handler` block argument was assigned a location suffices. Commit: 1dac1fa61a3fd26a500f5317c24aa845e1834e60 https://github.com/MLton/mlton/commit/1dac1fa61a3fd26a500f5317c24aa845e1834e60 Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-28 (Tue, 28 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Merge pull request #306 from MatthewFluet/bug-305 Fix MLton/mlton#305 Compare: https://github.com/MLton/mlton/compare/a81b56a567e7...1dac1fa61a3f |
From: Matthew F. <no...@gi...> - 2019-05-25 03:00:08
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: aa007938351366c9da6b5706c37cf0e7fbd9c8a2 https://github.com/MLton/mlton/commit/aa007938351366c9da6b5706c37cf0e7fbd9c8a2 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M include/c-common.h M include/c-main.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Simplify C and LLVM codegen trampoline Previously, a chunk had the prototype `struct cont ChunkN(void)`, a global `uintptr_t nextFun` contained the index of the next block to execute, while a `structure cont { void* nextChunk; }` contained the next chunk to execute, so the trampoline looked like: cont=(*(struct cont(*)(void))cont.nextChunk)(); Returning the next block index via a global seems inefficient (and does not work in the CMU MultiMLton project). Now, a chunk has the prototype `uintptr_t ChunkN(uinptr_t)`, where the argument is the index of the next block to execute and the result is the index of the next block to execute, so the trampoline looks like: nextChunk = nextChunks[nextBlock]; nextBlock = (*nextChunk)(nextBlock); In addition, the global `int returnToC`, used to signal the termination of a call to an exported SML function, is eliminated. Instead, the special block index `(uintptr_t)-1` is used to terminate the trampoline. One minor inefficiency is that the known destination chunk of a call cannot be exploited. Commit: 589c30a19cb0cf39abffbf55138d2d0ca6576d05 https://github.com/MLton/mlton/commit/589c30a19cb0cf39abffbf55138d2d0ca6576d05 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Remove unused `frameIndex` component of `labelInfo` in C & LLVM codegens Commit: 9cb1adc2b9342fd10b3dce84e96d64bfa949a94b https://github.com/MLton/mlton/commit/9cb1adc2b9342fd10b3dce84e96d64bfa949a94b Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Remove unused `layedOut` component of `labelInfo` in LLVM codegen Commit: 7c7b5ca1102b3331163d4b94790aa69701a0e5d0 https://github.com/MLton/mlton/commit/7c7b5ca1102b3331163d4b94790aa69701a0e5d0 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Remove unused `block` component of `labelInfo` in LLVM codegen Commit: 05b1f6f82ded29ad66c40caca0e53f29cefa47e7 https://github.com/MLton/mlton/commit/05b1f6f82ded29ad66c40caca0e53f29cefa47e7 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Simplify C-codegen by leaving code layout to C compiler Simplify C-codegen by emitting basic blocks that always explicitly transfer, dispensing with fall-thru control-flow. Avoids the intermingling of the top-level case dispatch with the basic block code. Commit: 6ddee49bb2beb4c5f8a9d16d1c41733656b167f7 https://github.com/MLton/mlton/commit/6ddee49bb2beb4c5f8a9d16d1c41733656b167f7 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/rep-type.fun Log Message: ----------- Fix warnings with C codegen In the C and LLVM codegens, a return label is `uintptr_t`, not `void *`. Commit: ce010c834379b5ccb8c942b83bf2ac483eaf73f1 https://github.com/MLton/mlton/commit/ce010c834379b5ccb8c942b83bf2ac483eaf73f1 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Use `uintptr_t` rather than `void*` for size of return address See runtime/gc/frame.h for the defn of `GC_returnAddress`, but that header is not included in c-chunk.h. Commit: 3edda85300cd69d894b4dc651278a47007fdad54 https://github.com/MLton/mlton/commit/3edda85300cd69d894b4dc651278a47007fdad54 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Fix warnings with C codegen `memcpy` is used by coercion `<ty>_castTo<ty>` functions (`basis/coerce.h`) and by misaligned `<ty>_fetch`, `<ty>_store`, and `<ty>_move` functions (`basis/Real/Real-ops.h` and `basis/Word/Word-ops.h`). Commit: 9fb392194ee82bc032e427e67e5971a95a54426f https://github.com/MLton/mlton/commit/9fb392194ee82bc032e427e67e5971a95a54426f Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M runtime/basis/Real/Math-fns.h M runtime/platform.h Log Message: ----------- Fix warnings with C codegen Math functions used by `Real<n>_f` functions (`basis/Real/Real-ops.h` and `basis/Real/Math-fns.h`). Commit: 5535dc8169e21162a141811c7895bbd844667c1e https://github.com/MLton/mlton/commit/5535dc8169e21162a141811c7895bbd844667c1e Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M runtime/Makefile R runtime/basis/Real/Math-fns.h R runtime/basis/Real/Math.c M runtime/basis/Real/Real-ops.h Log Message: ----------- Consolidate `Math-fns.h` into `Real-ops.h` Commit: a6bb878afae541ee70aee221a96c62ce62f667f5 https://github.com/MLton/mlton/commit/a6bb878afae541ee70aee221a96c62ce62f667f5 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Eliminate `while (1) { ... }` wrapper in `c-chunk.h` Commit: 110ee20537ca8c7c6012363c3e2680d167b1bec8 https://github.com/MLton/mlton/commit/110ee20537ca8c7c6012363c3e2680d167b1bec8 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Tweak formatting of generated .c files Commit: 29a5b4627097768a7b40dd0f61cb6c2c8a68f16c https://github.com/MLton/mlton/commit/29a5b4627097768a7b40dd0f61cb6c2c8a68f16c Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/amd64-main.h M include/c-main.h M include/common-main.h M include/x86-main.h M mlton/atoms/ffi.fun M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Fix C compiler warnings in generated main .c file The C compiler warns about `static void MLton_callFromC ()` defined but never used. Only define the `MLton_callFromC` function if the program has exports. Commit: 477986878dbf2fa715813b80198365b8d5405ecf https://github.com/MLton/mlton/commit/477986878dbf2fa715813b80198365b8d5405ecf Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.sig M mlton/main/compile.fun Log Message: ----------- Remove `declareFFI` from `signature C_CODEGEN` Commit: b1c972f4262990dbe45dfdfa0dd8acc6c2bd56b0 https://github.com/MLton/mlton/commit/b1c972f4262990dbe45dfdfa0dd8acc6c2bd56b0 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Fix warnings with C codegen The BZ and BNZ macros can be used with words of all sizes. Commit: 1d579c12a18a800ad8fa796a2bb93b32a10b8da5 https://github.com/MLton/mlton/commit/1d579c12a18a800ad8fa796a2bb93b32a10b8da5 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Remove unused macro Commit: e9809baa4fa9984a84ae28c7d244b67e226c24ab https://github.com/MLton/mlton/commit/e9809baa4fa9984a84ae28c7d244b67e226c24ab Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Add parens to `S` macro in `c-chunk.h`; matching other macros Commit: b418d6b61e4619eef5a2772393385a3212cb0bfa https://github.com/MLton/mlton/commit/b418d6b61e4619eef5a2772393385a3212cb0bfa Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Drop special case making frontier and stackTop registers Commit: a768347f69eabaee04892273359da5516713a3d2 https://github.com/MLton/mlton/commit/a768347f69eabaee04892273359da5516713a3d2 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Reorganize `c-chunk.h` Commit: 797405ed0ca77aaf653b85fee1de41b0ef1b8efd https://github.com/MLton/mlton/commit/797405ed0ca77aaf653b85fee1de41b0ef1b8efd Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Mark CCall functions with no CReturn block as `noreturn` Previously, the C compiler could warn about uninitialized variables: hello.1.c: In function ‘Chunk0’: hello.1.c:2195:6: warning: ‘P_0’ may be used uninitialized in this function [-Wmaybe-uninitialized] P_2 = O(Objptr, P_0, 0); ^ due to code like: L_543: FlushFrontier(); FlushStackTop(); MLton_halt (GCState, S(Word32, 0)); CacheFrontier(); CacheStackTop(); /* NoReturn(); */ L_529: P_1 = O(Objptr, P_0, 8); P_2 = O(Objptr, P_0, 0); S(Objptr, 8) = P_1; P_0 = P_2; goto L_530; Since `MLton_halt` does not return, there is no CReturn block to jump to after the call. To the C compiler, it appears that control can fall thru from `L_543` into `L_529` block and there are transfers to `L_543` that do not intialize `P_0`. Commit: 23e3f9babfa7a682a515616d5bd660ff249ae409 https://github.com/MLton/mlton/commit/23e3f9babfa7a682a515616d5bd660ff249ae409 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/ssa-to-rssa.fun Log Message: ----------- Fix warnings with C codegen A `MLton_eq` primitive applied to `Objptr` type is translated to a `Word<N>_equal` primitive, but makes an integer from pointer without a cast: In file included from poly-equal.1.c:2:0: poly-equal.1.c: In function ‘Chunk0’: /home/mtf/devel/mlton/mlton.sulfur.git-wt/build/lib/mlton/include/c-chunk.h:83:18: warning: passing argument 1 of ‘Word64_equal’ makes integer from pointer without a cast [-Wint-conversion] #define S(ty, i) (*(ty*)(StackTop + (i))) ^ poly-equal.1.c:3121:24: note: in expansion of macro ‘S’ W32_0 = Word64_equal (S(Objptr, 8), S(Objptr, 0)); ^ In file included from /home/mtf/devel/mlton/mlton.sulfur.git-wt/build/lib/mlton/include/c-chunk.h:198:0, from poly-equal.1.c:2: /home/mtf/devel/mlton/mlton.sulfur.git-wt/build/lib/mlton/include/basis/Word/Word-ops.h:40:8: note: expected ‘Word64 {aka long unsigned int}’ but argument is of type ‘Objptr {aka unsigned char *}’ Bool Word##kind##_##name (Word##kind w1, Word##kind w2) { \ ^ /home/mtf/devel/mlton/mlton.sulfur.git-wt/build/lib/mlton/include/basis/Word/Word-ops.h:109:1: note: in expansion of macro ‘compare’ compare (size, equal, ==) \ ^ /home/mtf/devel/mlton/mlton.sulfur.git-wt/build/lib/mlton/include/basis/Word/Word-ops.h:142:1: note: in expansion of macro ‘all’ all (64) ^ This commit inserts the appropriate casts, although it would also be reasonable to introduce a new `Objptr_equals` primitive to perform the comparison without a cast. Commit: ba4ab71d054ce4afc5acf0b2c1b9c1b5d6311b65 https://github.com/MLton/mlton/commit/ba4ab71d054ce4afc5acf0b2c1b9c1b5d6311b65 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Cosmetic improvements to C codegen output Commit: 30d5690c98d6bba3a73036d229cdf8ecce3457f8 https://github.com/MLton/mlton/commit/30d5690c98d6bba3a73036d229cdf8ecce3457f8 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Translate more Switch transfers to BNZ statements in C codegen Commit: dc9f71b957d02e9b883555026c2c5e81a473882c https://github.com/MLton/mlton/commit/dc9f71b957d02e9b883555026c2c5e81a473882c Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Convert last Switch case to default, rather than first Commit: 663d60e83c3ff5f4186ebf73586963078ca80eb9 https://github.com/MLton/mlton/commit/663d60e83c3ff5f4186ebf73586963078ca80eb9 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Simplify Switch translation in LLVM codegen Unlike gcc at -O1, llvm-opt at -O1 will optimize a switch with cases for only 0:w32 and 1:w32 to br. Commit: 949e5c8a38923f0a8623bab54792c5f1a2c56f99 https://github.com/MLton/mlton/commit/949e5c8a38923f0a8623bab54792c5f1a2c56f99 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Make `CReturn<ty>` variables chunk local Previously, the `CReturn<ty>` variables were globals, declared in the "main" .c file and `extern` imported into the chunk .c and .ll files. This is unnecessary (and does not work in the CMU MultiMLton project); in particular, it requires the c compiler to write the result to memory and, depending on the intervening code, to read the result from memory, although the result value is likely to have been returned via a register. Now, the `CReturn<ty>` variables are chunk local. They are marked `__attribute__ ((unused))` to suppress compiler warnings. Although it would be possible to examine the set of CCalls in the chunk (as is done to declare the FFI calls) and only generate variables that correspond to return types of called functions, even this does not suffice, because a CReturn block can ignore the result and the `CReturn<ty>` variable is unused. Commit: a1f3e95df810604b012e7112e2aeadf59ed85987 https://github.com/MLton/mlton/commit/a1f3e95df810604b012e7112e2aeadf59ed85987 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/atoms/c-function.fun M mlton/atoms/c-function.sig M mlton/backend/implement-profiling.fun M mlton/backend/limit-check.fun M mlton/backend/rep-type.fun M mlton/backend/signal-check.fun M mlton/backend/ssa-to-rssa.fun M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-jump-info.fun M mlton/codegen/amd64-codegen/amd64-live-transfers.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-jump-info.fun M mlton/codegen/x86-codegen/x86-live-transfers.fun Log Message: ----------- Split CFunction.Kind.Runtime maySwitchThreads field into maySwitchThreads{From,To} maySwitchThreadsFrom indicates that the C function may switch ML threads; at the return from the C function, the mutator should jump to the block indicated by the return address on the top of the now current ML stack. Examples are Thread_switchTo and GC_collect (with signals). maySwitchThreadsTo indicates that the C function's return block may be switched to, in the sense that that block may be indicated by the return address on the top of a stack seen by a `maySwitchThreadsFrom` function. Examples are Thread_switchTo, GC_collect (with signals), GC_copyCurrent, and GC_saveWorld; note that these last two functions will always return and resume execution with the C function's return block (the ML thread is not switched by these functions), but explicit thread switching or world resumption will also begin execution at the C functions' return block. Note that maySwitchThreadsFrom implies maySwitchThreadsTo. This change is in preparation for a change to the C and LLVM codegens to treat `maySwitchThreadsTo` as the indicator of an entry, rather than `mayGC`. Commit: 7d9ce4f17d9e39e162a323e677995c2fd5544381 https://github.com/MLton/mlton/commit/7d9ce4f17d9e39e162a323e677995c2fd5544381 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Require `maySwitchThreadsTo`, rather than `mayGC`, for CReturn entry Treating a block as an entry requires that the block have an index in the `ChunkSwitch`. However, it is unnecessary for `mayGC=true` but `maySwitchThreadsTo=false` to be entries. Furthermore, it can lead to C compiler warnings, due to the following: ChunkSwitch (0) ... case 5: goto L_45; ... EndChunkSwitch L_44: S(Word64, 56) = /* L_45 */ 5; Push (64); FlushFrontier (); FlushStackTop (); CReturnP = GC_sequenceAllocate (GCState, (Word64)(0x0ull), (Word64)(0x21ull), (Word64)(0x1Bull)); CacheFrontier (); CacheStackTop (); goto L_45; L_45: Push (-64); S(Objptr, 56) = CReturnP; W64_0 = (Word64)(0x0ull); goto loop_6; `GC_arrayAllocate` has `mayGC=true` and `maySwitchThreadsTo=false`. Making `L_45` an entry block makes it appear that control can enter the chunk and transfer to `L_45`, without assigning `CReturnP`. Now, `L_45` is not treated as an entry block and the only path to `L_45` is from the `GC_arrayAllocate` call. Commit: 815bc39de484d2ea0918335ff7fdc4bc1bcf9707 https://github.com/MLton/mlton/commit/815bc39de484d2ea0918335ff7fdc4bc1bcf9707 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M basis-library/primitive/prim-mlton.sml M basis-library/primitive/prim2.sml Log Message: ----------- Use MLton_bug primitive, rather than c function, in Basis Library Commit: 100fda06fd24fa7a7737a18dd3604ce9f193413c https://github.com/MLton/mlton/commit/100fda06fd24fa7a7737a18dd3604ce9f193413c Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/ssa-to-rssa.fun Log Message: ----------- Translate `MLton_bug` prim to RSSA `CCall` transfer with `return=NONE` Commit: 023fe78ca821d7ced68c1f08ab895b3e2860d818 https://github.com/MLton/mlton/commit/023fe78ca821d7ced68c1f08ab895b3e2860d818 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Mark CCall functions with no CReturn blocks as `noreturn` in LLVM codegen Commit: b21b9b0e5c15448d91cb19993028851446196006 https://github.com/MLton/mlton/commit/b21b9b0e5c15448d91cb19993028851446196006 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree.sig M mlton/ssa/ssa-tree2.fun M mlton/ssa/ssa-tree2.sig Log Message: ----------- Fix comment regarding SSA `Runtime` transfer return Nothing checks that a `Runtime` transfer has a nullary return, although currently the only `Runtime` transfers are `MLton_halt` and `Thread_copyCurrent`; the former does not return (and has a `unit` result type) and the latter cannot directly return the copied thread (because switching to the copied thread will not return a value; see comment in `basis-library/primitive/prim-mlton.sml`). Commit: 55b03f469084f7dee012e0a2fb736ef511fd6d41 https://github.com/MLton/mlton/commit/55b03f469084f7dee012e0a2fb736ef511fd6d41 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/ssa-to-rssa.fun Log Message: ----------- Set `mayGC=true` for `MLton_halt` C function Setting `mayGC=true` for `MLton_halt` ensures that the mutator stack invariant holds, which would allow for stronger assertion checking at program exit. Commit: 4c3a7122d2305186549757f5381da538418bbe99 https://github.com/MLton/mlton/commit/4c3a7122d2305186549757f5381da538418bbe99 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/ssa-to-rssa.fun M mlton/ssa/direct-exp.fun Log Message: ----------- Treat `MLton_halt` as a normal (non-runtime) primitive Don't translate `MLton_halt` to a SSA `Runtime` transfer; the only use of `Runtime` transfer is to identify `Thread_copyCurrent`. Also, don't translate `MLton_halt` to an RSSA `CCall` with `return=NONE`. Omitting the return label does not push a return address to the ML stack, which does not allow `MLton_halt` to trace the stack. Commit: 2f94a9ec396602ba5e6946336a40178e8c7ed623 https://github.com/MLton/mlton/commit/2f94a9ec396602ba5e6946336a40178e8c7ed623 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M basis-library/mlton/exit.sml M basis-library/primitive/prim2.sml Log Message: ----------- Tweak use of `MLton_halt` and `MLton_bug` primitives in Basis Library Commit: f950e10fe9eae3a13e8e1a23beb9885eb7b3e480 https://github.com/MLton/mlton/commit/f950e10fe9eae3a13e8e1a23beb9885eb7b3e480 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/ssa/direct-exp.fun Log Message: ----------- Sequence `MLton_bug` prim with `Bug` transfer in SSA `DirectExp` Commit: 2aa478a0f1c1c2ba223287cb80ae88a56a89e123 https://github.com/MLton/mlton/commit/2aa478a0f1c1c2ba223287cb80ae88a56a89e123 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Cosmetic updates to `c-chunk.h` Commit: d77333c04241869a09dc4e1b84ee8f4384ec2055 https://github.com/MLton/mlton/commit/d77333c04241869a09dc4e1b84ee8f4384ec2055 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- C codegen implements signed `Word_{quot,rem}` Commit: 93b08ab0e39adab26a6446e463e92e1963e3a228 https://github.com/MLton/mlton/commit/93b08ab0e39adab26a6446e463e92e1963e3a228 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Note dst chunk in `FarCall` Commit: b9a0c070da4c0ee0c3d70f9bab6cb9b576707e1f https://github.com/MLton/mlton/commit/b9a0c070da4c0ee0c3d70f9bab6cb9b576707e1f Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.sig Log Message: ----------- Update comments in `signature MACHINE` Commit: 6219e0139b59a223082c0885c80c67f379aa6832 https://github.com/MLton/mlton/commit/6219e0139b59a223082c0885c80c67f379aa6832 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/x86-codegen/x86-codegen.fun Log Message: ----------- Introduce `structure FrameOffsets` and `structure FrameLayout` in Machine IR Commit: 9def00547973ff02fb42295774a878a09318cbd6 https://github.com/MLton/mlton/commit/9def00547973ff02fb42295774a878a09318cbd6 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Remove unused code in RSSA to Machine IR conversion Commit: 9a6d796ea1c590822ed183031ad1c91eb8702f48 https://github.com/MLton/mlton/commit/9a6d796ea1c590822ed183031ad1c91eb8702f48 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Simplify construction of final `frameLayouts` and `frameOffsets` Commit: fca2dd2b842f957f2c6fbb3f4a85aca50c7bff51 https://github.com/MLton/mlton/commit/fca2dd2b842f957f2c6fbb3f4a85aca50c7bff51 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Use abbreviated long identifiers Commit: 5ea88a9a78d30138e8b60967242af5ef0a4e4848 https://github.com/MLton/mlton/commit/5ea88a9a78d30138e8b60967242af5ef0a4e4848 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/control/bits.sml Log Message: ----------- Export `val Bytes.hash: Bytes.t -> word` Commit: b8772508d2bfc8dee4a4171ed3cb914e5cf7bccb https://github.com/MLton/mlton/commit/b8772508d2bfc8dee4a4171ed3cb914e5cf7bccb Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Replace `IntSet` with `ByteSet` Avoid unnecessary conversions between `Int.t` and `Bytes.t` Commit: 170ca4064a007ad6a207740d3d6286bae8c03795 https://github.com/MLton/mlton/commit/170ca4064a007ad6a207740d3d6286bae8c03795 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-translate.fun Log Message: ----------- Allocate a "frame" for `Func` blocks in Machine IR Frames serve a number of distinct purposes. One purpose is to serve as the unique index for "entry" blocks in the C and LLVM codegens. `Func` blocks are "entry" blocks and, previously, were assigned indices after all of the frame indices of existing blocks. This has the disadvantage of making the `Func` entry indices disjoint from the other block indices, possibly inhibiting turning the chunk entry switch into a jump table. Moreover, with 6bc091d, the set of entry blocks for a chunk was reduced for `CReturn` blocks from those that have `mayGC=true` to those that have `maySwitchThreadsTo=true`. This further fragments the chunk entry switch. To facilitate making the chunk entry switch a dense switch, `Func` blocks are assigned frames. This frame is never used by the runtime system, since a `Func` label is never the stack top. (Note: `Handler` blocks are also assigned frames, and this frame is also never used by the runtime system, since a `Handler` label is never the stack top. On the other hand, the "size" of a `Handler` frame is used to pop the stack.) Hence, the frame is assigned the empty list of live offsets and a size of 0. This means that, for the native codegen, all `Func` blocks will share the same frame layout and we only "waste" one entry in the `frameLayouts` array (and, potentially, one entry in the `frameOffsets` array, if the empty list of offsets is not otherwise created). For the C and LLVM codegens, we will create a distinct entry in the `frameLayouts` array for each `Func` block; since there are an order of magnitude more `Cont`, `Handler`, and `CReturn` blocks than `Func` blocks, this should not be significant in code size. Commit: 46d4df640a389fcb1e27687a5d6594821c17cb2d https://github.com/MLton/mlton/commit/46d4df640a389fcb1e27687a5d6594821c17cb2d Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Refactor to use `Option.app` Commit: 6360a518bbd08ed27f69c9b8b4960fef348c2a40 https://github.com/MLton/mlton/commit/6360a518bbd08ed27f69c9b8b4960fef348c2a40 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Initialize index for chunks during initial traversal Commit: 3e79aa7d55f58f780c88596ed152927b976a1b31 https://github.com/MLton/mlton/commit/3e79aa7d55f58f780c88596ed152927b976a1b31 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Emit chunks before main in C codegen This makes `Chunk<n>` appear in `file.<n>.c`. Commit: 791576554daed70436f435f250b75b0e03b04489 https://github.com/MLton/mlton/commit/791576554daed70436f435f250b75b0e03b04489 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/amd64-codegen/amd64-entry-transfer.fun M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-live-transfers.fun M mlton/codegen/amd64-codegen/amd64-loop-info.fun M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-mlton.sig M mlton/codegen/amd64-codegen/amd64-pseudo.sig M mlton/codegen/amd64-codegen/amd64-translate.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-entry-transfer.fun M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-live-transfers.fun M mlton/codegen/x86-codegen/x86-loop-info.fun M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-mlton.sig M mlton/codegen/x86-codegen/x86-pseudo.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86.fun M mlton/codegen/x86-codegen/x86.sig Log Message: ----------- Include (optional) frame size in Machine IR CCall transfer The codegens only need the frame size at a CCall, not the full frameInfo. Removing this use of frameInfo in a transfer will simplify the implementation of a Machine IR transformation that ensures that all entry labels of a chunk have consecutive indices. Commit: a800025497e337f3a61ba86d3644773faf4d5d9b https://github.com/MLton/mlton/commit/a800025497e337f3a61ba86d3644773faf4d5d9b Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-mlton.sig M mlton/codegen/amd64-codegen/amd64-pseudo.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/amd64-codegen/amd64.fun M mlton/codegen/amd64-codegen/amd64.sig Log Message: ----------- Drop `frameInfo` from `CCall` transfers in amd64 codegen Commit: 9e2c9eec137592945e9b6c0468906f8d2b6739a3 https://github.com/MLton/mlton/commit/9e2c9eec137592945e9b6c0468906f8d2b6739a3 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-mlton.sig M mlton/codegen/x86-codegen/x86-pseudo.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86.fun M mlton/codegen/x86-codegen/x86.sig Log Message: ----------- Drop `frameInfo` from `CCall` transfers in x86 codegen Commit: cdd927a2183080482edeb721cf5553826c4fbaee https://github.com/MLton/mlton/commit/cdd927a2183080482edeb721cf5553826c4fbaee Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-translate.fun Log Message: ----------- Drop `frameInfo` from `CCall` transfer in Machine IR Commit: 8f439d8118bb2ef18ff422e95850bfefb47e07e0 https://github.com/MLton/mlton/commit/8f439d8118bb2ef18ff422e95850bfefb47e07e0 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/allocate-registers.fun M mlton/backend/backend.fun M mlton/backend/live.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Eliminate fold and foreach over defs of RSSA Transfers With the elimination of RSSA `Transfer.Arith`, no RSSA transfer has a define. Commit: 8b3ea4493ebed086871be2ec5656fbf31c789d69 https://github.com/MLton/mlton/commit/8b3ea4493ebed086871be2ec5656fbf31c789d69 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Print lengths of static arrays in generated C Commit: ac986162e0b75c5af60ce82444a1fdd8716894a3 https://github.com/MLton/mlton/commit/ac986162e0b75c5af60ce82444a1fdd8716894a3 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Tweak DEBUG_CCODEGEN diagnostics Commit: f96a0f12e639157e58762b181e7abe3a43165075 https://github.com/MLton/mlton/commit/f96a0f12e639157e58762b181e7abe3a43165075 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Print indices of static arrays in generated C Commit: 4cb9cbc9080c1f0400978fc08dbc51f06163bcb6 https://github.com/MLton/mlton/commit/4cb9cbc9080c1f0400978fc08dbc51f06163bcb6 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Add `Machine.Kind.isEntry` Commit: c9038e1c4a5314becbeb644bb14a2bf148b217b9 https://github.com/MLton/mlton/commit/c9038e1c4a5314becbeb644bb14a2bf148b217b9 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Share `frameLayouts` of non-entry frames in C and LLVM codegens It is only necessary for entry frames to have distinct `frameLayouts` indices, becaue the index will be used for the trampoline. Non-entry frames may share `frameLayouts` indices. For the `hamlet` benchmark, this reduces the size of the `frameLayouts` array from 5830 entries to 4064 entries. Commit: 0129d52bf7b048553b7718daf8fb402b9aeaadd5 https://github.com/MLton/mlton/commit/0129d52bf7b048553b7718daf8fb402b9aeaadd5 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M lib/mlton/basic/hash-table.sig M lib/mlton/basic/hash-table.sml M mlton/backend/backend.fun Log Message: ----------- Simplify hash tables for uniquifying globals Commit: a6e7e4e54b6f12f6cf458f75987a715fc9f58e8d https://github.com/MLton/mlton/commit/a6e7e4e54b6f12f6cf458f75987a715fc9f58e8d Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.fun M mlton/backend/machine.sig Log Message: ----------- Move `structure Frame{Offsets,Layout,Info}` in `machine.{sig,fun}` Commit: 55d641799250da06eee37eec92d294f5237d5b38 https://github.com/MLton/mlton/commit/55d641799250da06eee37eec92d294f5237d5b38 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Make `FrameOffsets` self indexing Commit: 5acb1c4c47ac60fa2045596d2d99fe99650995a1 https://github.com/MLton/mlton/commit/5acb1c4c47ac60fa2045596d2d99fe99650995a1 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Refactor `frameOffsetsIndex: int` to `frameOffsets: FrameOffsets.t` Commit: a720d049d4b06a38869b73a768ee005915b80b5a https://github.com/MLton/mlton/commit/a720d049d4b06a38869b73a768ee005915b80b5a Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig Log Message: ----------- Use `HashTable.t` rather than `HashSet.t` to allocate frame layouts Commit: 111016025bab02e935dde7989ca1fd13edb29aa9 https://github.com/MLton/mlton/commit/111016025bab02e935dde7989ca1fd13edb29aa9 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Make `FrameLayout` self indexing Commit: 66a8736a70f88ea4a0680c54b73e18c4eff4e82c https://github.com/MLton/mlton/commit/66a8736a70f88ea4a0680c54b73e18c4eff4e82c Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/x86-codegen/x86-codegen.fun Log Message: ----------- Unify `structure FrameLayout` and `structure FrameInfo` Commit: 30cfa725cae94c5b7096a61156eb9002604de49f https://github.com/MLton/mlton/commit/30cfa725cae94c5b7096a61156eb9002604de49f Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-mlton.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/amd64-codegen/amd64-translate.sig M mlton/codegen/x86-codegen/x86-codegen.fun M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-mlton.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86-translate.sig Log Message: ----------- Simplify native codegens using inline FrameInfo Commit: 653733815d4c53164b2dd0996d732091b47a1237 https://github.com/MLton/mlton/commit/653733815d4c53164b2dd0996d732091b47a1237 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.fun M mlton/backend/machine.sig Log Message: ----------- Add `FrameInfo.setIndex` to support re-indexing of frame layouts Commit: 067237a5596af75fe1c60b060ab117188e40e483 https://github.com/MLton/mlton/commit/067237a5596af75fe1c60b060ab117188e40e483 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Whitespace fixup Commit: 685a036ca65d9da1c5d958ab862e04fc5f4d9050 https://github.com/MLton/mlton/commit/685a036ca65d9da1c5d958ab862e04fc5f4d9050 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/implement-profiling.fun M mlton/backend/implement-profiling.sig Log Message: ----------- Reindex frame infos for C and LLVM codegens Adjust the frameInfo indices to ensure that the entries of each chunk are consecutive and all entry indices precede all non-entry indices. The former ensures that the C compiler can use a jump table for the chunk switch. The latter will allow the `nextChunks` array to avoid including non-entry entries and, consequently, be much smaller. Commit: f0bc5af9a42a0faea793f1cde6489d1011a7226e https://github.com/MLton/mlton/commit/f0bc5af9a42a0faea793f1cde6489d1011a7226e Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M lib/mlton/basic/vector.sig Log Message: ----------- Alphabetize `val first` in `signature VECTOR` Commit: 75b0db728161fcb3ef1be11cc21c8b10de87145e https://github.com/MLton/mlton/commit/75b0db728161fcb3ef1be11cc21c8b10de87145e Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Omit non-entry frames from `nextChunks` array Commit: 9053451c27a1d838b91daacadd6eb623e8987d02 https://github.com/MLton/mlton/commit/9053451c27a1d838b91daacadd6eb623e8987d02 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Experiment with using tail calls for interchunk transfers Commit: e8a242a2acaa1d1668c74343c2319d4e045a03db https://github.com/MLton/mlton/commit/e8a242a2acaa1d1668c74343c2319d4e045a03db Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Experiment with using tail calls for interchunk transfers (LLVM) Commit: 2bd7e47e7519e8bb9cc8d10783f30bb55260e737 https://github.com/MLton/mlton/commit/2bd7e47e7519e8bb9cc8d10783f30bb55260e737 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-main.h Log Message: ----------- Roll trampoline Commit: e0c88658c8396e4b1e68c831abff4b3defd090f3 https://github.com/MLton/mlton/commit/e0c88658c8396e4b1e68c831abff4b3defd090f3 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Don't emit global arrays of size 0 Commit: 558c064896e875f5d8cba0a49c6e399fbb1112a2 https://github.com/MLton/mlton/commit/558c064896e875f5d8cba0a49c6e399fbb1112a2 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-main.h Log Message: ----------- Tweaks to `c-main.h` Use `GC_state s = &gcState;`. Eliminate `uinptr_t (*nextChunk)(uintptr_t)` temporary. Commit: acdede14a4f6223a99922dc9c9ab314ade2a21be https://github.com/MLton/mlton/commit/acdede14a4f6223a99922dc9c9ab314ade2a21be Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Remove debug diagnostics for checking tail call optimization Commit: cf55f6940e1da0ee6237fd712e6f21f41f9f67c1 https://github.com/MLton/mlton/commit/cf55f6940e1da0ee6237fd712e6f21f41f9f67c1 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h M include/c-common.h M include/c-main.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Experiment passing stackTop and frontier as chunk arguments With `-chunk-tail-call true`, this avoids writing and reading of `stackTop` and `frontier` to/from the global `gcState`, because `stackTop` and `frontier` will typically be registers within a chunk and will typically be passed in registers according to the calling convention. With `-chunk-tail-call false`, the reading of `stackTop` and `frontier` from the global `gcState` occurs in the trampoline. Commit: 089d8cbd60d487a1e10e2e69d46f01293a25a543 https://github.com/MLton/mlton/commit/089d8cbd60d487a1e10e2e69d46f01293a25a543 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Fix warning with C codegen Commit: f459eafd1117c273ad38ebc08f03e690b0376de9 https://github.com/MLton/mlton/commit/f459eafd1117c273ad38ebc08f03e690b0376de9 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Refactor C codegen to support multiple chunks in one .c file Commit: 7e975677911761465a4d1f59daf7719105ecf737 https://github.com/MLton/mlton/commit/7e975677911761465a4d1f59daf7719105ecf737 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Batch multiple chunks into one .c file Commit: 64a32de114df07eddd9f91b625ab75bc25d09db4 https://github.com/MLton/mlton/commit/64a32de114df07eddd9f91b625ab75bc25d09db4 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/packed-representation.fun Log Message: ----------- Omit extracting the header for case of objptrs when no tests It is not necessary to extract the header when case analyzing a set of objptrs if there is only a default. This fixes a warning with the C codegen. Commit: e32b498b1ffc7fee4e5daf46e2a4f33197b7a415 https://github.com/MLton/mlton/commit/e32b498b1ffc7fee4e5daf46e2a4f33197b7a415 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.fun Log Message: ----------- Simpler pretty-print of Global operands in Machine Commit: a0bda4fef257b00f83700982f135a3562feb31e2 https://github.com/MLton/mlton/commit/a0bda4fef257b00f83700982f135a3562feb31e2 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.fun Log Message: ----------- Simplify Machine.Program.typeCheck.transferIsOk Commit: f2b08b9213fc1c9c1f1b23a611e5fecc838cf0b0 https://github.com/MLton/mlton/commit/f2b08b9213fc1c9c1f1b23a611e5fecc838cf0b0 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Omit copying unused args of Cont and Handler blocks from stack It is not necessary to copy unused arguments of Cont and Handler blocks from the stack. (Note that although the Cont and Handler arguments are unused, they cannot be removed; they are required to satisfy the calling convention.) This fixes warnings with the C codegen. Commit: 136f3573c7a9b93dce80a80dd435406cd0b96af0 https://github.com/MLton/mlton/commit/136f3573c7a9b93dce80a80dd435406cd0b96af0 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/allocate-registers.fun M mlton/backend/backend.fun Log Message: ----------- Omit allocating registers for unused args of Cont, CReturn, and Handler blocks It is not necessary to allocate registers for unused args of Cont, CReturn, and Handler blocks. This fixes unused variable warnings with the C codegen. Commit: 5cbac19c0670ae2f0edb71a1817dc0c5f5bd6712 https://github.com/MLton/mlton/commit/5cbac19c0670ae2f0edb71a1817dc0c5f5bd6712 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/packed-representation.fun Log Message: ----------- Omit masking by tagBits for case of small object when no tests It is not necessary to mask by tagBits when case analyzing a set of small objects if none of the cases correspond to a tagged representation. This fixes a warning with the C codegen. Commit: cb0119dab724d106c86ad024815c85e98cf9e115 https://github.com/MLton/mlton/commit/cb0119dab724d106c86ad024815c85e98cf9e115 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/rssa.fun M mlton/backend/rssa.sig Log Message: ----------- Introduce RSSAShuffle pass, disabled by default A new RSSAShuffle pass can be run after simplifying the RSSA IR program. This pass simply shuffles the list of functions within the program and shuffles the vector of blocks within a function. The motivation of RSSAShuffle is that `-chunkify coalesce<n>` has a (small) dependency on the order of functions and blocks. Commit: 668aba5ce9b0c29bd8dac5eb516f4b89a291f643 https://github.com/MLton/mlton/commit/668aba5ce9b0c29bd8dac5eb516f4b89a291f643 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/control/control-flags.sml Log Message: ----------- Raise `-chunk-batch <N>` default Commit: a52f029c526806f2231cb86830bacbb8e4990cae https://github.com/MLton/mlton/commit/a52f029c526806f2231cb86830bacbb8e4990cae Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/equivalence-graph.fun Log Message: ----------- Don't combine unrelated classes in `EquivalenceGraph.coarsen` When used by `Chunkify.coalesce`, combining unrelated classes has the effect of putting blocks that never transfer to one another into the same chunk. While this may have been helpful for compile time, due to reducing the number of .c files generated, with `-chunk-batch <n>`, small chunks will be placed in the same .c file. Commit: d1fd47151ba0a5cbeb0ab61d9436ad346ad12198 https://github.com/MLton/mlton/commit/d1fd47151ba0a5cbeb0ab61d9436ad346ad12198 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Remove printf-debugging from LLVM codegen output Commit: fe8b9a5d8cb78945c1a129c3ebcc627b300c69c7 https://github.com/MLton/mlton/commit/fe8b9a5d8cb78945c1a129c3ebcc627b300c69c7 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/machine.fun M mlton/backend/machine.sig Log Message: ----------- Add Machine.Chunk.chunkLabel function Commit: f79601251015836198b010150e3fe846924f7865 https://github.com/MLton/mlton/commit/f79601251015836198b010150e3fe846924f7865 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Batch multiple chunks into one .ll file Commit: a38a90ad9c63d8be8037115f933b97792de530af https://github.com/MLton/mlton/commit/a38a90ad9c63d8be8037115f933b97792de530af Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Reset LLVM register numbers for each chunk function Commit: 74d270ee6dd9473fde233ffaf8aaae5d6cc753ae https://github.com/MLton/mlton/commit/74d270ee6dd9473fde233ffaf8aaae5d6cc753ae Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Replace ambiguous identifier `label` with `#label main` Commit: acc9725ac3ec6413aab489f1712e1620fa62dcbf https://github.com/MLton/mlton/commit/acc9725ac3ec6413aab489f1712e1620fa62dcbf Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.sig Log Message: ----------- Export small subset of C pretty-printing functions Commit: 57d0a5ad3d1c8ddb97c3a2ebe04d2077edfd4bf7 https://github.com/MLton/mlton/commit/57d0a5ad3d1c8ddb97c3a2ebe04d2077edfd4bf7 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Refactor some LLVM codegen code to match C codegen Commit: cf0b78f9a494b316d87bd2ebb37f9888ae233959 https://github.com/MLton/mlton/commit/cf0b78f9a494b316d87bd2ebb37f9888ae233959 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/rep-type.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Fix type of return label in LLVM codegen Commit: 5e5dbb61b7b71688adc6a7c7f165701956603804 https://github.com/MLton/mlton/commit/5e5dbb61b7b71688adc6a7c7f165701956603804 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/chunkify.fun M mlton/backend/chunkify.sig M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Light refactoring of chunkify options Commit: 22517c91339dd8783c26854b91c42a8b6fe48d40 https://github.com/MLton/mlton/commit/22517c91339dd8783c26854b91c42a8b6fe48d40 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M bin/mlton-script M runtime/Makefile Log Message: ----------- Drop `-fomit-frame-pointer`, because implied by `-O1` Commit: 49e04a852a1a7e9ba6ad748ffcaadb882430f196 https://github.com/MLton/mlton/commit/49e04a852a1a7e9ba6ad748ffcaadb882430f196 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-16 (Thu, 16 May 2019) Changed paths: M bin/mlton-script M runtime/Makefile Log Message: ----------- Drop C compiler options for x86 The corresponding options for amd64 don't have a significant effect on performance. Commit: a1fc315f843642a3d57263d89e68eb74006c31e3 https://github.com/MLton/mlton/commit/a1fc315f843642a3d57263d89e68eb74006c31e3 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-16 (Thu, 16 May 2019) Changed paths: M runtime/Makefile Log Message: ----------- Simplify `WARNXCFLAGS` in `runtime/Makefile` Commit: 6fdeccc8ade1572ec4fc41e2ae974a0cfabf1a53 https://github.com/MLton/mlton/commit/6fdeccc8ade1572ec4fc41e2ae974a0cfabf1a53 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-16 (Thu, 16 May 2019) Changed paths: M runtime/Makefile Log Message: ----------- Assume C compiler supports `-fvisibility=hidden` in `runtime/Makefile` Commit: 993867e2fc08a240a51727a6180c276a0a6aef64 https://github.com/MLton/mlton/commit/993867e2fc08a240a51727a6180c276a0a6aef64 Author: Matthew Fluet <mat...@gm...> Date: 2019-05-16 (Thu, 16 May 2019) Changed paths: M bin/mlton-script M mlton/control/control-flags.sml Log Message: ----------- Make `-chunk-tail-call` default to `true` Commit: 5e8584da300bceb29a5ac13b12ef7b546466794e https://github.com/MLton/mlton/commit/5e8584da300bceb29a5ac13b12ef7b546466794e Author: Matthew Fluet <mat...@gm...> Date: 2019-05-16 (Thu, 16 May 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Simplify C codegen translation of `Switch` Commit: 8ad343af1425de5d1d68ce36098c529f437add4b https://github.com/MLton/mlton/commit/8ad343... [truncated message content] |
From: Matthew F. <no...@gi...> - 2019-05-15 19:02:29
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 48e3c1cdb1b541c224394aa416ee72a8211accb1 https://github.com/MLton/mlton/commit/48e3c1cdb1b541c224394aa416ee72a8211accb1 Author: Jason Carr <jca...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Fix the rare case of the start block being replaced by rssaShrink Commit: 05004a0376242f09ca5fadf4b070910ca96ca4da https://github.com/MLton/mlton/commit/05004a0376242f09ca5fadf4b070910ca96ca4da Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-15 (Wed, 15 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Merge pull request #303 from jasoncarr0/rssa-shrink-fix Fix the rare case of the `start` block being replaced; see #298. Compare: https://github.com/MLton/mlton/compare/953fd02745eb...05004a037624 |
From: Matthew F. <no...@gi...> - 2019-05-13 20:42:12
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 9f89135b345fc95801e53d8aef765669a392409a https://github.com/MLton/mlton/commit/9f89135b345fc95801e53d8aef765669a392409a Author: Jason Carr <jca...@gm...> Date: 2019-05-13 (Mon, 13 May 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/switch.fun M mlton/backend/switch.sig Log Message: ----------- Add {Switch,Transfer}.replaceLabels Commit: d16a8e6afc8b044cea8d500f7b6c340dd316f4dc https://github.com/MLton/mlton/commit/d16a8e6afc8b044cea8d500f7b6c340dd316f4dc Author: Jason Carr <jca...@gm...> Date: 2019-05-13 (Mon, 13 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Skip dead blocks in Rssa.shrink Commit: e17777b98d7ab7ed706a933588a0f935be9c7891 https://github.com/MLton/mlton/commit/e17777b98d7ab7ed706a933588a0f935be9c7891 Author: Jason Carr <jca...@gm...> Date: 2019-05-13 (Mon, 13 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Replace blocks which do nothing but immediately pass their arguments to another block Commit: b52b651481ea669cd0d7a6ae3d908da8dac597f6 https://github.com/MLton/mlton/commit/b52b651481ea669cd0d7a6ae3d908da8dac597f6 Author: Jason Carr <jca...@gm...> Date: 2019-05-13 (Mon, 13 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Also delete blocks which have been replaced Commit: 4e0cd75566c178a285af469084e1017ee08589f9 https://github.com/MLton/mlton/commit/4e0cd75566c178a285af469084e1017ee08589f9 Author: Jason Carr <jca...@gm...> Date: 2019-05-13 (Mon, 13 May 2019) Changed paths: M mlton/backend/rssa.fun Log Message: ----------- Fix rssa shrink replacements to chain as necessary Commit: 953fd02745eb41472f71e1e44fb0991b3e2525e7 https://github.com/MLton/mlton/commit/953fd02745eb41472f71e1e44fb0991b3e2525e7 Author: Matthew Fluet <Mat...@gm...> Date: 2019-05-13 (Mon, 13 May 2019) Changed paths: M mlton/backend/rssa.fun M mlton/backend/rssa.sig M mlton/backend/switch.fun M mlton/backend/switch.sig Log Message: ----------- Merge pull request #298 from jasoncarr0/improved-rssa-shrink Slightly improve RSSA shrink All blocks with 0 occurences are deleted. All blocks which do nothing but pass their arguments to another block are replaced by jumping to the target block. The main motivation is to improve the readability of RSSA IR programs. Perhaps surprisingly, there are some non-trivial improvements in run time and code size: MLton0 -- ~/builds/master/bin/mlton MLton1 -- ~/builds/shrink/bin/mlton MLton2 -- ~/builds/master/bin/mlton -codegen c MLton3 -- ~/builds/shrink/bin/mlton -codegen c run time ratio benchmark MLton0 MLton1 MLton2 MLton3 barnes-hut 1.00 1.01 1.03 1.02 boyer 1.00 0.63 1.01 0.62 checksum 1.00 1.00 0.96 0.97 count-graphs 1.00 0.96 0.77 0.82 DLXSimulator 1.00 1.01 1.02 1.01 even-odd 1.00 1.00 1.22 1.27 fft 1.00 0.98 0.93 0.88 fib 1.00 1.23 1.45 1.42 flat-array 1.00 1.00 2.27 2.29 hamlet 1.00 0.98 2.43 2.30 imp-for 1.00 0.98 0.93 0.72 knuth-bendix 1.00 1.00 1.29 1.20 lexgen 1.00 0.99 0.92 0.87 life 1.00 1.09 1.05 1.01 logic 1.00 0.98 1.09 1.08 mandelbrot 1.00 1.00 0.37 0.37 matrix-multiply 1.00 1.00 0.56 0.72 md5 1.00 0.99 1.27 1.21 merge 1.00 1.00 1.00 0.99 mlyacc 1.00 0.98 1.13 1.10 model-elimination 1.00 1.03 1.56 1.46 mpuz 1.00 1.01 0.83 0.84 nucleic 1.00 0.94 0.87 0.86 output1 1.00 1.00 1.12 1.12 peek 1.00 0.98 1.05 1.05 psdes-random 1.00 1.19 0.74 0.75 ratio-regions 1.00 1.00 1.02 1.02 ray 1.00 1.00 0.94 0.93 raytrace 1.00 1.06 1.02 1.03 simple 1.00 1.02 1.17 1.16 smith-normal-form 1.00 1.00 1.00 1.01 string-concat 1.00 0.29 0.98 0.29 tailfib 1.00 0.97 0.59 0.54 tak 1.00 1.05 1.15 1.23 tensor 1.00 1.00 0.61 0.61 tsp 1.00 1.00 0.69 0.69 tyan 1.00 1.00 1.13 1.12 vector32-concat 1.00 1.00 1.03 0.99 vector64-concat 1.00 1.00 1.00 1.00 vector-rev 1.00 0.91 0.98 1.03 vliw 1.00 1.00 1.12 1.03 wc-input1 1.00 1.00 0.99 0.99 wc-scanStream 1.00 1.00 1.16 1.16 zebra 1.00 0.84 0.99 0.81 zern 1.00 0.98 0.96 0.98 size benchmark MLton0 MLton1 MLton2 MLton3 barnes-hut 175,631 172,447 165,480 163,176 boyer 242,945 241,793 230,561 228,545 checksum 117,281 116,321 116,737 115,313 count-graphs 141,921 138,881 139,009 134,225 DLXSimulator 208,492 208,012 203,132 202,388 even-odd 117,105 116,497 116,737 115,553 fft 141,995 136,907 139,670 133,462 fib 117,025 116,401 116,609 115,489 flat-array 116,753 116,161 116,289 115,233 hamlet 1,365,980 1,360,508 1,401,204 1,387,388 imp-for 116,849 116,225 116,177 115,137 knuth-bendix 185,468 183,180 181,556 179,556 lexgen 289,979 286,475 297,571 288,923 life 140,241 137,921 137,409 133,585 logic 196,993 195,985 190,425 189,209 mandelbrot 116,897 116,289 120,001 118,977 matrix-multiply 119,153 117,137 121,521 119,553 md5 144,396 142,876 141,340 138,828 merge 118,529 118,065 117,857 116,705 mlyacc 639,563 634,523 640,187 640,027 model-elimination 792,622 780,894 810,750 803,206 mpuz 122,961 121,841 121,953 120,193 nucleic 296,857 296,089 265,818 265,050 output1 151,360 151,104 148,192 146,192 peek 149,724 148,860 146,492 143,996 psdes-random 121,121 118,737 120,417 117,345 ratio-regions 143,681 139,953 143,289 138,521 ray 248,626 248,306 241,835 239,099 raytrace 366,340 365,492 342,058 338,874 simple 346,061 345,821 361,279 357,815 smith-normal-form 279,093 278,133 249,877 248,317 string-concat 118,609 117,393 118,177 116,433 tailfib 116,881 116,049 116,465 115,073 tak 117,025 116,433 116,673 115,537 tensor 177,524 177,172 171,404 170,076 tsp 157,540 156,916 153,595 152,059 tyan 222,972 222,204 218,700 218,316 vector32-concat 117,809 117,105 117,297 116,049 vector64-concat 117,809 117,105 117,361 116,145 vector-rev 117,681 116,769 117,265 115,745 vliw 504,445 500,045 528,589 530,277 wc-input1 177,667 177,171 174,843 173,563 wc-scanStream 186,723 185,891 181,643 183,083 zebra 224,684 183,580 219,092 176,460 zern 152,561 149,377 146,567 143,991 compile time benchmark MLton0 MLton1 MLton2 MLton3 barnes-hut 2.94 2.91 3.56 3.51 boyer 3.35 3.31 5.83 5.49 checksum 2.47 2.42 2.63 2.44 count-graphs 2.75 2.58 3.02 2.94 DLXSimulator 3.28 3.16 4.18 4.11 even-odd 2.45 2.44 2.63 2.59 fft 2.57 2.34 2.85 2.78 fib 2.46 2.44 2.41 2.63 flat-array 2.46 2.22 2.60 2.57 hamlet 13.83 12.82 22.51 22.59 imp-for 2.47 2.48 2.61 2.60 knuth-bendix 2.90 2.88 3.64 3.68 lexgen 3.66 3.72 4.84 4.93 life 2.61 2.59 2.96 2.84 logic 2.98 2.96 3.71 3.63 mandelbrot 2.46 2.46 2.61 2.62 matrix-multiply 2.54 2.46 2.64 2.66 md5 2.67 2.67 2.83 2.98 merge 2.45 2.43 2.62 2.54 mlyacc 7.12 7.34 10.51 10.13 model-elimination 7.77 7.08 12.62 12.09 mpuz 2.53 2.51 2.65 2.67 nucleic 3.98 4.03 6.16 6.14 output1 2.68 2.69 3.08 3.04 peek 2.68 2.47 3.10 3.06 psdes-random 2.50 2.48 2.68 2.59 ratio-regions 2.81 2.78 3.28 3.23 ray 3.39 3.32 4.30 4.39 raytrace 4.53 4.46 6.32 6.32 simple 3.77 3.73 5.34 5.20 smith-normal-form 3.66 3.54 6.94 6.88 string-concat 2.46 2.47 2.58 2.62 tailfib 2.43 2.45 2.62 2.58 tak 2.44 2.46 2.59 2.58 tensor 3.05 3.03 3.68 3.61 tsp 2.73 2.74 3.15 3.16 tyan 3.34 3.31 4.14 4.39 vector32-concat 2.46 2.48 2.61 2.60 vector64-concat 2.46 2.46 2.63 2.62 vector-rev 2.47 2.26 2.57 2.63 vliw 5.51 5.80 8.47 8.31 wc-input1 2.85 2.84 3.50 3.29 wc-scanStream 3.05 2.91 3.65 3.60 zebra 3.26 3.09 4.27 3.85 zern 2.59 2.60 2.87 2.87 run time benchmark MLton0 MLton1 MLton2 MLton3 barnes-hut 28.68 29.09 29.42 29.25 boyer 56.46 35.29 57.04 35.21 checksum 25.33 25.23 24.44 24.49 count-graphs 40.56 38.92 31.26 33.20 DLXSimulator 32.50 32.75 32.99 32.86 even-odd 39.10 39.08 47.64 49.84 fft 31.79 31.26 29.68 27.88 fib 14.49 17.79 21.06 20.58 flat-array 23.79 23.69 54.09 54.45 hamlet 40.99 40.34 99.47 94.26 imp-for 25.39 24.79 23.58 18.16 knuth-bendix 34.12 34.14 44.10 41.05 lexgen 33.62 33.28 31.04 29.18 life 38.60 42.08 40.47 38.97 logic 34.81 33.94 37.78 37.56 mandelbrot 35.81 35.81 13.19 13.17 matrix-multiply 30.14 30.10 16.85 21.62 md5 28.24 28.08 35.84 34.10 merge 32.41 32.57 32.35 32.16 mlyacc 32.71 32.15 37.02 35.92 model-elimination 38.46 39.57 60.12 56.21 mpuz 29.82 30.04 24.77 25.05 nucleic 33.95 31.82 29.39 29.15 output1 30.12 30.18 33.63 33.80 peek 35.00 34.13 36.73 36.65 psdes-random 33.97 40.54 25.08 25.60 ratio-regions 48.58 48.54 49.50 49.53 ray 37.40 37.30 35.12 34.68 raytrace 32.83 34.78 33.47 33.97 simple 29.67 30.33 34.65 34.37 smith-normal-form 39.66 39.47 39.79 39.93 string-concat 95.38 27.25 93.73 27.27 tailfib 38.47 37.19 22.65 20.63 tak 29.35 30.95 33.78 36.12 tensor 39.26 39.24 23.85 23.85 tsp 38.00 38.11 26.16 26.27 tyan 30.52 30.44 34.39 34.19 vector32-concat 84.32 84.12 87.04 83.56 vector64-concat 93.84 94.06 93.65 93.57 vector-rev 27.48 24.93 26.95 28.40 vliw 27.74 27.66 31.03 28.53 wc-input1 43.84 43.97 43.41 43.43 wc-scanStream 21.94 21.89 25.47 25.43 zebra 30.21 25.39 30.06 24.35 zern 32.04 31.28 30.91 31.28 Compare: https://github.com/MLton/mlton/compare/fcd55d051231...953fd02745eb |