Commit Graph

96 Commits

Author SHA1 Message Date
Matthew Flatt
0c55348453 Merge branch 'fdstart' of github.com:mflatt/ChezScheme
original commit: 67f4cfc11da128038a7d631b77af8909a8901247
2018-01-15 19:40:49 -07:00
Matthew Flatt
1f77eaf2af add load-compiled-from-port and Sregister_boot_file_fd
original commit: 0865b4637fce16079cb9ad8d3eb6211f1bf08c9f
2018-01-15 19:39:20 -07:00
Andy Keep
ef497bf210 Merge branch 'bounds' of https://github.com/mflatt/ChezScheme into mflatt-bounds
original commit: b619c426142eaa8ae410138e17d16bd1e7f133e9
2018-01-15 13:10:29 -05:00
Andy Keep
3cedf42ed2 - added tests to ensure the optimize-level version 2 of map and for-each raise
a non-procedure exception when the first argument is not a procedure, even
  when the rest of the program is compiled at optimize level 3.
    4.ms, root-experr-compile-0-f-f-f, patch-compile-0-t-f-f,
    patch-compile-0-f-t-f, patch-interpret-0-f-t-f, patch-interpret-0-f-f-f,
    patch-interpret-3-f-t-f, patch-interpret-3-f-f-f

original commit: 7916447d1a482ec91ae63927692053d727d9b459
2018-01-15 13:07:23 -05:00
Matthew Flatt
ca082aa7e8 Merge branch 'bounds' of github.com:mflatt/ChezScheme
original commit: fc9b765ed576903919e09f676612359bbbf2231f
2018-01-07 09:18:24 -07:00
Matthew Flatt
1dba8c4624 fix bounds check on immutables values and an immediate index
original commit: fc064b5b91bc5c7da8b7c71441a37e3c05523986
2018-01-07 08:48:57 -07:00
Matthew Flatt
f4f0bfff11 Merge branch 'genid' of github.com:mflatt/ChezScheme
original commit: bd3c746343c6850ed62eb5fcd2674292e4480fa4
2018-01-04 18:47:47 -07:00
Matthew Flatt
3526ab71fa add expand-omit-library-invocations
original commit: 35dbfdaa9ea3832f2ded108b7edcaead61922007
2018-01-04 18:32:27 -07:00
Matthew Flatt
cf87f8c4f6 add current-generate-id
original commit: be555fa7605f17f8613b1c02fe9f5e187a7cfeb9
2018-01-04 18:32:27 -07:00
Bob Burger
350f87ba4d fix bug in date->time-utc caused by incorrect use of difftime in Windows
original commit: 4748dad50c7f0e9b3ba002c27990d4c88c0189fc
2017-12-29 16:48:30 -05:00
Matthew Flatt
9a51376b5a even? and odd?: reject exceptional flonums, since they're not integers
original commit: 94a28793313c714520635bd09359ef8bde2d52a8
2017-12-28 17:00:04 -06:00
Matthew Flatt
c40206fb7a Merge branch 'evenodd' of github.com:mflatt/ChezScheme
original commit: 6f1447cce5be0c105e925197b6f5afab1d5205a2
2017-12-28 07:05:19 -06:00
Matthew Flatt
a092b4d404 even? and odd?: reject exceptional flonums, since they're not integers
original commit: 550c5dd04c102cb11f4f91fda867148d3888f11b
2017-12-28 06:43:36 -06:00
Gustavo Massaccesi
dc0be2bfbe fix mat of substring-fill!
after the recent change, the result of substring-fill! is void
  5_5.ms

original commit: a2cd9856be74008cc23b6ca3476339e79a1cd5ff
2017-12-15 19:28:43 -03:00
Matthew Flatt
33d037f6a6 Merge branch 'procloc' of github.com:mflatt/ChezScheme
original commit: 552758ee584d142f5e92612676869cd4fde64ede
2017-12-06 08:37:50 -07:00
Matthew Flatt
9f1f5b793f add generate-procedure-source-information
original commit: 45df1f3a517c040a45aaea8f0bd4c9d859310187
2017-12-05 20:40:22 -07:00
Matthew Flatt
74dbc7d6f5 Merge branch 'arity-wrapper' of github.com:mflatt/ChezScheme
original commit: 3694a08fedfaf7e00eb52c1bbb55ce6df3e081e4
2017-12-02 08:27:01 -07:00
Matthew Flatt
4c2528653e add make-arity-wrapper-procedure
A program can use `make-arity-wrapper-procedure` to synthesize a
function that reports a given arity mask (without calling `compile`).

In addition, `set-arity-wrapper-procedure!` suports modifying the
implementation of a synthesized procedure. Although similar
functionality could be achieved with `(lambda args (apply (unbox proc)
args))`, an arity wrapper procedure can dispatch to another procedure
without allocating a list for the arguments.

