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) |
2
(3) |
3
|
4
(2) |
5
(3) |
6
(1) |
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
(1) |
23
|
24
(2) |
25
|
26
|
27
(1) |
28
|
29
|
30
|
From: Matthew F. <no...@gi...> - 2019-11-27 12:00:09
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: d8a211ed7836e32e75c01f7278fa4badd07b1391 https://github.com/MLton/mlton/commit/d8a211ed7836e32e75c01f7278fa4badd07b1391 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-25 (Mon, 25 Nov 2019) Changed paths: M basis-library/primitive/basis-ffi.sml M basis-library/primitive/check-real.sml M basis-library/primitive/prim-real.sml M runtime/basis-ffi.h R runtime/basis/Real/Real-consts.c M runtime/gen/basis-ffi.def M runtime/gen/basis-ffi.h M runtime/gen/basis-ffi.sml Log Message: ----------- Initialize `Real<N>.Math.{e,pi}` via constant (rather than symbol) Commit: eb882cdc44bc41399c19b8ffcec7252d2fac0981 https://github.com/MLton/mlton/commit/eb882cdc44bc41399c19b8ffcec7252d2fac0981 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-25 (Mon, 25 Nov 2019) Changed paths: M include/amd64-main.h M include/c-main.h M include/x86-main.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Statically initialize `globalReal<N>` array Commit: bdba7a6b3a27eaec1c7f66e48a14ac4c5fd0a218 https://github.com/MLton/mlton/commit/bdba7a6b3a27eaec1c7f66e48a14ac4c5fd0a218 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-25 (Mon, 25 Nov 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Tweak `CCodegen.RealX.toC` Commit: 03a95e235f3647203c1c28f610a07defdfd45706 https://github.com/MLton/mlton/commit/03a95e235f3647203c1c28f610a07defdfd45706 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-25 (Mon, 25 Nov 2019) Changed paths: M mlton/atoms/word-size.fun M mlton/atoms/word-size.sig Log Message: ----------- Add `WordSize.{fromPrim,primOpt}` Commit: 2b6f492ef4d1bf5191538269deef8f460e0b53e2 https://github.com/MLton/mlton/commit/2b6f492ef4d1bf5191538269deef8f460e0b53e2 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-25 (Mon, 25 Nov 2019) Changed paths: M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/backend.fun M mlton/backend/objptr-tycon.fun M mlton/backend/objptr-tycon.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig Log Message: ----------- Change `ObjptrTycon.wordVector` arg from `Bits.t` to `WordSize.t` Commit: cd3b10a64b6e685195fcf12fabf370af8bfe3da9 https://github.com/MLton/mlton/commit/cd3b10a64b6e685195fcf12fabf370af8bfe3da9 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-25 (Mon, 25 Nov 2019) Changed paths: M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/objptr-tycon.fun M mlton/backend/objptr-tycon.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M runtime/gc/object.h Log Message: ----------- Add `ObjptrTycon.realVector: RealSize.t -> t` with reserved type indices Commit: 2e826cdf7a43852f12fa4b3e0d4a39d0741d0a52 https://github.com/MLton/mlton/commit/2e826cdf7a43852f12fa4b3e0d4a39d0741d0a52 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-26 (Tue, 26 Nov 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Fix `LLVMCodegen.LLVM.Value.real` for negs, infs, and nans Commit: 44c5b9e12c929ca65ea14bac23837d09cb5d7482 https://github.com/MLton/mlton/commit/44c5b9e12c929ca65ea14bac23837d09cb5d7482 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-27 (Wed, 27 Nov 2019) Changed paths: M basis-library/primitive/basis-ffi.sml M basis-library/primitive/check-real.sml M basis-library/primitive/prim-real.sml M include/amd64-main.h M include/c-main.h M include/x86-main.h M mlton/atoms/word-size.fun M mlton/atoms/word-size.sig M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/backend.fun M mlton/backend/objptr-tycon.fun M mlton/backend/objptr-tycon.sig M mlton/backend/packed-representation.fun M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M runtime/basis-ffi.h R runtime/basis/Real/Real-consts.c M runtime/gc/object.h M runtime/gen/basis-ffi.def M runtime/gen/basis-ffi.h M runtime/gen/basis-ffi.sml Log Message: ----------- Merge pull request #354 from MatthewFluet/real-consts Update handling of real constants * Initialize `Real<N>.Math.{e,pi}` via literal (rather than symbol) * Statically initialize `globalReal<N>` array and eliminate `real_init()` function * Add `ObjptrTycon.realVector: RealSize.t -> t` with reserved type indices The last was to support collecting and referencing the real constants as a static vector, but it isn't straightforward to do so in the `toMachine` pass and a dedicated RSSA pass seems overkill. Compare: https://github.com/MLton/mlton/compare/56fcc0ebdae3...44c5b9e12c92 |
From: Matthew F. <no...@gi...> - 2019-11-24 17:24:09
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 2416b2fb44536c5d70d813b6761c786921e9f98f https://github.com/MLton/mlton/commit/2416b2fb44536c5d70d813b6761c786921e9f98f Author: Matthew Fluet <mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Declare `_address` symbols using `Word8` rather than `void`. Quells a gcc warning (`taking address of expression of type ‘void’`). Commit: c92da2760e01c4df1d440131a62a05c7337cefda https://github.com/MLton/mlton/commit/c92da2760e01c4df1d440131a62a05c7337cefda Author: Matthew Fluet <mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Include semicolon after each field of static metadata Quells a gcc warning (`no semicolon at end of struct or union`). Commit: 481ccf74348c8a504e48ce77d96d2248337550a2 https://github.com/MLton/mlton/commit/481ccf74348c8a504e48ce77d96d2248337550a2 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Emit `magic` value as Word32 constant Quells a gcc warning (`large integer implicitly truncated to unsigned type`) when using SML/NJ 64-bit, which uses a 63-bit `word` type. Commit: 9778ee4e917cd5defedf55a886254c298a111b2a https://github.com/MLton/mlton/commit/9778ee4e917cd5defedf55a886254c298a111b2a Author: Matthew Fluet <mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Mark `FILE *f` parameter of `{save,load}Globals` unused Quells a gcc warning (`unused parameter ‘f’`). Commit: 85423c663a9b1ef16efdec7b158349c0c6ac5d53 https://github.com/MLton/mlton/commit/85423c663a9b1ef16efdec7b158349c0c6ac5d53 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/main/lookup-constant.fun Log Message: ----------- Use `int main(void)` prototype for `build-constants.c` Quells gcc warnings (`unused parameter ‘argc’` and `unused parameter ‘argv’`). Commit: 56fcc0ebdae3246e806199b2e3da242fa5ed4bd2 https://github.com/MLton/mlton/commit/56fcc0ebdae3246e806199b2e3da242fa5ed4bd2 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/main/lookup-constant.fun Log Message: ----------- Merge pull request #353 from MatthewFluet/c-codegen-warnings Quell a number of `gcc` warnings with generated code Compare: https://github.com/MLton/mlton/compare/486344705482...56fcc0ebdae3 |
From: Matthew F. <no...@gi...> - 2019-11-24 13:42:27
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 0c1c72fbd0be013d7c3e48e209a872ede4c407da https://github.com/MLton/mlton/commit/0c1c72fbd0be013d7c3e48e209a872ede4c407da Author: Matthew Fluet <mat...@gm...> Date: 2019-11-22 (Fri, 22 Nov 2019) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig M mlton/atoms/c-function.fun M mlton/atoms/c-function.sig A mlton/atoms/c-symbol-scope.fun A mlton/atoms/c-symbol-scope.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb Log Message: ----------- Extract `CFunction.SymbolScope` to `functor CSymbolScope` Commit: 2ff48d5f466e4186b8480da7f406513184beb3a4 https://github.com/MLton/mlton/commit/2ff48d5f466e4186b8480da7f406513184beb3a4 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-22 (Fri, 22 Nov 2019) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig M mlton/atoms/c-symbol-scope.fun M mlton/atoms/c-symbol-scope.sig A mlton/atoms/c-symbol.fun A mlton/atoms/c-symbol.sig M mlton/atoms/prim.fun M mlton/atoms/prim.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/codegen/amd64-codegen/amd64-mlton.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/elaborate/elaborate-core.fun Log Message: ----------- Add `structure Atoms.CSymbol : C_SYMBOL` Commit: cc9f5dd02f01fa4c76fee6212857eef03dd5e8bf https://github.com/MLton/mlton/commit/cc9f5dd02f01fa4c76fee6212857eef03dd5e8bf Author: Matthew Fluet <mat...@gm...> Date: 2019-11-22 (Fri, 22 Nov 2019) Changed paths: M mlton/atoms/prim.fun M mlton/atoms/prim.sig M mlton/backend/rep-type.fun M mlton/backend/ssa2-to-rssa.fun M mlton/codegen/amd64-codegen/amd64-mlton.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/elaborate/elaborate-core.fun M mlton/ssa/deep-flatten.fun M mlton/ssa/ref-flatten.fun M mlton/ssa/split-types.fun M mlton/ssa/useless.fun Log Message: ----------- Rename `Prim.{FFI,FFI_Symbol}` to `Prim.{CFunction,CSymbol}` Commit: ccea1326a12e967127e34fb71ee446acfec1a944 https://github.com/MLton/mlton/commit/ccea1326a12e967127e34fb71ee446acfec1a944 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-23 (Sat, 23 Nov 2019) Changed paths: M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/limit-check.fun M mlton/backend/packed-representation.fun M mlton/backend/ssa2-to-rssa.fun M mlton/backend/static.fun M mlton/backend/static.sig M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Generalize `Static.Data.Elem.{Real,Word}` to `Const of Const.t` Currently, this allows `Const.Null` as an additional `Static.Data.Elem.t` value. It will also allow `Static.Data.Elem.t` to support a forthcoming `Const.CSymbol` (migrating `CSymbol` from `Prim` to `Const`). Commit: 19f78b78fa620a15d9257055f182b8366cd7a71e https://github.com/MLton/mlton/commit/19f78b78fa620a15d9257055f182b8366cd7a71e Author: Matthew Fluet <mat...@gm...> Date: 2019-11-23 (Sat, 23 Nov 2019) Changed paths: M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M mlton/backend/rssa-tree.fun Log Message: ----------- Add `RepType.ofRealX` Commit: bfa3ff888551fcf9fa9716864077dcde2c2be40a https://github.com/MLton/mlton/commit/bfa3ff888551fcf9fa9716864077dcde2c2be40a Author: Matthew Fluet <mat...@gm...> Date: 2019-11-23 (Sat, 23 Nov 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: ----------- Generalize `Machine.Operand.{Null,Real,Word}` to `Const of Const.t` Commit: 8889991dd0280e2aa42c36cea73bb5669ccc0ca0 https://github.com/MLton/mlton/commit/8889991dd0280e2aa42c36cea73bb5669ccc0ca0 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-23 (Sat, 23 Nov 2019) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig M mlton/atoms/const.fun M mlton/atoms/const.sig M mlton/atoms/hash-type.fun M mlton/atoms/prim.fun M mlton/atoms/prim.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/machine.fun M mlton/backend/rep-type.fun M mlton/backend/rssa-tree.fun M mlton/codegen/amd64-codegen/amd64-mlton.fun 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-mlton.fun M mlton/codegen/x86-codegen/x86-translate.fun M mlton/elaborate/elaborate-core.fun M mlton/match-compile/match-compile.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun Log Message: ----------- Remove `Prim.CSymbol` and add `Const.CSymbol` Changing `CSymbol` from a primitive to a constant allows it to be copy-propagated by RSSA and avoids an unnecessary indirection through `globalCPointer`. Commit: 4863447054825a784f9167f54cd4e0817e472859 https://github.com/MLton/mlton/commit/4863447054825a784f9167f54cd4e0817e472859 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-24 (Sun, 24 Nov 2019) Changed paths: M mlton/atoms/atoms.fun M mlton/atoms/atoms.sig M mlton/atoms/c-function.fun M mlton/atoms/c-function.sig A mlton/atoms/c-symbol-scope.fun A mlton/atoms/c-symbol-scope.sig A mlton/atoms/c-symbol.fun A mlton/atoms/c-symbol.sig M mlton/atoms/const.fun M mlton/atoms/const.sig M mlton/atoms/hash-type.fun M mlton/atoms/prim.fun M mlton/atoms/prim.sig M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/backend.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/rep-type.sig M mlton/backend/rssa-tree.fun M mlton/backend/ssa2-to-rssa.fun M mlton/backend/static.fun M mlton/backend/static.sig M mlton/codegen/amd64-codegen/amd64-mlton.fun 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-mlton.fun M mlton/codegen/x86-codegen/x86-translate.fun M mlton/elaborate/elaborate-core.fun M mlton/match-compile/match-compile.fun M mlton/ssa/deep-flatten.fun M mlton/ssa/ref-flatten.fun M mlton/ssa/split-types.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun M mlton/ssa/useless.fun Log Message: ----------- Merge pull request #352 from MatthewFluet/symbol-const Refactor representation of `_address` from primitive to constant Changing the internal representation of an `_address` from a primitive (`Prim.FFI_Symbol`) to a constant (`Const.CSymbol`) allows it to be copy-propagated by RSSA and avoids an unnecessary indirection through `globalCPointer`. Also: * Rename `Prim.FFI` to `Prim.CFunction`. * Generalize `Static.Data.Elem.{Real,Word}` to `Const of Const.t` (which allow `Const.Null` and `Const.CSymbol` to be data elements of statics) * Generalize `Machine.Operand.{Null,Real,Word}` to `Const of Const.t` Compare: https://github.com/MLton/mlton/compare/7ab49d024ab3...486344705482 |
From: Matthew F. <no...@gi...> - 2019-11-22 14:24:00
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 67e2743ddedada1853b9fda9ac7005bb421c64b8 https://github.com/MLton/mlton/commit/67e2743ddedada1853b9fda9ac7005bb421c64b8 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-22 (Sat, 22 Jun 2019) Changed paths: M include/c-chunk.h M include/c-common.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Add and use `ChunkFn_t` and `ChunkFnPtr_t` typedefs Commit: 8eca49d47e0cd4caa60c3d1c3c777e7a129b33b9 https://github.com/MLton/mlton/commit/8eca49d47e0cd4caa60c3d1c3c777e7a129b33b9 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Simplify passing of `Control.chunkTailCall` to `c-chunk.h` Commit: 654c557d6b7981b9191bf10dd9e39071e64574a7 https://github.com/MLton/mlton/commit/654c557d6b7981b9191bf10dd9e39071e64574a7 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M mlton/backend/rssa-tree.fun M mlton/backend/rssa-tree.sig Log Message: ----------- Add `Machine.Program.rflow` for `{returns,raises}To` control flow Commit: 1b3b7b88d10fc1e34b6128244a1c378db91a6129 https://github.com/MLton/mlton/commit/1b3b7b88d10fc1e34b6128244a1c378db91a6129 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M mlton/backend/chunkify.fun Log Message: ----------- Use `Machine.Program.rflow` in `functor Chunkify` Commit: cf8e487a298c2521e5105278b1b7f53bcedc3e86 https://github.com/MLton/mlton/commit/cf8e487a298c2521e5105278b1b7f53bcedc3e86 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 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: ----------- Add `{raises,returns}To` information to Machine IL `Raise/Return` transfers Commit: 793afa222c20558602aaf1155947548ab9866124 https://github.com/MLton/mlton/commit/793afa222c20558602aaf1155947548ab9866124 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Avoid `doSwitchNextBlock` when `Raise/Return` must be inter-chunk Commit: b9bdff12828e24bb12b4bb5537d9ea92eebeaba8 https://github.com/MLton/mlton/commit/b9bdff12828e24bb12b4bb5537d9ea92eebeaba8 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Simplify `c-chunk.h` macros Commit: 423b9ada59e5dae75a538bb71af97c6f05f34add https://github.com/MLton/mlton/commit/423b9ada59e5dae75a538bb71af97c6f05f34add Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Use more descriptive parameters in `FarCall` macro in `c-chunk.h` Commit: 677145eceb648b70328662a0936534e60afa03f7 https://github.com/MLton/mlton/commit/677145eceb648b70328662a0936534e60afa03f7 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Move `goto doSwitchBlock;` from `ChunkSwitch` to `Chunk` macro in `c-chunk.h` Commit: df561505e6271c350841583b210ca23f53c133b6 https://github.com/MLton/mlton/commit/df561505e6271c350841583b210ca23f53c133b6 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Add and use `LeaveChunk` macro in `c-chunk.h` Commit: eb9c62abe1ae00c92f96abdde33d43903131cb90 https://github.com/MLton/mlton/commit/eb9c62abe1ae00c92f96abdde33d43903131cb90 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Use `LeaveChunk` macro in `Return` in `c-chunk.h` Rather than using `goto doLeaveChunk;`. Commit: bf9fe5989876678c3ba6095cad1f4142159a9b42 https://github.com/MLton/mlton/commit/bf9fe5989876678c3ba6095cad1f4142159a9b42 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Make `ChunkSwitch` exhaustive On `Return`, use mustReturnToSelf || (mayReturnToSelf && (nextChunks[nextBlock] == selfChunk)) to guard `goto doSwitchNextBlock`; this guarantees that the `ChunkSwitch` will only be entered with a block found in the chunk. Commit: 7c10c7071cd44ddd36b7cda831e447207799192e https://github.com/MLton/mlton/commit/7c10c7071cd44ddd36b7cda831e447207799192e Author: Matthew Fluet <mat...@gm...> Date: 2019-06-25 (Tue, 25 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Use direct call in `Return` when exactly one non-self target chunk Commit: e232b8ac6a93338cca011c149810cec253b87c34 https://github.com/MLton/mlton/commit/e232b8ac6a93338cca011c149810cec253b87c34 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-26 (Wed, 26 Jun 2019) Changed paths: M include/c-chunk.h M include/c-common.h Log Message: ----------- Remove `DefineChunk` macro from `c-common.h` Commit: b45e5ef333434ed5c2f69c6d3a1e7b736a754003 https://github.com/MLton/mlton/commit/b45e5ef333434ed5c2f69c6d3a1e7b736a754003 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-26 (Wed, 26 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Add and use `SwitchNextBlock` macro in `c-chunk.h` Commit: dcb28738bbbbaaeee23a2bdf18f0f46bd0579628 https://github.com/MLton/mlton/commit/dcb28738bbbbaaeee23a2bdf18f0f46bd0579628 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-26 (Wed, 26 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Add `ChunkSwitchCase` to `c-chunk.h` Commit: 8e0dd2dc08c5b658a85040118d2ef92eeab5896c https://github.com/MLton/mlton/commit/8e0dd2dc08c5b658a85040118d2ef92eeab5896c Author: Matthew Fluet <mat...@gm...> Date: 2019-06-26 (Wed, 26 Jun 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add `-chunk-jump-table {false|true}` compile-time option Commit: b3a3ab0064220f3935ba40a8da5491565826a78d https://github.com/MLton/mlton/commit/b3a3ab0064220f3935ba40a8da5491565826a78d Author: Matthew Fluet <mat...@gm...> Date: 2019-06-26 (Wed, 26 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Reorganize `c-chunk.h` Commit: f29a65fcd793f0c23742d7105cd83c11a88b5a2b https://github.com/MLton/mlton/commit/f29a65fcd793f0c23742d7105cd83c11a88b5a2b Author: Matthew Fluet <mat...@gm...> Date: 2019-06-27 (Thu, 27 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Silence C compiler warnings about unused parameters/variables Some chunk functions may not use `gcState`, `stackTop`, `frontier`, or `selfChunk`. Commit: 5b6439b73b9eb0ae35a5d33fe80154f516729d36 https://github.com/MLton/mlton/commit/5b6439b73b9eb0ae35a5d33fe80154f516729d36 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-27 (Thu, 27 Jun 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Experiment with forcing jump table for C codegen Using GCC's label address and computed goto features (https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values), one can force the generation of a jump table for the chunk switch. Although GCC and clang will typically implement dense `switch` statements into a jump table, consider the following: switch (nextBlock) { case 5: goto L_5; case 6: goto L_6; ... case 29: goto L_29; default: __builtin_unreachable(); } GCC-7 (and earlier) and clang appear to implement this as: int t = nextBlock - 5 if (t > 24) goto L_29; else goto *jumpTable[i]; That is, it still performs a range comparison. With an explicit jump table, GCC and clang will implement this as: goto *jumpTable[nextBlock - 5]; (where the -5 can be incorporated into the address computation). Unfortunately, the performance impact seems negligible. Commit: 62f07c513cd378c2bffb0fa658c317b93cb2eaa7 https://github.com/MLton/mlton/commit/62f07c513cd378c2bffb0fa658c317b93cb2eaa7 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-27 (Thu, 27 Jun 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Silence C compiler warning about addresses always evaluating to `true` Commit: b6456a2262d5bf26fbae5d7d5308d0feec0699f2 https://github.com/MLton/mlton/commit/b6456a2262d5bf26fbae5d7d5308d0feec0699f2 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-27 (Thu, 27 Jun 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Add and use `%ChunkFn{,Ptr{,Arr}}_t` typedefs in LLVM codegen Commit: 1ea83b587a1d2d986beed61a9c7224081bcbc715 https://github.com/MLton/mlton/commit/1ea83b587a1d2d986beed61a9c7224081bcbc715 Author: Matthew Fluet <mat...@gm...> Date: 2019-06-28 (Fri, 28 Jun 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Share code for `Raise` and `Return` in C codegen Commit: edbf6c9b079dc8903b6670f7d4393e1787632b47 https://github.com/MLton/mlton/commit/edbf6c9b079dc8903b6670f7d4393e1787632b47 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-01 (Mon, 01 Jul 2019) Changed paths: M include/c-common.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Eliminate `DeclareChunk` macro Commit: 25138bcb7573686d98700813cd383e4bf02ce512 https://github.com/MLton/mlton/commit/25138bcb7573686d98700813cd383e4bf02ce512 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-01 (Mon, 01 Jul 2019) Changed paths: M include/c-chunk.h M include/c-common.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Eliminate `ChunkName` and `Chunkp` macros Commit: 69d4444dda46fb6c7043072672d6ebe97f202553 https://github.com/MLton/mlton/commit/69d4444dda46fb6c7043072672d6ebe97f202553 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-12 (Fri, 12 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Update LLVM codegen to match C codegen * Make `ChunkSwitch` exhaustive * Use direct call in `Return` when exactly one non-self target chunk Commit: 25b1991c67fc5d30597a2d6021a22d3c11bace10 https://github.com/MLton/mlton/commit/25b1991c67fc5d30597a2d6021a22d3c11bace10 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-12 (Fri, 12 Jul 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig Log Message: ----------- Add and use `Machine.Operand.gcField` Commit: 869c4a2bd860b16cd33e62e36bcc88d0dfa7c411 https://github.com/MLton/mlton/commit/869c4a2bd860b16cd33e62e36bcc88d0dfa7c411 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-12 (Fri, 12 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Perform `StackTop = StackBottom + ExnStack` in C codegen Commit: 8212ae35721713e17d9477a409e6c6fdcee961a9 https://github.com/MLton/mlton/commit/8212ae35721713e17d9477a409e6c6fdcee961a9 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-12 (Fri, 12 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- "%Pointer" type defn is not used by LLVM codegen Commit: fb54dcfba8ed2ed5cf0ad43b7898810c98ead851 https://github.com/MLton/mlton/commit/fb54dcfba8ed2ed5cf0ad43b7898810c98ead851 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-12 (Fri, 12 Jul 2019) Changed paths: M mlton/backend/backend.fun Log Message: ----------- Eliminate unnecessary cast in translation of SetExnStackLocal Commit: 91feb4fe55a28019a12c213e3e13d37578eb953c https://github.com/MLton/mlton/commit/91feb4fe55a28019a12c213e3e13d37578eb953c Author: Matthew Fluet <mat...@gm...> Date: 2019-07-12 (Fri, 12 Jul 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/rep-type.fun M runtime/gc/gc_state.h M runtime/gc/thread.c M runtime/gc/thread.h Log Message: ----------- Change `exnStack` field from `size_t` to `ptrdiff_t` The `exnStack` field stores the difference between `stackTop` and `stackBottom`. Commit: 40de2c413782ca8aef5b23cbb73b8e9424227d29 https://github.com/MLton/mlton/commit/40de2c413782ca8aef5b23cbb73b8e9424227d29 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-13 (Sat, 13 Jul 2019) Changed paths: M mlton/atoms/word-x.fun M mlton/atoms/word-x.sig M mlton/backend/limit-check.fun M mlton/backend/machine.fun M mlton/backend/packed-representation.fun Log Message: ----------- Add and use `WordX.fromBytes` Commit: 867f66578e3a9e0672ffcda70fc8019012400f17 https://github.com/MLton/mlton/commit/867f66578e3a9e0672ffcda70fc8019012400f17 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-13 (Sat, 13 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Perform `StackTop += (bytes)` in C codegen Commit: edc684a51ef67c70d30a8f23ba3220a048e0a668 https://github.com/MLton/mlton/commit/edc684a51ef67c70d30a8f23ba3220a048e0a668 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-14 (Sun, 14 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Simplify LLVM codegen by translating via Machine IR Statements Commit: a03514280b4bb580b8fdd3451820fc6a93010b2f https://github.com/MLton/mlton/commit/a03514280b4bb580b8fdd3451820fc6a93010b2f Author: Matthew Fluet <mat...@gm...> Date: 2019-07-14 (Sun, 14 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Disable `mustReturnToOther` opt in LLVM codegen LLVM will erroneously optimize something like: define i64 @foo (i64 %x) { entry: %ret = musttail call i64 @bar(i64 %x) ret i64 %ret } define i64 @bar (i64 %x) { entry: call void @baz(i64 0) noreturn unreachable } declare void @baz (i64) noreturn to define i64 @foo (i64 %x) noreturn { entry: %ret = musttail call i64 @bar(i64 undef) unreachable } define i64 @bar (i64 %x) noreturn { entry: tail call void @baz(i64 0) noreturn unreachable } declare void @baz (i64) noreturn and then die with musttail call must precede a ret with an optional bitcast %ret = musttail call i64 @bar(i64 undef) in function foo This can occur with `Raise` transfers to the top-level handler that does not return. Commit: 4d5abde95cdcf6c538f8ef6b844d8c4f1cafa0a6 https://github.com/MLton/mlton/commit/4d5abde95cdcf6c538f8ef6b844d8c4f1cafa0a6 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-15 (Mon, 15 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add and use `-chunk-{{must,may}-rto-self,must-rto-other}-opt` flags Commit: 4b7c6490f6aee989f6b247ea04ac170217763539 https://github.com/MLton/mlton/commit/4b7c6490f6aee989f6b247ea04ac170217763539 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-16 (Tue, 16 Jul 2019) Changed paths: M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Change default for `-chunk-{must,may}-rto-self-opt` Commit: 4cd0111db3c02bcba41cb1040e92b4d31b9dfa78 https://github.com/MLton/mlton/commit/4cd0111db3c02bcba41cb1040e92b4d31b9dfa78 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-16 (Tue, 16 Jul 2019) Changed paths: M include/amd64-main.h M include/c-main.h M include/x86-main.h Log Message: ----------- Share and simplify code in `<cg>-main.h` Commit: 087a5b1f937333112192fac479521a174c0e32b5 https://github.com/MLton/mlton/commit/087a5b1f937333112192fac479521a174c0e32b5 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-16 (Tue, 16 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Experiment with forcing jump table for LLVM codegen See 5b6439b73. Commit: c019ac7efefe3b9b7036bf6d5ec08a46a57129f9 https://github.com/MLton/mlton/commit/c019ac7efefe3b9b7036bf6d5ec08a46a57129f9 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-16 (Tue, 16 Jul 2019) Changed paths: M mlton/backend/machine.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Use `ChunkLabel.toString` for chunk names Commit: 2e26ebd7f80bb5425c502c65b91cb05ebd19d170 https://github.com/MLton/mlton/commit/2e26ebd7f80bb5425c502c65b91cb05ebd19d170 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-16 (Tue, 16 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Experiment using LLVM 'cc10' (aka, 'ghccc') The 'cc10' (aka, 'ghccc') calling convention has no callee-save registers. For chunks that want to use many registers, this avoids the save and restore of callee-save registers on entry and exit of the chunk. A simple "shim" function coordinates between the 'ccc' calling convention and the 'cc10' calling convention for the dispatch from `c-main.h`; with `-chunk-tail-call true`, this is the only time that a shim function is called. Commit: 3330cbe759b81fddbb5f1b386f6fc70aa7db54ad https://github.com/MLton/mlton/commit/3330cbe759b81fddbb5f1b386f6fc70aa7db54ad Author: Matthew Fluet <mat...@gm...> Date: 2019-07-16 (Tue, 16 Jul 2019) Changed paths: M mlton/backend/chunkify.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Experiment with a new chunkify strategy Commit: 8c5d09423f64282b3bd99f786ea8f3b07b7cd7a0 https://github.com/MLton/mlton/commit/8c5d09423f64282b3bd99f786ea8f3b07b7cd7a0 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 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: ----------- Don't mark any functions as `noreturn` The only `noreturn` functions are `MLton_halt` and `MLton_bug`, which are only called at program termination, so there is no performance advantage to marking these functions as `noreturn`. As noted in a03514280, LLVM will erroneously optimize a `musttail call` to a `noreturn` function. For C calls that do not return, we simply leave the chunk with `return -2;`, much as `Thread_returnToC` does. Commit: b7bc46db74f399b3a426a814bd1211a9cd4ea2b3 https://github.com/MLton/mlton/commit/b7bc46db74f399b3a426a814bd1211a9cd4ea2b3 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 2019) Changed paths: M benchmark/main.sml R doc/guide/src/AllocateRegisters.adoc A doc/guide/src/AllocateVariables.adoc M doc/guide/src/CommonArg.adoc M doc/guide/src/IntermediateLanguage.adoc M doc/guide/src/Machine.adoc M doc/guide/src/ToMachine.adoc M lib/mlton/basic/counter.sig M lib/mlton/basic/counter.sml M lib/mlton/basic/directed-graph.sml M lib/mlton/basic/directed-sub-graph.sml M lib/mlton/basic/hash-table.sig M lib/mlton/basic/hash-table.sml M lib/mlton/basic/parse.sig M lib/mlton/basic/parse.sml M lib/mlton/basic/regexp.sml M lib/mlton/basic/string.sml M mlton/atoms/c-function.fun M mlton/atoms/ffi.fun M mlton/atoms/id.fun M mlton/atoms/prim.fun M mlton/atoms/profile-label.fun M mlton/atoms/real-size.fun M mlton/atoms/real-size.sig M mlton/atoms/source-info.fun M mlton/atoms/symbol.fun M mlton/atoms/symbol.sig M mlton/atoms/word-size.fun M mlton/atoms/word-size.sig R mlton/backend/allocate-registers.fun R mlton/backend/allocate-registers.sig A mlton/backend/allocate-variables.fun A mlton/backend/allocate-variables.sig M mlton/backend/backend.fun M mlton/backend/bounce-vars.fun M mlton/backend/implement-profiling.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/backend/objptr-tycon.fun M mlton/backend/objptr-tycon.sig M mlton/backend/parallel-move.fun M mlton/backend/parallel-move.sig M mlton/backend/rep-type.fun M mlton/backend/rep-type.sig M mlton/backend/rssa-restore.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/backend/ssa2-to-rssa.fun M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/amd64-codegen/amd64-liveness.fun 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-codegen.fun M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-liveness.fun M mlton/codegen/x86-codegen/x86-translate.fun M mlton/codegen/x86-codegen/x86.fun M mlton/control/bits.sml M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/elaborate/elaborate-env.fun M mlton/elaborate/elaborate-mlbs.fun M mlton/elaborate/type-env.fun M mlton/front-end/mlb-front-end.fun M mlton/main/compile.fun M mlton/main/lookup-constant.fun M mlton/main/main.fun M mlton/ssa/common-subexp.fun M mlton/ssa/duplicate-globals.fun M mlton/ssa/global.fun M mlton/ssa/loop-unroll.fun M mlton/ssa/restore.fun M mlton/ssa/restore2.fun M mlton/ssa/simplify.fun M mlton/ssa/simplify2.fun M mlton/ssa/ssa-tree.fun M mlton/ssa/ssa-tree2.fun M mlton/ssa/type-check.fun M mlton/ssa/type-check2.fun M mlton/xml/monomorphise.fun M mlton/xml/sxml-simplify.fun M mlton/xml/xml-simplify.fun M mlton/xml/xml-tree.fun Log Message: ----------- Merge branch 'master' of github.com:MLton/mlton into c-and-llvm-codegen-updates Commit: 0c2dabcc48a08f3c09fb91991a5aa91226aab6a6 https://github.com/MLton/mlton/commit/0c2dabcc48a08f3c09fb91991a5aa91226aab6a6 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Remove `Thread_returnToC` from `c-chunk.h` Commit: 3d9c499316592ba0f49954916847d1e56f82f99d https://github.com/MLton/mlton/commit/3d9c499316592ba0f49954916847d1e56f82f99d Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 2019) Changed paths: M mlton/backend/chunkify.fun Log Message: ----------- Perform more coalescing with `-chunkify simple` Commit: 138512f9e2fc59f3889d773a1fe41a54200bcf07 https://github.com/MLton/mlton/commit/138512f9e2fc59f3889d773a1fe41a54200bcf07 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 2019) Changed paths: M mlton/backend/chunkify.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add and use `Control.Chunkify.fromString` Commit: f8b171562cc6be0a8fc9eaf73b0a3162ac2463b5 https://github.com/MLton/mlton/commit/f8b171562cc6be0a8fc9eaf73b0a3162ac2463b5 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 2019) Changed paths: M mlton/backend/ssa2-to-rssa.fun Log Message: ----------- Name the RSSA function that initializes globals `globals` Commit: faef16463d649d999a32e36ea806fb50e5152499 https://github.com/MLton/mlton/commit/faef16463d649d999a32e36ea806fb50e5152499 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-19 (Fri, 19 Jul 2019) Changed paths: M mlton/backend/chunkify.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml Log Message: ----------- Use `structure Parse` for `-chunkify` option and parameterize `Chunkify.Simple` Commit: 911b5d480de60ee8011e7460900090d612a7e251 https://github.com/MLton/mlton/commit/911b5d480de60ee8011e7460900090d612a7e251 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-20 (Sat, 20 Jul 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/packed-representation.fun M mlton/backend/rssa-tree.fun M mlton/backend/ssa2-to-rssa.fun M mlton/backend/switch.fun M mlton/backend/switch.sig Log Message: ----------- Add `expect: WordX.t option` to RSSA and Machine `Switch.T` Commit: e2b27ab632f62fb97db9ad8f4cf82a182773c6cf https://github.com/MLton/mlton/commit/e2b27ab632f62fb97db9ad8f4cf82a182773c6cf Author: Matthew Fluet <mat...@gm...> Date: 2019-07-20 (Sat, 20 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Use `__builtin_expect` in C codegen for `Switch.T` with `expect` Commit: 823815a740f4805c3b90c5a3176db45ac541a92d https://github.com/MLton/mlton/commit/823815a740f4805c3b90c5a3176db45ac541a92d Author: Matthew Fluet <mat...@gm...> Date: 2019-07-20 (Sat, 20 Jul 2019) Changed paths: M mlton/backend/limit-check.fun M mlton/backend/rssa-tree.fun M mlton/backend/rssa-tree.sig M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add `-gc-expect {none|false|true}` compile-time option The option indicates the `expect` value of RSSA `Transfer.Switch`es that branch to a garbage collection. Using `gc-expect false` should indicate that performing a GC is a cold path. Commit: c3b99054c867b8416b8cd376759061069f78cbfc https://github.com/MLton/mlton/commit/c3b99054c867b8416b8cd376759061069f78cbfc Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Change `-chunk-must-rto-other-opt` default to `true`. With 8c5d09423, the LLVM bug that erroneously optimizes a `musttail call` to a `noreturn` function is avoided. Commit: 473808f07dc0ea8150099a2ce79bf82b44c9e00e https://github.com/MLton/mlton/commit/473808f07dc0ea8150099a2ce79bf82b44c9e00e Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add `-chunk-must-rto-sing-opt {true|false}` to optimize return/raise to a single label There are a few `Raise` transfers that can statically determine the handler label; typically, an otherwise uncaught exception can transfer directly to the top-level exception handler. Commit: 26b47f870e9657c027f8a2c82ac4f861e419ba3a https://github.com/MLton/mlton/commit/26b47f870e9657c027f8a2c82ac4f861e419ba3a Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M mlton/codegen/amd64-codegen/amd64-allocate-registers.fun M mlton/codegen/amd64-codegen/amd64-generate-transfers.fun M mlton/codegen/amd64-codegen/amd64-mlton.fun M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/x86-codegen/x86-allocate-registers.fun M mlton/codegen/x86-codegen/x86-generate-transfers.fun M mlton/codegen/x86-codegen/x86-mlton.fun M mlton/codegen/x86-codegen/x86-translate.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Rename `-native-commented <n>` to `-codegen-comments <n>` Commit: efc2e64f0597225006751448faf99d0b91ff16a6 https://github.com/MLton/mlton/commit/efc2e64f0597225006751448faf99d0b91ff16a6 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Emit comments in generated C code. Commit: c9394d8b7f060b973222cbe02fdc0289bb3a3f2a https://github.com/MLton/mlton/commit/c9394d8b7f060b973222cbe02fdc0289bb3a3f2a Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 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: ----------- Use `T<ty>_<i>` for temporaries in C and LLVM codegens Commit: af9de6b4dcb3c655e909fa946858992068421889 https://github.com/MLton/mlton/commit/af9de6b4dcb3c655e909fa946858992068421889 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Eliminate `BNZ` from `c-chunk.h` Commit: 21a245165a595c9b765eb6079ea35bcca4b15f03 https://github.com/MLton/mlton/commit/21a245165a595c9b765eb6079ea35bcca4b15f03 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Eliminate more of `c-chunk.h` Commit: 12ee2ceec1abd092489cb70146ac5f2479bd21df https://github.com/MLton/mlton/commit/12ee2ceec1abd092489cb70146ac5f2479bd21df Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M include/c-chunk.h M include/c-common.h Log Message: ----------- Only `#define DEBUG_CCODEGEN` in `c-common.h` Commit: 27bd67c64dc4ea671d170148d5e4af31925089c1 https://github.com/MLton/mlton/commit/27bd67c64dc4ea671d170148d5e4af31925089c1 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Fix formatting of `switch` with unreachable default in C codegen Commit: f4fc31fa5c626ffe679f81b006079394f7a1ff8c https://github.com/MLton/mlton/commit/f4fc31fa5c626ffe679f81b006079394f7a1ff8c Author: Matthew Fluet <mat...@gm...> Date: 2019-07-22 (Mon, 22 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Move chunk switch from `c-chunk.h` to C codegen Commit: 787b3f7ebe23a6a4bc2db8d79206228021c3d9f4 https://github.com/MLton/mlton/commit/787b3f7ebe23a6a4bc2db8d79206228021c3d9f4 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-23 (Tue, 23 Jul 2019) Changed paths: M include/c-chunk.h M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Eliminate remainder of `c-chunk.h` Commit: 01a32c933c03633e64a0ab396a01486386d8084a https://github.com/MLton/mlton/commit/01a32c933c03633e64a0ab396a01486386d8084a Author: Matthew Fluet <mat...@gm...> Date: 2019-07-23 (Tue, 23 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Mark `doSwitchNextBlock` label as potentially unused Commit: 091df97eb533fb9b33a99cbed8a2601e61775588 https://github.com/MLton/mlton/commit/091df97eb533fb9b33a99cbed8a2601e61775588 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-23 (Tue, 23 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Tweak formatting of generated C code Commit: 7777736f500dfa2a029bb01f74a948cfbc62cc95 https://github.com/MLton/mlton/commit/7777736f500dfa2a029bb01f74a948cfbc62cc95 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-24 (Wed, 24 Jul 2019) Changed paths: M include/common-main.h Log Message: ----------- The `{Load,Save}Array` macros are used as statements Commit: 5280248c49c752e8764887f9ceb54cfdbf50eb20 https://github.com/MLton/mlton/commit/5280248c49c752e8764887f9ceb54cfdbf50eb20 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-24 (Wed, 24 Jul 2019) Changed paths: M runtime/export.h Log Message: ----------- Assume C compiler supports `__attribute__((visibility("...")))` Commit: 648fd9262fadcb2d5fc5fd34c9fd221b3a55b8d7 https://github.com/MLton/mlton/commit/648fd9262fadcb2d5fc5fd34c9fd221b3a55b8d7 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-24 (Wed, 24 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/c-codegen/c-codegen.sig Log Message: ----------- Change `CCodegen.C.call{,NoSemi}` to return `string` Commit: 01b3e489025f3578ce832a164f073e8a812634ca https://github.com/MLton/mlton/commit/01b3e489025f3578ce832a164f073e8a812634ca Author: Matthew Fluet <mat...@gm...> Date: 2019-07-24 (Wed, 24 Jul 2019) Changed paths: M include/c-main.h Log Message: ----------- Fix `MLtonLibrary` macro in `c-main.h`; no longer called with a `mc` arg Commit: c0ccebb8f39a9a96f79e64383056e8a98bae339a https://github.com/MLton/mlton/commit/c0ccebb8f39a9a96f79e64383056e8a98bae339a Author: Matthew Fluet <mat...@gm...> Date: 2019-07-24 (Wed, 24 Jul 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Remove `#include <stdio.h>` from `c-chunk.h` Commit: 006269b9c48cf940ce318d80f5a642006b70c446 https://github.com/MLton/mlton/commit/006269b9c48cf940ce318d80f5a642006b70c446 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-25 (Thu, 25 Jul 2019) Changed paths: M include/c-chunk.h 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: ----------- Eliminate unused `Machine.Operand.Contents` constructor Commit: 01fe2401b38aabc6ccc8172b5f02503a9ac95007 https://github.com/MLton/mlton/commit/01fe2401b38aabc6ccc8172b5f02503a9ac95007 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-26 (Fri, 26 Jul 2019) Changed paths: M mlton/control/scale.sml Log Message: ----------- Add `Scale.toBytes` Commit: 079e7ff39816685c9d477d709517efa83e3726c8 https://github.com/MLton/mlton/commit/079e7ff39816685c9d477d709517efa83e3726c8 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-26 (Fri, 26 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Lightly refactor CCodegen Commit: 9a4cadb8b773dde18021debd6dd988680d857cc0 https://github.com/MLton/mlton/commit/9a4cadb8b773dde18021debd6dd988680d857cc0 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-26 (Fri, 26 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Remove support for `ProfileLabel` in C codegen The supporting C-side macro `ProfileLabel` was removed long ago. Commit: a6a361717f70ee9f4958dac3ffc88f6396da7da6 https://github.com/MLton/mlton/commit/a6a361717f70ee9f4958dac3ffc88f6396da7da6 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-26 (Fri, 26 Jul 2019) Changed paths: M mlton/atoms/real-size.fun M mlton/atoms/real-size.sig Log Message: ----------- Add `RealSize.compare` Commit: 31d1f93ca3c814246aa93752ec8ce06db6086796 https://github.com/MLton/mlton/commit/31d1f93ca3c814246aa93752ec8ce06db6086796 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-29 (Mon, 29 Jul 2019) Changed paths: M lib/mlton/basic/bool.sig M lib/mlton/basic/bool.sml Log Message: ----------- Add `Bool.hash` Commit: cec30c52fb6e722ad38b4c5a9ec1933c2a8cc409 https://github.com/MLton/mlton/commit/cec30c52fb6e722ad38b4c5a9ec1933c2a8cc409 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-29 (Mon, 29 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Make a major refactoring of LLVM codegen Highlights: - Introduce a `structure LLVM` with sub-structures for `Type`, `Value`, `Instr`, `MetaData`, and `ModuleContext`. While much of the LLVM codegen still uses strings, the modules enforce a more correct usage. - Unify `implementsPrim` and `primApp`. - Eliminate a number of instances of code duplication in the translation of primitives. - Eliminate awkward `Context` type, which was a form of manual closure conversion. - Favor direct output and using `AppendList.t` over constructing large strings. - More closely match the C codegen. Commit: e34905fadde7da6e1c90543a841de554eed79843 https://github.com/MLton/mlton/commit/e34905fadde7da6e1c90543a841de554eed79843 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-30 (Tue, 30 Jul 2019) Changed paths: M include/c-main.h M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Declare/Define `nextChunks` as `ChunkFnPtr_t const` Commit: 04af37ae12f8b9ed9052b74abddf018815bc4579 https://github.com/MLton/mlton/commit/04af37ae12f8b9ed9052b74abddf018815bc4579 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-30 (Tue, 30 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun M runtime/gc/call-stack.c M runtime/gc/call-stack.h M runtime/gc/frame.h M runtime/gc/init.c M runtime/gc/object.c M runtime/gc/object.h M runtime/gc/profiling.c M runtime/gc/profiling.h M runtime/gc/sources.c M runtime/gc/sources.h Log Message: ----------- Declare/Define more static arrays as `const` Commit: 0a649f266f2400d858c4730b275e68ea5b39bff1 https://github.com/MLton/mlton/commit/0a649f266f2400d858c4730b275e68ea5b39bff1 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-30 (Tue, 30 Jul 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Include all codegen prims in `CCodegen.implementsPrim` Commit: 9b7b2bdc246e71b944b37a19a2f64a868259e92e https://github.com/MLton/mlton/commit/9b7b2bdc246e71b944b37a19a2f64a868259e92e Author: Matthew Fluet <mat...@gm...> Date: 2019-07-30 (Tue, 30 Jul 2019) Changed paths: M basis-library/real/real.sml M mlton/codegen/c-codegen/c-codegen.fun M runtime/basis/Real/Real-ops.h Log Message: ----------- Implement `Real<N>_qequal` for C codegen Commit: 7b558195760eead6cdd00c14b847d62b94ceeef7 https://github.com/MLton/mlton/commit/7b558195760eead6cdd00c14b847d62b94ceeef7 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-30 (Tue, 30 Jul 2019) Changed paths: M runtime/basis/Real/Real-ops.h Log Message: ----------- Use `is{less,lessequal}` for `Real<N>_l{t,e}` in C codegen Commit: 32606ccb5df578236c339243eb1f09864e1bfc0a https://github.com/MLton/mlton/commit/32606ccb5df578236c339243eb1f09864e1bfc0a Author: Matthew Fluet <mat...@gm...> Date: 2019-07-30 (Tue, 30 Jul 2019) Changed paths: M mlton/backend/backend.fun M mlton/backend/machine.fun M mlton/backend/machine.sig M mlton/backend/parallel-move.fun M mlton/backend/parallel-move.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: ----------- Eliminate `Machine.Statement.Noop` Commit: 27709ef748f49be9ee37ce3f6aec5bbbce5849d7 https://github.com/MLton/mlton/commit/27709ef748f49be9ee37ce3f6aec5bbbce5849d7 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-31 (Wed, 31 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml Log Message: ----------- Generalize LLVM type-based alias-analysis Include `Global` and `GCState` domains, distinct from `Heap`, `Stack`, and `Other`. For each domain, include optional extra information for further distinctions: * `GCState`: offset * `Global`: cty, index * `Heap`: kind, tycon, cty, offset * `Stack`: offset Not all options lead to sound alias analysis; limitations are noted in comments. Commit: b825f5633d72f590342a046cc2158495add4b7b7 https://github.com/MLton/mlton/commit/b825f5633d72f590342a046cc2158495add4b7b7 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-31 (Wed, 31 Jul 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml Log Message: ----------- Add `-llvm-aamd scope` for simple `noalias`/`alias.scope` alias-analysis metadata Commit: 311331c100387aaea35d6debf3e36c1d17c389b0 https://github.com/MLton/mlton/commit/311331c100387aaea35d6debf3e36c1d17c389b0 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-31 (Wed, 31 Jul 2019) Changed paths: M mlton/ast/ast-core.fun M mlton/ast/ast-core.sig 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/ssa2-to-rssa.fun M mlton/elaborate/elaborate-core.fun M mlton/front-end/ml.grm M mlton/ssa/split-types.fun Log Message: ----------- Add `inline` attribute for `_import` This allows marking an `_import`ed C function to have its prototype emitted with the `inline` keyword. This will be used to properly mark Basis Library functions (as opposed to primitives) that are provided as `inline` to be properly annotated as such in the emitted C declarations. Commit: c86449276e3862e68708562031cb55f8d9e5e3b5 https://github.com/MLton/mlton/commit/c86449276e3862e68708562031cb55f8d9e5e3b5 Author: Matthew Fluet <mat...@gm...> Date: 2019-07-31 (Wed, 31 Jul 2019) Changed paths: M basis-library/primitive/basis-ffi.sml M basis-library/primitive/prim-real.sml M basis-library/primitive/primitive.mlb M include/c-chunk.h M runtime/basis-ffi.h M runtime/basis/Real/Real-ops.h M runtime/basis/Word/Word-ops.h M runtime/basis/coerce.h M runtime/basis/cpointer.h M runtime/gen/basis-ffi.def M runtime/gen/basis-ffi.h M runtime/gen/basis-ffi.sml M runtime/gen/gen-basis-ffi.sml M runtime/platform.h Log Message: ----------- Use C99/C11 `inline` for primitive and Basis Library functions Previously, functions meant to be inlined because they correspond to primitives or Basis Library functions (e.g., `Real<N>` and `Real<N>.Math`) were marked `static inline` when included via `c-chunk.h`. If a C compiler chooses not to inline a function (such as clang at -O1), then each .o file included its own copy of the function (and the copy of the function provided by `libmlton.a` was not linked into the final executable). Now, functions are marked `inline` when included via `c-chunk.h` (and the corresponding `_import` is given the `inline` attribute). The C99/C11 semantics of `inline` requires the C compiler to *not* include a copy of the function in the .o file (if it chooses not to inline the function) and treat the function as an external reference. The copy of the function provided by `libmlton.a` is used to satisfy the external reference when linking. Commit: 4f2d213749dd1e9be40202d78d00809afabf671f https://github.com/MLton/mlton/commit/4f2d213749dd1e9be40202d78d00809afabf671f Author: Matthew Fluet <mat...@gm...> Date: 2019-08-01 (Thu, 01 Aug 2019) Changed paths: M include/c-chunk.h Log Message: ----------- Mark primitive and Basis Library functions as `__attribute__((always_inline))` Although the functions are small and marked `inline`, clang at -O1 does not inline the functions (even with the `-finline-functions` option). Commit: d1df0de8c00829d9edc0e2442437ec1ff2c072c2 https://github.com/MLton/mlton/commit/d1df0de8c00829d9edc0e2442437ec1ff2c072c2 Author: Matthew Fluet <mat...@gm...> Date: 2019-08-08 (Thu, 08 Aug 2019) Changed paths: M mlton/control/control-flags.sml Log Message: ----------- Use `-chunkify simple` for a `ControlFlags.Chunkify.simpleDefault` Commit: 6b738b8719dc71499b557ce7c8c8066e7d8b81e7 https://github.com/MLton/mlton/commit/6b738b8719dc71499b557ce7c8c8066e7d8b81e7 Author: Matthew Fluet <mat...@gm...> Date: 2019-08-08 (Thu, 08 Aug 2019) Changed paths: M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/main/main.fun Log Message: ----------- Add `-codegen-fuse-op-and-chk {false|true}` compile-time flag It appears that GCC (and, to a lesser extent) Clang/LLVM do not always successfully fuse adjacent `Word<N>_<op>` and `Word{S,U}<N>_<op>CheckP` primitives. The performance results reported at https://github.com/MLton/mlton/pull/273 and https://github.com/MLton/mlton/pull/292 suggest that this does not always have significant impact, but a close look at the `md5` benchmark shows that the native codegen significantly outperforms the C codegen with gcc-9 due to redundant arithmetic computations (one for `Word{S,U}<N>_<op>CheckP` and another for `Word<N>_<op>`). This flag will be used to enable explicit fusing of adjacent `Word<N>_<op>` and `Word{S,U}<N>_<op>CheckP` primitives in the codegens. Commit: 3d1e89ccfec002a3f0ff6d46c4241a275e80c04f https://github.com/MLton/mlton/commit/3d1e89ccfec002a3f0ff6d46c4241a275e80c04f Author: Matthew Fluet <mat...@gm...> Date: 2019-08-08 (Thu, 08 Aug 2019) Changed paths: M runtime/basis/Word/Word-ops.h Log Message: ----------- Add `Word{S,U}<N>_{add,mul,neg,sub}AndCheck` fns to `Word-ops.h` It appears that GCC (and, to a lesser extent) Clang/LLVM do not always successfully fuse adjacent `Word<N>_<op>` and `Word{S,U}<N>_<op>CheckP` primitives. The performance results reported at https://github.com/MLton/mlton/pull/273 and https://github.com/MLton/mlton/pull/292 suggest that this does not always have significant impact, but a close look at the `md5` benchmark shows that the native codegen significantly outperforms the C codegen with gcc-9 due to redundant arithmetic computations (one for `Word{S,U}<N>_<op>CheckP` and another for `Word<N>_<op>`). These functions compute both the arithmetic result and a boolean indicating overflow (using `__builtin_<op>_overflow`). They will be used for explicit fusing of adjacent `Word<N>_<op>` and `Word{S,U}<N>_<op>CheckP` primitives in the C codegen for `-codegen-fuse-op-and-check true`. Commit: 68f8512b6b9caab6948d273ddf8cc7a917c53a3f https://github.com/MLton/mlton/commit/68f8512b6b9caab6948d273ddf8cc7a917c53a3f Author: Matthew Fluet <mat...@gm...> Date: 2019-08-08 (Thu, 08 Aug 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Implement `-codegen-fuse-op-and-check true` for C codegen It appears that GCC (and, to a lesser extent) Clang/LLVM do not always successfully fuse adjacent `Word<N>_<op>` and `Word{S,U}<N>_<op>CheckP` primitives. The performance results reported at https://github.com/MLton/mlton/pull/273 and https://github.com/MLton/mlton/pull/292 suggest that this does not always have significant impact, but a close look at the `md5` benchmark shows that the native codegen significantly outperforms the C codegen with gcc-9 due to redundant arithmetic computations (one for `Word{S,U}<N>_<op>CheckP` and another for `Word<N>_<op>`). (Note: Because the final md5 state is not used by the `md5` benchmark program, MLton actually optimizes out most of the md5 computation. What is left is a lot of arithmetic from `PackWord32Little.subVec` to check for indices that should raise `Subscript`.) For example, with `-codegen-fuse-op-and-check false` and gcc-9, the `transform` function of `md5` has the following assembly: movl %r9d, %r10d subl $1, %r10d jo .L650 leal -1(%r8), %r10d movl %r10d, %r12d addl %r10d, %edx jo .L650 addl %r10d, %r11d cmpl %eax, %r11d jnb .L656 movl %ebp, %edx addl $1, %edx jo .L659 leal 1(%rcx), %edx movl %edx, %r11d imull %r9d, %r11d jo .L650 imull %r8d, %edx movl %edx, %r11d addl %r10d, %r11d jo .L650 leal (%rdx,%r10), %r11d cmpl %eax, %r11d jnb .L665 What seems to have happened is that gcc has arranged for equivalent values to be in `%r8` and `%r9`. In the first three lines, there is an implementation of `WordS32_subCheckP (X, 1)` using `subl/jo`, while in the fourth line, there is an implementation of `Word32_sub (X, 1)` using `lea` with an offset of `-1`. Notice that `%r10` is used for the result of both, so the fourth line is redundant (the value is already in `%r10`). On the other hand, with `-codegen-fuse-op-and-check true` and gcc-9, the `transform` function of `md5` has the following assembly: movl %r8d, %r9d subl $1, %r9d jo .L645 addl %r9d, %ecx jo .L645 cmpl %edx, %ecx jnb .L651 movl %eax, %ecx addl $1, %ecx jo .L654 imull %r8d, %ecx jo .L645 addl %r9d, %ecx jo .L645 cmpl %edx, %ecx jnb .L660 Commit: d7853bce4f920f85255ff20c727e902e00bcf42a https://github.com/MLton/mlton/commit/d7853bce4f920f85255ff20c727e902e00bcf42a Author: Matthew Fluet <mat...@gm...> Date: 2019-08-16 (Fri, 16 Aug 2019) Changed paths: 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: ----------- Obscure returns from `Chunk<N>` fns in C and LLVM codegens On some small programs (with all `Chunk<N>` fns in the same compilation unit), Clang could observe that all `Chunk<N>` fns return the value `-2` (arising from a C call with no return point). With this knowledge, it would replace a tail call from one `Chunk<N>` fn to a `Chunk<M>` fn with a non-tail call and an explicit `ret -2`. Breaking the tail call and not performing tail-call optimization leads to unbounded C stack growth and segmentation faults. LLVM could make the same optimization, but the LLVM codegen did not exhibit the same problem (perhaps it requires a specific LLVM optimization pass that is requested by Clang at `-O1`, but not included by default by opt at `-O2`). Obscuring the manifest result value by using a function call seems to prevent the problem (though, Clang could observe that all `Chunk<N>` fns return the value `MLton_unreachable()` and make the same transformation, but presumable propagating a function call is considered more expensive than propagating a constant). It could arise again with aggressive link-time optimization. Commit: 82c019f4f49615a58827f2a13c9a83df034ecad9 https://github.com/MLton/mlton/commit/82c019f4f49615a58827f2a13c9a83df034ecad9 Author: Matthew Fluet <mat...@gm...> Date: 2019-08-16 (Fri, 16 Aug 2019) Changed paths: M basis-library/primitive/prim1.sml M mlton/codegen/amd64-codegen/amd64-simplify.fun M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/x86-codegen/x86-simplify.fun Log Message: ----------- Add comments about fusing of adjacent `Word<N>_<op>` and `Word{S,U}<N>_<op>CheckP` primitives Commit: 44de25ddaf8d066d56e07c3425fd882efeb39706 https://github.com/MLton/mlton/commit/44de25ddaf8d066d56e07c3425fd882efeb39706 Author: Matthew Fluet <mat...@gm...> Date: 2019-08-16 (Fri, 16 Aug 2019) Changed paths: M mlton/main/main.fun Log Message: ----------- Eliminate redundant debug flags in `compileC` and `compileS` Commit: 79e7c8126c07cd8ae03ad859338ff1d211e0d091 https://github.com/MLton/mlton/commit/79e7c8126c07cd8ae03ad859338ff1d211e0d091 Author: Matthew Fluet <mat...@gm...> Date: 2019-08-16 (Fri, 16 Aug 2019) Changed paths: M mlton/main/main.fun Log Message: ----------- Add `-relocation-model=pic` to `llc` options when `positionIndependent` See MLton/mlton#190 and MLton/mlton#191 On systems (e.g., gcc 7.04 on Ubuntu 18.04) that error when linking PIC and non-PIC code, the default behavior of `llc` to generate non-PIC code leads to link-time errors. Commit: 61de560b08ce46298d3a8b427a01f3b9cde264aa https://github.com/MLton/mlton/commit/61de560b08ce46298d3a8b427a01f3b9cde264aa Author: Matthew Fluet <mat...@gm...> Date: 2019-08-16 (Fri, 16 Aug 2019) Changed paths: M basis-library/primitive/prim1.sml M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Implement `-codegen-fuse-op-and-check true` for LLVM codegen Commit: 53631992f4d1f67807c5d97c36910b10278a4d07 https://github.com/MLton/mlton/commit/53631992f4d1f67807c5d97c36910b10278a4d07 Author: Matthew Fluet <mat...@gm...> Date: 2019-08-17 (Sat, 17 Aug 2019) Changed paths: M mlton/codegen/c-codegen/c-codegen.fun Log Message: ----------- Use manifest temps for `Word{S,U}<N>_<op>AndCheck` calls in C codegen When a Machine IR temp is used as a destination for `Word{S,U}<N>_<op>AndCheck`, by having its address taken, Clang sometimes fails to turn the `alloca` introduced for the C local variable into an SSA variable. Moreover, Clang introduces `@llvm.lifetime.{start,end}` intrinsic calls at chunk entry and exit; the call at the chunk exit (although they are no-ops) inhibit tail call optimization. Using a manifest temporary C local variable for the results of `Word{S,U}<N>_<op>AndCheck` and then copying them into Machine IR destination operands seems avoid the problem. Commit: 74b77ea5fa61aeeeae280c6ad816cb777db1b225 https://github.com/MLton/mlton/commit/74b77ea5fa61aeeeae280c6ad816cb777db1b225 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M mlton/codegen/llvm-codegen/llvm-codegen.fun Log Message: ----------- Avoid `fneg` LLVM instruction (not present prior to LLVM 8.0) Commit: 098009d4965eb08ed74da72f882608d7a18c3ff9 https://github.com/MLton/mlton/commit/098009d4965eb08ed74da72f882608d7a18c3ff9 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M .travis.yml M CHANGELOG.adoc M Makefile M Makefile.config M basis-library/mlton/call-stack.sml M basis-library/mlton/mlton.sig M basis-library/mlton/mlton.sml M basis-library/primitive/prim-mlton.sml M basis-library/system/io.sml M benchmark/main.sml M benchmark/tests/DLXSimulator.sml M benchmark/tests/flat-array.sml M benchmark/tests/md5.sml M benchmark/tests/peek.sml M benchmark/tests/pidigits.sml A benchmark/tests/tailmerge.sml M benchmark/tests/tak.sml M benchmark/update-counts.sh M bin/regression M bin/travis-ci M doc/examples/size/size.sml M doc/guide/src/MLtonStructure.adoc M include/amd64-main.h M include/c-chunk.h M include/c-main.h M include/common-main.h M include/x86-main.h M lib/stubs/basis-stubs-for-smlnj/char.sml M lib/stubs/basis-stubs-for-smlnj/int-inf.sml R lib/stubs/basis-stubs-for-smlnj/int.sml A lib/stubs/basis-stubs-for-smlnj/pack-real32.sml A lib/stubs/basis-stubs-for-smlnj/pack-real64.sml A lib/stubs/basis-stubs-for-smlnj/pack-word64.sml M lib/stubs/basis-stubs-for-smlnj/pervasive.sml M lib/stubs/basis-stubs-for-smlnj/real.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm M lib/stubs/basis-stubs-for-smlnj/string.sml R lib/stubs/basis-stubs-for-smlnj/word.sml M lib/stubs/mlton-stubs-for-polyml/mlton.sml M lib/stubs/mlton-stubs-for-smlnj/mlton.sml M lib/stubs/mlton-stubs/mlton.sig M lib/stubs/mlton-stubs/mlton.sml M mlton/Makefile M mlton/ast/sources.cm M mlton/atoms/cases.fun M mlton/atoms/cases.sig M mlton/atoms/con-.fun M mlton/atoms/hash-type.fun M mlton/atoms/sources.cm M mlton/atoms/sources.mlb M mlton/atoms/tycon.fun M mlton/backend/backend-atoms.fun M mlton/backend/backend-atoms.sig M mlton/backend/backend.fun M mlton/backend/bounce-vars.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/representation.sig M mlton/backend/rssa-live.fun M mlton/backend/rssa-live.sig M mlton/backend/rssa-restore.fun M mlton/backend/rssa-restore.sig A mlton/backend/rssa-shrink.fun A mlton/backend/rssa-shrink.sig M mlton/backend/rssa-simplify.fun M mlton/backend/rssa-tree.fun M mlton/backend/rssa-tree.sig A mlton/backend/rssa-type-check.fun A mlton/backend/rssa-type-check.sig M mlton/backend/rssa.fun M mlton/backend/sources.cm M mlton/backend/sources.mlb M mlton/backend/ssa2-to-rssa.fun A mlton/backend/static.fun A mlton/backend/static.sig M mlton/closure-convert/closure-convert.fun M mlton/closure-convert/sources.cm M mlton/codegen/amd64-codegen/amd64-codegen.fun M mlton/codegen/amd64-codegen/amd64-mlton-basic.fun M mlton/codegen/amd64-codegen/amd64-mlton-basic.sig M mlton/codegen/amd64-codegen/amd64-translate.fun M mlton/codegen/amd64-codegen/sources.cm M mlton/codegen/c-codegen/c-codegen.fun M mlton/codegen/c-codegen/sources.cm M mlton/codegen/llvm-codegen/llvm-codegen.fun M mlton/codegen/llvm-codegen/sources.cm M mlton/codegen/sources.cm M mlton/codegen/x86-codegen/sources.cm M mlton/codegen/x86-codegen/x86-codegen.fun M mlton/codegen/x86-codegen/x86-mlton-basic.fun M mlton/codegen/x86-codegen/x86-mlton-basic.sig M mlton/codegen/x86-codegen/x86-translate.fun M mlton/control/control-flags.sig M mlton/control/control-flags.sml M mlton/control/control.sml M mlton/control/sources.cm M mlton/core-ml/core-ml.fun M mlton/core-ml/core-ml.sig M mlton... [truncated message content] |
From: Matthew F. <no...@gi...> - 2019-11-06 19:52:47
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 033757145571dbc2f0fa0c1d743d20b1f187f45b https://github.com/MLton/mlton/commit/033757145571dbc2f0fa0c1d743d20b1f187f45b Author: Nick Kostyria <kos...@gm...> Date: 2019-11-06 (Wed, 06 Nov 2019) Changed paths: M doc/guide/src/Features.adoc M runtime/platform/freebsd.c Log Message: ----------- Add support for ARM FreeBSD and ARM64 (AArch64) FreeBSD. Commit: 60b338bbd9c3247dd0a4d4a4fa040721ad2b2b23 https://github.com/MLton/mlton/commit/60b338bbd9c3247dd0a4d4a4fa040721ad2b2b23 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-06 (Wed, 06 Nov 2019) Changed paths: M doc/guide/src/Features.adoc M runtime/platform/freebsd.c Log Message: ----------- Merge pull request #349 from kni/master Add support for ARM FreeBSD and ARM64 (AArch64) FreeBSD. Compare: https://github.com/MLton/mlton/compare/89891a4114b9...60b338bbd9c3 |
From: Matthew F. <no...@gi...> - 2019-11-05 21:43:00
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: e222d44d8bca2ab7ad106013795f4221e4fd0d91 https://github.com/MLton/mlton/commit/e222d44d8bca2ab7ad106013795f4221e4fd0d91 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M CHANGELOG.adoc Log Message: ----------- Update `CHANGELOG.adoc` Commit: 89891a4114b92affb39f111449c940c2c5be8d41 https://github.com/MLton/mlton/commit/89891a4114b92affb39f111449c940c2c5be8d41 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M CHANGELOG.adoc Log Message: ----------- Merge pull request #347 from MatthewFluet/changelog-updates Update `CHANGELOG.adoc` Compare: https://github.com/MLton/mlton/compare/aeda3eab16ee...89891a4114b9 |
From: Matthew F. <no...@gi...> - 2019-11-05 20:59:43
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: ec15a237d598d0477d2d5a04c01ec5605d18c410 https://github.com/MLton/mlton/commit/ec15a237d598d0477d2d5a04c01ec5605d18c410 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M basis-library/system/io.sml Log Message: ----------- Do not implement `OS.IO.poll` as a restartable system call Closes MLton/mlton#326. See https://sourceforge.net/p/mlton/mailman/message/36490863/. Commit: aeda3eab16eeaedc08c5597ae36a28ac40eb3217 https://github.com/MLton/mlton/commit/aeda3eab16eeaedc08c5597ae36a28ac40eb3217 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M basis-library/system/io.sml Log Message: ----------- Merge pull request #346 from MatthewFluet/poll-restartable Do not implement `OS.IO.poll` as a restartable system call Compare: https://github.com/MLton/mlton/compare/c6bee2036ab7...aeda3eab16ee |
From: Matthew F. <no...@gi...> - 2019-11-05 20:27:18
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: f1d958ebf37d8c056ce82df50edcc031985c90d6 https://github.com/MLton/mlton/commit/f1d958ebf37d8c056ce82df50edcc031985c90d6 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/DLXSimulator.sml Log Message: ----------- Update `DLXSimulator.sml` benchmark Generalize implementation of I/O instructions and only output the last run of each DLX program in the benchmark; avoid excess I/O during benchmark execution. Commit: d24ac176b5e60457b166cd9b80bfe9419c896482 https://github.com/MLton/mlton/commit/d24ac176b5e60457b166cd9b80bfe9419c896482 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/pidigits.sml Log Message: ----------- Fix reference to `MainShootout` in `pidigits.sml` benchmark Commit: 7aba61d02dab68ced7d9ccfe645fcaf59da0097f https://github.com/MLton/mlton/commit/7aba61d02dab68ced7d9ccfe645fcaf59da0097f Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/tak.sml Log Message: ----------- Verify result in `tak.sml` benchmark. Commit: 9c20d423b702f8bd73f899029a76b90f8875ac81 https://github.com/MLton/mlton/commit/9c20d423b702f8bd73f899029a76b90f8875ac81 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/flat-array.sml Log Message: ----------- Verify result in `flat-array.sml` benchmark. The C and LLVM codegens, at sufficiently high optimization levels, are able to eliminate the arithmetic computation from the benchmark. Presumably, the LLVM and C compilers are able to observe that the `sum` value is unused and the `Vector.foldl` loop must terminate. See MLton/mlton#71. Commit: d1ac6a6047ad6ec353333f96e94b3349250db36e https://github.com/MLton/mlton/commit/d1ac6a6047ad6ec353333f96e94b3349250db36e Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/main.sml A benchmark/tests/tailmerge.sml Log Message: ----------- Add a `tailmerge.sml` benchmark See MLton/mlton#299. Commit: 11518ba0edbe703a1d079698cd86c0e87db22ad2 https://github.com/MLton/mlton/commit/11518ba0edbe703a1d079698cd86c0e87db22ad2 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/peek.sml Log Message: ----------- Avoid excess I/O during `peek.sml` benchmark Commit: 020e8bf210df1d65eb9339536a224bc67f80c492 https://github.com/MLton/mlton/commit/020e8bf210df1d65eb9339536a224bc67f80c492 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/peek.sml Log Message: ----------- Make `peek.sml` benchmark more realistic Closes MLton/mlton#312. Create multiple properties, with multiple types and values, on multiple property lists. Previously, with exactly one property with one value created on one list, `ConstantPropagation` was able to propagate the value through the program, so that by the end of ssa, the function is a simple loop, subtracting 1 from one argument, and adding 13 to the other. Commit: 2daaebfda443074582dce644222f0688c0d12cbf https://github.com/MLton/mlton/commit/2daaebfda443074582dce644222f0688c0d12cbf Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/tests/md5.sml Log Message: ----------- Update `md5.sml` benchmark to use final md5 state Previously, the final md5 state was not used by the `md5` benchmark program, and MLton actually optimized out most of the md5 computation. What was left was a lot of arithmetic from `PackWord32Little.subVec` to check for indices that should raise `Subscript`.) Commit: 154dca637c1ae7d7bde3893860c54ee286c5b359 https://github.com/MLton/mlton/commit/154dca637c1ae7d7bde3893860c54ee286c5b359 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/main.sml M benchmark/update-counts.sh Log Message: ----------- Update benchmark iteration counts Commit: c6bee2036ab70c6dc1a296b915344a9fe7a47ded https://github.com/MLton/mlton/commit/c6bee2036ab70c6dc1a296b915344a9fe7a47ded Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-05 (Tue, 05 Nov 2019) Changed paths: M benchmark/main.sml M benchmark/tests/DLXSimulator.sml M benchmark/tests/flat-array.sml M benchmark/tests/md5.sml M benchmark/tests/peek.sml M benchmark/tests/pidigits.sml A benchmark/tests/tailmerge.sml M benchmark/tests/tak.sml M benchmark/update-counts.sh Log Message: ----------- Merge pull request #345 from MatthewFluet/benchmark-updates Updates to benchmark infrastructure Compare: https://github.com/MLton/mlton/compare/ba9a39fb7434...c6bee2036ab7 |
From: Matthew F. <no...@gi...> - 2019-11-04 17:11:06
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 7aefe2dcdbee7142a0f1e47fc1599d59a73076dd https://github.com/MLton/mlton/commit/7aefe2dcdbee7142a0f1e47fc1599d59a73076dd Author: Matthew Fluet <mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M runtime/gc/world.c Log Message: ----------- Cleanup comments and error messages in `runtime/gc/world.c` Commit: 79e58257864fb667f80f62e2d5e614c15ddacc87 https://github.com/MLton/mlton/commit/79e58257864fb667f80f62e2d5e614c15ddacc87 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M runtime/gc/world.c Log Message: ----------- Detect incompatible use of ASLR/PIE on load-world This is more helpful than a segmentation fault. Commit: faebe121bcd3efa335cc986eb0561250b15229de https://github.com/MLton/mlton/commit/faebe121bcd3efa335cc986eb0561250b15229de Author: Matthew Fluet <mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M bin/regression Log Message: ----------- Compile `world*` regression tests with `-link-opt -no-pie` Commit: ba9a39fb7434bb2be52bbe90568951b2758d6ef1 https://github.com/MLton/mlton/commit/ba9a39fb7434bb2be52bbe90568951b2758d6ef1 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M bin/regression M runtime/gc/world.c Log Message: ----------- Merge pull request #343 from MatthewFluet/world-detect-pie Detect incompatible use of ASLR/PIE on `load-world` Compare: https://github.com/MLton/mlton/compare/31689bc2724f...ba9a39fb7434 |
From: Matthew F. <no...@gi...> - 2019-11-04 12:02:49
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 3e4ffca93cabc5d5b847c3535bb2d5b87705973e https://github.com/MLton/mlton/commit/3e4ffca93cabc5d5b847c3535bb2d5b87705973e Author: Matthew Fluet <mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M regression/size.rep32a4.ok M regression/size.rep32a8.ok M regression/size.rep64a4.ok M regression/size.rep64a8.ok M regression/size.sml Log Message: ----------- Tweak `size.sml` regression to demonstrate bug in `GC_size` `GC_size` (and `GC_share`) can be called with object-pointer-sized but non-pointer values (e.g., the `NONE` variant of a `int list option`). Commit: dc545ded80bceecf42e0e6ae0f2e9752ec1ff16a https://github.com/MLton/mlton/commit/dc545ded80bceecf42e0e6ae0f2e9752ec1ff16a Author: Matthew Fluet <mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M runtime/gc/share.c M runtime/gc/size.c Log Message: ----------- Fix bug in `GC_{share,size}` with non-pointer roots `GC_size` and `GC_share` can be called with object-pointer-sized but non-pointer values (e.g., the `NONE` variant of a `int list option`). Commit: 31689bc2724f7168610053f307e0d7b5eb164b7d https://github.com/MLton/mlton/commit/31689bc2724f7168610053f307e0d7b5eb164b7d Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-04 (Mon, 04 Nov 2019) Changed paths: M regression/size.rep32a4.ok M regression/size.rep32a8.ok M regression/size.rep64a4.ok M regression/size.rep64a8.ok M regression/size.sml M runtime/gc/share.c M runtime/gc/size.c Log Message: ----------- Merge pull request #342 from MatthewFluet/size-and-share-nonptr-bug Fix bug in `GC_{share,size}` with non-pointer roots `GC_size` and `GC_share` can be called with object-pointer-sized but non-pointer values (e.g., the `NONE` variant of a `int list option`). Compare: https://github.com/MLton/mlton/compare/4d3c61931ff0...31689bc2724f |
From: Matthew F. <no...@gi...> - 2019-11-02 14:10:11
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: f08665fec133e80c1fc98c4516f27233fe2ef831 https://github.com/MLton/mlton/commit/f08665fec133e80c1fc98c4516f27233fe2ef831 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-02 (Sat, 02 Nov 2019) Changed paths: M basis-library/mlton/call-stack.sml M mlton/backend/ssa2-to-rssa.fun Log Message: ----------- Fix whitespace Commit: 4d3c61931ff02de955ba8b77400ea67bb2d716eb https://github.com/MLton/mlton/commit/4d3c61931ff02de955ba8b77400ea67bb2d716eb Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-02 (Sat, 02 Nov 2019) Changed paths: M basis-library/mlton/call-stack.sml M mlton/backend/ssa2-to-rssa.fun Log Message: ----------- Merge pull request #341 from MatthewFluet/init-globals-rssa-main Fix whitespace Compare: https://github.com/MLton/mlton/compare/debc48964f44...4d3c61931ff0 |
From: Matthew F. <no...@gi...> - 2019-11-02 13:57:47
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: fcbf9177f21b9401f8dd449d37f64db2abc5aedd https://github.com/MLton/mlton/commit/fcbf9177f21b9401f8dd449d37f64db2abc5aedd Author: Matthew Fluet <mat...@gm...> Date: 2019-11-02 (Sat, 02 Nov 2019) Changed paths: M basis-library/mlton/call-stack.sml M mlton/backend/ssa2-to-rssa.fun Log Message: ----------- Tail call from RSSA initGlobals to translated SSA2 main function Commit: debc48964f4490bdbe7b9b7cda25644f7ab20821 https://github.com/MLton/mlton/commit/debc48964f4490bdbe7b9b7cda25644f7ab20821 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-02 (Sat, 02 Nov 2019) Changed paths: M basis-library/mlton/call-stack.sml M mlton/backend/ssa2-to-rssa.fun Log Message: ----------- Merge pull request #340 from MatthewFluet/init-globals-rssa-main Tail call from RSSA initGlobals to translated SSA2 main function Compare: https://github.com/MLton/mlton/compare/8a130836ee27...debc48964f44 |
From: Matthew F. <no...@gi...> - 2019-11-02 11:11:44
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 2d7bd28f67bd63368813c1c6fac2aff85efff5d9 https://github.com/MLton/mlton/commit/2d7bd28f67bd63368813c1c6fac2aff85efff5d9 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/int.sml M lib/stubs/basis-stubs-for-smlnj/pervasive.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm M lib/stubs/basis-stubs-for-smlnj/word.sml Log Message: ----------- Drop `Int31` and `Word31` from SML/NJ Basis Library stubs Commit: a893892c84dd87374db901f1308cb41960bcad27 https://github.com/MLton/mlton/commit/a893892c84dd87374db901f1308cb41960bcad27 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/char.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm M lib/stubs/basis-stubs-for-smlnj/string.sml Log Message: ----------- Conditionally drop `Char`/`String` fixes from SML/NJ BasisLib stubs Commit: 7f5a2669d82454a4d29ce008d52156ef47041d70 https://github.com/MLton/mlton/commit/7f5a2669d82454a4d29ce008d52156ef47041d70 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/sources.cm M lib/stubs/basis-stubs-for-smlnj/word.sml Log Message: ----------- Drop `Word` fixes from SML/NJ BasisLib stubs Fixed in SML/NJ 110.57. Commit: ceee731869feb0343bdca7025d6412cc1b5c063f https://github.com/MLton/mlton/commit/ceee731869feb0343bdca7025d6412cc1b5c063f Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/int.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm Log Message: ----------- Drop `Int` fixes from SML/NJ BasisLib stubs Fixed in SML/NJ 110.57, although not for `LargeInt.fmt` or `IntInf.fmt`. Commit: 31a900fb67a5fa4b34f29ae381a4c7d807b583a7 https://github.com/MLton/mlton/commit/31a900fb67a5fa4b34f29ae381a4c7d807b583a7 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: A lib/stubs/basis-stubs-for-smlnj/pack-word64.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm R lib/stubs/basis-stubs-for-smlnj/word.sml Log Message: ----------- Conditionally include `PackWord64{Big,Little}` in SML/NJ BasisLib stubs Commit: 3390644b68e2730200e10caffd4bfc22c7d3799f https://github.com/MLton/mlton/commit/3390644b68e2730200e10caffd4bfc22c7d3799f Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: A lib/stubs/basis-stubs-for-smlnj/pack-real32.sml A lib/stubs/basis-stubs-for-smlnj/pack-real64.sml M lib/stubs/basis-stubs-for-smlnj/real.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm Log Message: ----------- Conditionally include `PackReal64{Big,Little}` in SML/NJ BasisLib stubs Commit: 53f735514ff987c526305e0213380454c173635c https://github.com/MLton/mlton/commit/53f735514ff987c526305e0213380454c173635c Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/real.sml Log Message: ----------- Drop `Real.fmt` fix for leading `~` for `~0.0` in SML/NJ BasisLib stubs Fixed in SML/NJ 110.73. Commit: f8d0ab558eecb7be5cc7624918250b8511844bec https://github.com/MLton/mlton/commit/f8d0ab558eecb7be5cc7624918250b8511844bec Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/real.sml Log Message: ----------- Refactor `Real.fromString` in SML/NJ BasisLib stubs Note that the SML/NJ bug (raises `Overflow` on large exponents) was fixed in SML/NJ 118.83. However, it is too awkward to only conditionally apply the fix and the performance overhead is negligible. Commit: 645055fd2570e030360a6c679f39d9029bba67c4 https://github.com/MLton/mlton/commit/645055fd2570e030360a6c679f39d9029bba67c4 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/real.sml Log Message: ----------- Add comment in `structure Real` in SML/NJ BasisLib stubs Commit: d16dc1828bc82591b488a4e73f673d41265b7cfd https://github.com/MLton/mlton/commit/d16dc1828bc82591b488a4e73f673d41265b7cfd Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/int-inf.sml R lib/stubs/basis-stubs-for-smlnj/int.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm Log Message: ----------- Reorganize `IntInf` fixes for SML/NJ BasisLib stubs Commit: 67bb6eb6acaca7f1d26689dd918d65d2bc7c1b0c https://github.com/MLton/mlton/commit/67bb6eb6acaca7f1d26689dd918d65d2bc7c1b0c Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/int-inf.sml Log Message: ----------- Drop `IntInf.~>>` fixes in SML/NJ BasisLib stubs Fixed in SML/NJ 110.77 Commit: 19dc538cfb40c40157f934db82e88d21f1e470c0 https://github.com/MLton/mlton/commit/19dc538cfb40c40157f934db82e88d21f1e470c0 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/sources.cm Log Message: ----------- Reorganize `sources.cm` for SML/NJ BasisLib stubs Sort files by likelyhood of being fixed upstream. Commit: d6c99ecae1ec18cf56c187a35b16a38d7f99775f https://github.com/MLton/mlton/commit/d6c99ecae1ec18cf56c187a35b16a38d7f99775f Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M mlton/ast/sources.cm M mlton/atoms/sources.cm M mlton/backend/sources.cm M mlton/closure-convert/sources.cm M mlton/codegen/amd64-codegen/sources.cm M mlton/codegen/c-codegen/sources.cm M mlton/codegen/llvm-codegen/sources.cm M mlton/codegen/sources.cm M mlton/codegen/x86-codegen/sources.cm M mlton/control/sources.cm M mlton/core-ml/sources.cm M mlton/defunctorize/sources.cm M mlton/elaborate/sources.cm M mlton/front-end/sources.cm M mlton/main/sources.cm M mlton/match-compile/sources.cm M mlton/mlton-smlnj.cm M mlton/sources.cm M mlton/ssa/sources.cm M mlton/xml/sources.cm Log Message: ----------- Use `Library` rather than `Group` for `.cm` files Commit: f8161e61f0332d35c0599413279fc19e6c665ff2 https://github.com/MLton/mlton/commit/f8161e61f0332d35c0599413279fc19e6c665ff2 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/sources.cm M mlton/Makefile Log Message: ----------- Avoid obsolete CM preprocessor operators Commit: 8a130836ee27ef5b414e7075874cf8e1482a2ea5 https://github.com/MLton/mlton/commit/8a130836ee27ef5b414e7075874cf8e1482a2ea5 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-02 (Sat, 02 Nov 2019) Changed paths: M lib/stubs/basis-stubs-for-smlnj/char.sml M lib/stubs/basis-stubs-for-smlnj/int-inf.sml R lib/stubs/basis-stubs-for-smlnj/int.sml A lib/stubs/basis-stubs-for-smlnj/pack-real32.sml A lib/stubs/basis-stubs-for-smlnj/pack-real64.sml A lib/stubs/basis-stubs-for-smlnj/pack-word64.sml M lib/stubs/basis-stubs-for-smlnj/pervasive.sml M lib/stubs/basis-stubs-for-smlnj/real.sml M lib/stubs/basis-stubs-for-smlnj/sources.cm M lib/stubs/basis-stubs-for-smlnj/string.sml R lib/stubs/basis-stubs-for-smlnj/word.sml M mlton/Makefile M mlton/ast/sources.cm M mlton/atoms/sources.cm M mlton/backend/sources.cm M mlton/closure-convert/sources.cm M mlton/codegen/amd64-codegen/sources.cm M mlton/codegen/c-codegen/sources.cm M mlton/codegen/llvm-codegen/sources.cm M mlton/codegen/sources.cm M mlton/codegen/x86-codegen/sources.cm M mlton/control/sources.cm M mlton/core-ml/sources.cm M mlton/defunctorize/sources.cm M mlton/elaborate/sources.cm M mlton/front-end/sources.cm M mlton/main/sources.cm M mlton/match-compile/sources.cm M mlton/mlton-smlnj.cm M mlton/sources.cm M mlton/ssa/sources.cm M mlton/xml/sources.cm Log Message: ----------- Merge pull request #339 from MatthewFluet/smlnj-updates Updates for SML/NJ build Compare: https://github.com/MLton/mlton/compare/6bf311aef8cc...8a130836ee27 |
From: Matthew F. <no...@gi...> - 2019-11-01 12:39:06
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 2bcff6496ca846c5d0f3f6a3577f061dacc28cc2 https://github.com/MLton/mlton/commit/2bcff6496ca846c5d0f3f6a3577f061dacc28cc2 Author: Matthew Fluet <mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M mlton/closure-convert/closure-convert.fun Log Message: ----------- Use function name with `Env` for constructor in `ClosureConvert` Commit: 6bf311aef8cccdedd991fe5d75553e312bbb3e98 https://github.com/MLton/mlton/commit/6bf311aef8cccdedd991fe5d75553e312bbb3e98 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M mlton/closure-convert/closure-convert.fun Log Message: ----------- Merge pull request #338 from MatthewFluet/closure-convert-env-constr Use function name with `Env` for constructor in `ClosureConvert` Compare: https://github.com/MLton/mlton/compare/ac7730c57cbd...6bf311aef8cc |
From: Matthew F. <no...@gi...> - 2019-11-01 10:29:33
|
Branch: refs/heads/master Home: https://github.com/MLton/mlton Commit: 90032461e416b84483cdbf4459290470f9be6a0b https://github.com/MLton/mlton/commit/90032461e416b84483cdbf4459290470f9be6a0b Author: Matthew Fluet <mat...@gm...> Date: 2019-10-29 (Tue, 29 Oct 2019) Changed paths: M .travis.yml Log Message: ----------- Fix build config validation info messages Commit: efbcea95e7be28401f58781d7d7a53d4468ad3c6 https://github.com/MLton/mlton/commit/efbcea95e7be28401f58781d7d7a53d4468ad3c6 Author: Matthew Fluet <mat...@gm...> Date: 2019-10-29 (Tue, 29 Oct 2019) Changed paths: M .travis.yml Log Message: ----------- Explicitly set `arch: amd64` in `.travis.yml` Commit: ac7730c57cbde117a9564d76a73ac904b79fc755 https://github.com/MLton/mlton/commit/ac7730c57cbde117a9564d76a73ac904b79fc755 Author: Matthew Fluet <Mat...@gm...> Date: 2019-11-01 (Fri, 01 Nov 2019) Changed paths: M .travis.yml Log Message: ----------- Merge pull request #337 from MatthewFluet/travis-ci-updates Updates for TravisCI build config validation See https://docs.travis-ci.com/user/build-config-validation Compare: https://github.com/MLton/mlton/compare/09dbffa31d3f...ac7730c57cbd |