racket/mats
dybvig f7c414bda3 Various updates, mostly to the compiler, including a new lambda
commonizatio pass and support for specifying default record
equal and hash procedures:

- more staid and consistent Mf-cross main target
    Mf-cross
- cpletrec now replaces the incoming prelexes with new ones so
  that it doesn't have to alter the flags on the incoming ones, since
  the same expander output is passed through the compiler twice while
  compiling a file with macro definitions or libraries.  we were
  getting away without this just by luck.
    cpletrec.ss
- pure? and ivory? now return #t for a primref only if the prim is
  declared to be a proc, since some non-proc prims are mutable, e.g.,
  $active-threads and $collect-request-pending.
    cp0.ss
- $error-handling-mode? and $eol-style? are now properly declared to
  be procs rather than system state variables.
    primdata.ss
- the new pass $check-prelex-flags verifies that prelex referenced,
  multiply-referenced, and assigned flags are set when they
  should be.  (it doesn't, however, complain if a flag is set
  when it need not be.)  when the new system parameter
  $enable-check-prelex-flags is set, $check-prelex-flags is
  called after each major pass that produces Lsrc forms to verify
  that the flags are set correctly in the output of the pass.
  this parameter is unset by default but set when running the
  mats.
    cprep.ss, back.ss, compile.ss, primdata.ss,
    mats/Mf-base
- removed the unnecessary set of prelex referenced flag from the
  build-ref routines when we've just established that it is set.
    syntax.ss, compile.ss
- equivalent-expansion? now prints differences to the current output
  port to aid in debugging.
    mat.ss
- the nanopass that patches calls to library globals into calls to
  their local counterparts during whole-program optimization now
  creates new prelexes and sets the prelex referenced, multiply
  referenced, and assigned flags on the new prelexes rather than
  destructively setting flags on the incoming prelexes.  The
  only known problems this fixes are (1) the multiply referenced
  flag was not previously being set for cross-library calls when
  it should have been, resulting in overly aggressive inlining
  of library exports during whole-program optimization, and (2)
  the referenced flag could sometimes be set for library exports
  that aren't actually used in the final program, which could
  prevent some unreachable code from being eliminated.
    compile.ss
- added support for specifying default record-equal and
  record-hash procedures.
    primdata.ss, cmacros.ss, cpnanopass.ss, prims.ss, newhash.ss,
    gc.c,
    record.ms
- added missing call to relocate for subset-mode tc field, which
  wasn't burning us because the only valid non-false value, the
  symbol system, is in the static generation after the initial heap
  compaction.
    gc.c
- added a lambda-commonization pass that runs after the other
  source optimizations, particularly inlining, and a new parameter
  that controls how hard it works.  the value of commonization-level
  ranges from 0 through 9, with 0 disabling commonization and 9
  maximizing it.  The default value is 0 (disabled).  At present,
  for non-zero level n, the commonizer attempts to commonize
  lambda expressions consisting of 2^(10-n) or more nodes.
  commonization of one or more lambda expressions requires that
  they have identical structure down to the leaf nodes for quote
  expressions, references to unassigned variables, and primitives.
  So that various downstream optimizations aren't disabled, there
  are some additional restrictions, the most important of which
  being that call-position expressions must be identical.  The
  commonizer works by abstracting the code into a helper that
  takes the values of the differing leaf nodes as arguments.
  the name of the helper is formed by concatenating the names of
  the original procedures, separated by '&', and this is the name
  that will show up in a stack trace.  The source location will
  be that of one of the original procedures.  Profiling inhibits
  commonization, because commonization requires profile source
  locations to be identical.
    cpcommonize.ss (new), compile.ss, interpret.ss, cprep.ss,
    primdata.ss, s/Mf-base,
    mats/Mf-base
- cpletrec now always produces a letrec rather than a let for
  single immutable lambda bindings, even when not recursive, for
  consistent expand/optimize output whether the commonizer is
  run or not.
    cpletrec.ss,
    record.ms
- trans-make-ftype-pointer no longer generates a call to
  $verify-ftype-address if the address expression is a call to
  ftype-pointer-address.
    ftype.ss