The interpreter now uses an internal variant of arity wrappers to
cooperate with `procedure-arity-mask`.

original commit: 295255a326afbf3f120f95c2ccc6e95b74fdd5e2
2017-12-02 08:24:42 -07:00
Matthew Flatt
bb1a3b0c45 Merge branch 'cas' of github.com:mflatt/ChezScheme
original commit: d9a3e7a9906649406673f49c951137db2a94de8c
2017-11-14 11:18:28 -07:00
Matthew Flatt
93c36a5d38 Merge branch 'fp-struct' of github.com:mflatt/ChezScheme
original commit: 8516339dcdacc19bfb451039e0b31146dc5b3a04
2017-11-14 11:17:36 -07:00
Matthew Flatt
682985ebea Merge branch 'orderfnl' of github.com:mflatt/ChezScheme
original commit: 8a40efa133c07dede4d8ed78f0bdd54625c1fb90
2017-11-14 11:16:44 -07:00
Matthew Flatt
0356a56eae support struct args to foreign procedures
Intermediate version: converting to use stack allocation
for `&` arguments and results in a callable, only x86_64
and x86 updated so far.

original commit: 645e1ec56376548cdef1849ba7ff2f56a926af45
2017-11-14 10:47:36 -07:00
Matthew Flatt
b796bc6719 add box-cas! and vector-cas!
original commit: d5cd34c1497541c71c8b746d5db6b3e35ee717e5
2017-11-13 07:04:15 -07:00
dyb
893dfe5d35 maybe-compile-{file,program,library} and automatic import
compilation now treat a malformed object file as if it were
not present and needs to be regenerated.  A malformed object
file (particularly a truncated one) might occur if the compiling
processes is killed or aborts before it has a chance to delete
a partial object file.
  syntax.ss,
  7.ms

original commit: c2cb8c79a925c0eb2f9d589e3a497712800bd1dc
2017-11-07 21:49:08 -05:00
dyb
59d2ca053c Merge branch 'master' of github.com:cisco/chezscheme
original commit: 5cfeee1f12507b70a1aa9fe1fd2094c8ff592bca
2017-10-30 21:02:54 -04:00
dyb
64b0db8e30 fixed gather-filedata's sort of profile entries. for any two
entries x and y in the list produced by the sort call, if x's
bfp = y's bfp, x should come before y if x's efp < y's efp.
The idea is that enclosing entries should always come later
in the list.  this affects only languages where two expressions
can start at the same character position.
  pdhtml.ss
expanded capability of ez-grammar with support for simpl
parsing of binary operators w/precedence and associativity
and automatically generated markdown grammar descriptions.
ez-grammar-test.ss now also doubles as a test of pdhtml for
algebraic languages.
  mats/examples.ms,
  examples/ez-grammar.ss, examples/ez-grammar-test.ss,
  examples/Makefile

original commit: 53b8d16a1e86f3956585dbec0c7b573e485f7844
2017-10-30 21:01:43 -04:00
Bob Burger
029fe628f3 updated newrelease to handle mats/Mf-*nt
original commit: 02a321479626d2a9e9f5ee0d5b4862eaed4859c8
2017-10-30 17:32:37 -04:00
dyb
9b6b6d32ee attempt to stabilize timing tests let-values source-caching
test and ephemeron gc test while resensitizing the former
  8.ms, 4.ms
various formatting and comment corrections
  workarea,
  s/Mf-base, bytevector.ss, cpnanopass.ss, date.ss,
  5_6.ms, examples.ms

original commit: 19e2505fc6477fce2d1d0e61187bd504b58ea994
2017-10-29 17:48:43 -04:00
dyb
983e8b6c00 Numerous changes to improve register/frame allocation speed for
procedures with large numbers of variables:
- added pass-time tracking for pre-cpnanopass passes to compile.
    compile.ss
- added inline handler for fxdiv-and-mod
    cp0.ss, primdata.ss
- changed order in which return-point operations are done (adjust
  sfp first, then store return values, then restore local saves) to
  avoid storing return values to homes beyond the end of the stack
  in cases where adjusting sfp might result in a call to dooverflood.
    cpnanopass.ss, np-languages.ss
- removed unused {make-,}asm-return-registers bindings
    cpnanopass.ss
- corrected the max-fv value field of the lambda produced by the
  hand-coded bytevector=? handler.
    cpnanopass.ss
- reduced live-pointer and inspector free-variable mask computation
  overhead
    cpnanopass.ss
- moved regvec cset copies to driver so they aren't copied each
  time a uvar is assigned to a register.  removed checks for
  missing register csets, since registers always have csets.
    cpnanopass.ss
- added closure-rep else clause in record-inspector-information!.
    cpnanopass.ss
