This is a follow-up to 276f8da076, where `(%tc-ref cp)` was preserved
by moving into `%cp`, but I missed that intrinisics for string and
bytevector arguments kill `%cp`.
original commit: aa230ac79bed1efa02779bb7bbcde5c009818b74
Fix nested-loop handling with union find, and fix unboxing check
to properly account for a primitive's arity.
original commit: af2f8784d96f09624b97476fb7b674a77097f9d0
Preinfo recoreds were mutated under the incorrect assumption that they
were specific to a `lambda` form, which is not true, especially after
some inlining.
original commit: 489b4c732d7359b1c7c4558d41d5e6ba3a9abafa
The problem especially affects `enable-object-counts`, where mark mode
can update an old rtd instead of a copy that is already made.
original commit: 31e2df63894d39b005c6b9984745b44409198d02
Avoid allocating a flonum object for floating-opint calculations
that are consumed only by other floating-point caculations.
For this first cut, unboxing applies only to fl+, fl-, fl*, fl/,
flabs, fl<, fl<=, fl=, fl>, fl>=, bytevector-ieee-double-[native-]ref,
and bytevector-ieee-double-[native-]set!. Local variables can be
unboxed in the same way as implicit temporaries, and loop arguments
can be unboxed, but values in a closure and function-call arguments
are always boxed.
arm32 support is mostly in place, but not yet right. ppc32 support is
not yet implemented.
This commit includes a small change that is incompatible with previous
Chez Scheme versions: `(fl= +nan.0)` (and similar for other
comparisons) produces true instead of false.
original commit: 36459e43f10705aa3e383376ca7d54cf2998b7ee
Kent noticed the bug, where `make-nontail` used `ignored` where it
should have used `effect`. Also, Kent points out that `make-nontail`
can skip the `$values` wrapped in `effect` contexts in unsafe mode.
original commit: edd9ba3d656f3bd712e5e235b77225f756397077
Add testing for non-threaded x86_64, and i386 versions and remove references to travis_fold directives in testing.
original commit: 441cdb166081e96eaecd513d5f13a8796fd451b4
* Fix calculation of segment index for 32-bit platforms
* Fix allocation of mark-bit and list-bit arrays in certain unusual
cases.
* Fix dirty sweep of records on marked pages that have non-pointer
fields.
* Fix allocation of eveen-sized immobile vectors; a pad word needs to
be cleared.
* Fix and extend the heap checker (which was used to find several of
the other problems).
original commit: 8b5e65f5eafac5aea7394901e1dd2f2fc3ccf2bd
Commit 68b2f597ec moved the argument from RDI to RCX, but the
`popcount-slow` function wasn't updated.
Related to racket/racket#3150
original commit: 80ffa4eea197a885cd647fcfb76dda720b64781d
Part of the repair makes it ok to re-sweep an ephemeron, which is more
consistent with evertything else.
original commit: 2c11bb39129b1492108390a704eb08deaa5d6bcc
The C compiler doesn't generate a tail call in a place where I
expected one, and maybe it's better to branch at the call site anyway.
original commit: 70fa8e7f7bd891c548c877cabdd15073aa2aa01b