original commit: b6a3dcc814b64faacc9310fec4a4531fb3f18dcd
2018-01-29 09:20:07 -05:00
..
3.ms - fixed np-normalize-context pass to process trivs list in mvset forms 2017-08-31 23:24:14 -04:00
4.ms - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
5_1.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
5_2.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
5_3.ms even? and odd?: reject exceptional flonums, since they're not integers 2017-12-28 17:00:04 -06:00
5_4.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
5_5.ms fix bounds check on immutables values and an immediate index 2018-01-07 08:48:57 -07:00
5_6.ms fix bounds check on immutables values and an immediate index 2018-01-07 08:48:57 -07:00
5_7.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
5_8.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
6.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
7.ms maybe-compile-{file,program,library} and automatic import 2017-11-07 21:49:08 -05:00
8.ms attempt to stabilize timing tests let-values source-caching 2017-10-29 17:48:43 -04:00
bytevector.ms fix bounds check on immutables values and an immediate index 2018-01-07 08:48:57 -07:00
cat_flush.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
cfl.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
cp0.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
date.ms fix bug in date->time-utc caused by incorrect use of difftime in Windows 2017-12-29 16:48:30 -05:00
enum.ms enum-set-indexer procedure now checks for a symbol, changed "isn't" to "is not" for consistency 2017-05-05 15:22:46 -04:00
examples.ms fixed gather-filedata's sort of profile entries. for any two 2017-10-30 21:01:43 -04:00
exceptions.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
fl.ms even? and odd?: reject exceptional flonums, since they're not integers 2017-12-28 17:00:04 -06:00
foreign.ms fix reference to libc.so to be libc.so.7 for FreeBSD (machine types i3fb, ti3fb, a6fb, ta6fb) 2017-06-15 23:33:01 -04:00
foreign1.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
foreign2.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
foreign3.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
format.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
freq.in initial upload of open-source release 2016-04-26 10:04:54 -04:00
freq.out initial upload of open-source release 2016-04-26 10:04:54 -04:00
ftype.h changed copyright year to 2017 2017-04-06 11:41:33 -04:00
ftype.ms added support for Microsoft Visual Studio 2017 on Windows 2017-08-11 13:10:37 -04:00
fx.ms fix cp0 reduction of fx[+-*]/carry and their signatures 2017-10-09 12:09:50 -03:00
hash.ms add make-ephemeron-eq-hashtable, etc. 2017-07-06 16:27:23 -06:00
ht.ss changed copyright year to 2017 2017-04-06 11:41:33 -04:00
ieee.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
io.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
m4test.in changed copyright year to 2017 2017-04-06 11:41:33 -04:00
m4test.out initial upload of open-source release 2016-04-26 10:04:54 -04:00
mat.ss Various updates, mostly to the compiler, including a new lambda 2018-01-29 09:20:07 -05:00
Mf-a6fb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-a6le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-a6nb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-a6nt updated newrelease to handle mats/Mf-*nt 2017-10-30 17:32:37 -04:00
Mf-a6ob changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-a6osx changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-a6s2 changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-arm32le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-base Various updates, mostly to the compiler, including a new lambda 2018-01-29 09:20:07 -05:00
Mf-i3fb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-i3le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-i3nb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-i3nt updated newrelease to handle mats/Mf-*nt 2017-10-30 17:32:37 -04:00
Mf-i3ob changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-i3osx changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-i3qnx changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-i3s2 changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ppc32le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ta6fb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ta6le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ta6nb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ta6nt updated newrelease to handle mats/Mf-*nt 2017-10-30 17:32:37 -04:00
Mf-ta6ob changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ta6osx changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ta6s2 changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ti3fb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ti3le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ti3nb changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ti3nt updated newrelease to handle mats/Mf-*nt 2017-10-30 17:32:37 -04:00
Mf-ti3ob changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ti3osx changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-ti3s2 changed copyright year to 2017 2017-04-06 11:41:33 -04:00
Mf-tppc32le changed copyright year to 2017 2017-04-06 11:41:33 -04:00
misc.ms - fixed pariah mat 2017-07-12 13:25:25 -04:00
oop.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
oop.ss initial upload of open-source release 2016-04-26 10:04:54 -04:00
patch-compile-2-f-f-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-2-f-t-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-2-f-t-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-2-t-f-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-2-t-f-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-2-t-t-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-2-t-t-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-3-f-f-t initial upload of open-source release 2016-04-26 10:04:54 -04:00
patch-compile-3-f-t-f initial upload of open-source release 2016-04-26 10:04:54 -04:00
patch-compile-3-f-t-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-3-t-f-f initial upload of open-source release 2016-04-26 10:04:54 -04:00
patch-compile-3-t-f-t initial upload of open-source release 2016-04-26 10:04:54 -04:00
patch-compile-3-t-t-f initial upload of open-source release 2016-04-26 10:04:54 -04:00
patch-compile-3-t-t-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-0-f-f-t Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
patch-compile-0-f-t-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
patch-compile-0-f-t-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-compile-0-t-f-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
patch-compile-0-t-f-t Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
patch-compile-0-t-t-f Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
patch-compile-0-t-t-t Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-interpret-2-f-f-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-interpret-2-f-t-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-interpret-2-t-f-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-interpret-2-t-t-f Add date-dst? and date-zone-name procedures 2017-06-08 11:21:39 -04:00
patch-interpret-3-f-f-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
patch-interpret-3-f-t-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
patch-interpret-3-t-f-f Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
patch-interpret-3-t-t-f Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
patch-interpret-0-f-f-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
patch-interpret-0-f-t-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
patch-interpret-0-t-f-f Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
patch-interpret-0-t-t-f Numerous changes to improve register/frame allocation speed for 2017-10-27 23:16:47 -04:00
primvars.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
record.ms Various updates, mostly to the compiler, including a new lambda 2018-01-29 09:20:07 -05:00
root-experr-compile-2-f-f-f even? and odd?: reject exceptional flonums, since they're not integers 2017-12-28 17:00:04 -06:00
root-experr-compile-3-f-f-f initial upload of open-source release 2016-04-26 10:04:54 -04:00
root-experr-compile-0-f-f-f - added tests to ensure the optimize-level version 2 of map and for-each raise 2018-01-15 13:07:23 -05:00
thread.ms mutexes and conditions are now freed when no longer used 2017-04-13 09:41:58 -04:00
unix.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
vs.bat support Windows build on Bash/WSL 2017-05-02 08:25:09 -06:00
windows.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00