- augmented tree representation with a constant representation
  for full trees to reduce the overhead of manipulating trees or
  subtress with all bits set.
    cpnanopass.ss
- tree-for-each now takes start and end offsets; this cuts the
  cost of traversing and applying the action when the range of
  applicable offsets is other than 0..tree-size.
    cpnanopass.ss
- introduced the notion of poison variables to reduce the cost of
  register/frame allocation for procedures with large sets of local
  variables.  When the number of local variables exceeds a given
  limit (currently hardwired to 1000), each variable with a large
  live range is considered poison.  A reasonable set of variables
  with large live ranges (the set of poison variables) is computed
  by successive approximation to avoid excessive overhead.  Poison
  variables directly conflict with all spillables, and all non-poison
  spillables indirectly conflict with all poison spillables through
  a shared poison-cset.  Thus poison variables cannot live in the
  same location as any other variable, i.e., they poison the location.
  Conflicts between frame locations and poison variables are handled
  normally, which allows poison variables to be assigned to
  move-related frame homes.  Poison variables are spilled prior to
  register allocation, so conflicts between registers and poison
  variables are not represented.  move relations between poison
  variables and frame variables are recorded as usual, but other
  move relations involving poison variables are not recorded.
    cpnanopass.ss, np-languages.ss
- changed the way a uvar's degree is decremented by remove-victim!.
  instead of checking for a conflict between each pair of victim
  and keeper and decrementing when the conflict is found, remove-victim!
  now decrements the degree of each var in each victim's conflict
  set.  while this might decrement other victims' degrees unnecessarily,
  it can be much less expensive when large numbers of variables are
  involved, since the number of conflicts between two non-poison
  variables should be small due to the selection process for
  (non-)poison variables and the fact that the unspillables introduced
  by instruction selection should also have few conflicts.  That
  is, it reduces the worst-case complexity of decrementing degrees
  from O(n^2) to O(n).
    cpnanopass.ss
- took advice in compute-degree! comment to increment the uvars in
  each registers csets rather than looping over the registers for
  each uvar asking whether the register conflicts with the uvar.
    cpnanopass.ss
- assign-new-frame! now zeros out save-weight for local saves, since
  once they are explicitly saved and restored, they are no longer
  call-live and thus have no save cost.
    cpnanopass.ss
- desensitized the let-values source-caching timing test slightly
    8.ms
- updated allx, bullyx patches
    patch*

original commit: 3a49d0193ae57b8e31ec6a00b5b49db31a52373f
2017-10-27 23:16:47 -04:00
dyb
09366c6247 - the $case macro used by r6rs:case and case now unconditionally trims
redundant keys and expands into exclusive-cond rather than cond.
  it catches references to => before expanding into exclusive-cond
  to avoid supporting => as an undocumented and useless extension
  of the case syntax.  the r6rs:case and case macros now require
  multiple clauses rather than leaving the enforcement to exclusive-cond,
  and the exclusive-cond macro now requires multiple clauses rather
  than leaving the enforcement to cond.
    syntax.ss,
    4.ms, root-experr*, patch*

original commit: 303921d8515b101c558a056dcf9c05f7cad97f4a
2017-10-13 14:33:32 -04:00
dyb
e7fd8172a0 - Added setting of CHEZSCHEMELIBDIRS to s and mats make files so that
an existing setting will not interfere with the build process, and
  added a note to BUILDING that CHEZSCHEMELIBDIRS should be unset in
  Version 9.5 and before.
    s/Mf-base, mats/Mf-base, BUILDING

original commit: 1cccd56693911a38ece784da677e35f724950700
2017-10-12 09:47:58 -04:00
Gustavo Massaccesi
070dd62d0d fix cp0 reduction of fx[+-*]/carry and their signatures
cp0.ss
  primdata.ss
  fx.ms

original commit: 8c0ec93c9eb16bae8a920bb9b5e2f9d3e96ed250
2017-10-09 12:09:50 -03:00
Andy Keep
c854ef9ab7 - fixed np-normalize-context pass to process trivs list in mvset forms
in tail and predicate context and added regression tests.  Thanks to
  @marcomaggi for reporting the bug and @yjqww6 for providing a
  simplified test and finding the initial solution.
    cpnanopass.ss,
    3.ms

original commit: 28f31d84b6c45e2fa701655e9131801dd603d925
2017-08-31 23:24:14 -04:00
Matthew Flatt
0b8de12c66 repairs and reduced code duplication
Fixes problems that Kent pointed out, and tries a macro
instead of duplicating the source for sweeping records.

original commit: a6796ba13da33ec9f765d6129cfc26cc38f48ffc
2017-08-13 17:12:00 -06:00
Bob Burger
5c5bdcd841 added support for Microsoft Visual Studio 2017 on Windows
updated ez-grammar-test to write temp files to current directory and delete them when finished

original commit: 89885b73d679759de9c62bab0b407318df123d6f
2017-08-11 13:10:37 -04:00
dybvig
ff64811604 - added "ez-grammar" example program
examples/ez-grammar.ss, examples/ez-grammar-test.ss,
    examples/Makefile, examples.ms

original commit: dd0dec63e7c333d2edc51e7340a8b14e7e3d130b
2017-08-08 22:04:52 -04:00
Bob Burger
7ba018bd41 fixed broken mats on Windows caused by Bash/WSL changes
original commit: 996ba3897f1c4ea27b4b6a15264dc6f6a14c6cdb
2017-08-03 11:51:16 -04:00
Matthew Flatt
9d8cc87758 add locate-source cache and line+column components to source objects
Add optional beginning-line and beginning-column components to a
source object, so that line and column information can be recorded
independent of the file. Add `locate-source-object-source` to use
the recorded information. Add a cache for `locate-source` as enabled by
the `use-cache?` optional argument, which can avoid compilation times
that are quadratic in the number of `let-values` or `define-values`
forms.

original commit: b36fab81d5041a54ce01a422395eee79d2f930bc
2017-08-01 05:23:56 -06:00
Matthew Flatt
274322e06d fix (define-values () ....) to expand to a definition
Expanding to a definition means that it doesn't interrupt a definition
sequence.

original commit: c2d8a2fdc6ef40c5eba15904d6203032dc6f555e
2017-07-16 17:04:54 -06:00
dybvig
35590cea2b - fixed pariah mat
misc.ms

original commit: 271eae05086b2299529acf039a638543796e16a9
2017-07-12 13:25:25 -04:00
R. Kent Dybvig
15e7c4ae4d Merge branch 'master' into ht
original commit: 2cca8117b8b38ac6369f8c75055e7aa6f7cfc47e
2017-07-12 12:47:43 -04:00
Gustavo Massaccesi
be3e357aae don't remove the pariah form in the cp0 pass
cp0.ss
  misc.ms

original commit: d6a1b8a9208d78bb8d216d9381546a6723fe5b9e
2017-07-10 17:10:19 -03:00
Matthew Flatt
6540074db0 fix ordered-guardian handling of immediate self-references
original commit: 6b55b494c5b47f306ad3a13b3d6f851bde4aa0dc
2017-07-09 08:09:49 -06:00
Matthew Flatt
9144829de9 add ordered guardians
Also, avoid quadratic time in GC for guardian chains.

original commit: 4f8c9d31395637557eec41e4fcb16ff71c6618da
2017-07-07 22:38:23 -06:00
Matthew Flatt
839c4ce6b4 update test patch files
original commit: 486a2e2d9f98e912a2a0f0bf4f908e079383b93f
2017-07-06 20:45:18 -06:00
Matthew Flatt
59c772ba48 add make-ephemeron-eq-hashtable, etc.
Revert the use of ephemeron pairs in weak hashtables, since the
difference is visible via guardians. Add hashtable based on ephemerons
(to avoid key-in-value problems) as an explicit variant.

original commit: 31ac6d78592e1a9ba6bfbe802260e3d56d4cf772
2017-07-06 16:27:23 -06:00
Matthew Flatt
1932612543 add bytevector-compress and bytevector-decompress
original commit: aa062c09c9f0d129250db84aeb0a5190647c5574
2017-06-21 17:52:28 -06:00
Andy Keep
f98a42fa1a fix reference to libc.so to be libc.so.7 for FreeBSD (machine types i3fb, ti3fb, a6fb, ta6fb)
foreign.ms

original commit: 1de3815f2c555622dccd390150c1fabeca981486
2017-06-15 23:33:01 -04:00
Bob Burger
f2a40d192b Merge branch 'wsl' of git://github.com/mflatt/ChezScheme into master
# Conflicts:
#	LOG

original commit: 178f8c5bedb94acb1b81eac8d6ebe897142f42d1
2017-06-16 11:50:54 -04:00
dyb
dacb66ac72 fixed a bug in flonum-extractor, which on 64-bit machines was using an
8-byte read instead of a 4-byte read to pick up the 4 highest-order
bytes of a little-endian flonum, potentially reading past the end of
mapped memory for flonums produced by taking the imaginary part of an
inexact complexnum (which, unlike other flonums, are not aligned on
16-byte boundaries).  The 8-byte load would also have failed to produce
correct results on 64-bit big-endian machines (of which we presently
have none) because the offsets passed to flonum-extractor assume the
bits are in the lowest-order 4 bytes of the extracted field.
  cp0.ss,
  misc.ms,
  release_notes.stex

original commit: 97bd75bcedbcf32b77c59615a638ea1528ebe26b
2017-06-09 21:21:08 -04:00