Commit graph

13 commits

Author SHA1 Message Date
Stas Boukarev 7bc62d6494 Don't change verify_gens in tests. 2025-10-22 05:36:49 +03:00
Stas Boukarev 5ee22d2662 Fix adjacent gc barriers elimination.
impart_mark_stickiness skipped pointers into gen 0, which is fine if
both the value and the object are allocated before the card mark is
stored. Eliminating a barrier may insert an allocation sequence
between two stores, which may cause the value and the object to have
different generations.
The extra cost of looking at more card marks should not be significant
and reducing code size and performance of consequent stores is
valuable.
2025-05-01 17:53:15 +03:00
Douglas Katzman 38c8441dda Fix all regression tests for #+(and mark-region-gc permgen) 2024-01-24 21:34:05 -05:00
Stas Boukarev 3a0b759a1c Disable more tests for --gc-stress 2023-12-01 22:54:11 +03:00
Douglas Katzman 60841929fe Remove and/or rename a lot of #+gencgc
The C runtime will soon need to support the new mark-region collector which
is generational in nature with the identical heap structure as gencgc.
For clarity's sake, :GENCGC will refer to the specific implementation
contained in the file gencgc.c, whereas :GENERATIONAL shall imply either
gencgc or :MARK-REGION-GC without having to spell the (OR ...) everywhere.
The new feature name is not perfect- there could exist an incompatible
generational GC. Deal with that later, if ever.

That said, a few techniques were used in changing featureization:
- If it was code we would like to work on any GC, then delete the conditional.
  Later, conditional code could be re-added if something can't be made to work
  for whatever different GC is implemented.
- If it was something such as GENERATION-OF we'd like to remember not to allow
  to be called with a non-generational collector, add #+generational.
- If something was #-gencgc but meant "#+cheneygc" then either change to that
  or delete the code. Retained dead code is a hint to where subsequent changes
  might be required if not obvious, for example the compiler's decision about
  L-T-V and value-cells. Absence of a feature marker could leave you wondering.
- No machine-dependent files were touched, as the mark-region collector
  will support only x86-64 at present.

(I don't always write long commit messages, but when I do, they concern
multiple work-in-progress GC implementations.)
2023-08-09 11:17:20 -04:00
Stas Boukarev 4e3f3a2bdb Disable gc-cardmark.impure on darwin-x86-64
I can't make the .c file to compile.
2023-07-17 18:27:50 +03:00
Stas Boukarev 9507486cef Fix a test on macos x86* 2023-07-17 10:44:15 +03:00
Stas Boukarev a2c61499ae Enable immobile-space on windows. 2022-11-01 00:10:33 +03:00
Charles Zhang d2dfc28298 Remove OPAQUE-BOX and friends.
This partially reverts 369a4c8cf3. It is
actually possible to do what :IGNORE-IT used to do in totally plain
and conforming Lisp code, by having a null load form. Thus we bring
back :IGNORE-IT but only as a convenient macro shortcut, not as the
magic non-conformant hack it used to be. A null load form would not
have actually worked in the past, because of the ancient (going as far
back as the introduction of make-load-form support in CMU CL) bug
fixed in 71e0191458. What OPAQUE-BOX
really accomplished was just preventing the literal processing code to
recurse through the substructure, but we never should have done that
in the first place outside of the MAKE-LOAD-FORM-SAVING-SLOTS =>
DUMP-STRUCTURE case.  (Or when the creation and init forms actually
have subpart references.)

Advantages of the "new" scheme include:
* Localizing the structures that shouldn't be dumped to the make load
form method, which makes sense.
* Decreased maintenance burden from having to figure out how to thread
OPAQUE-BOX and OPAQUELY-QUOTE, when it is much easier to just declare
that a structure doesn't need to be grovelled or dumped.
* Possible extension to structures which are not as amenable to opaque
quoting, thereby allowing potentially more DEF!STRUCTs to get removed.
2022-03-01 18:38:42 -08:00
Douglas Katzman f855a704dc Enable gc-cardmark test for #+darwin 2022-02-09 08:55:13 -05:00
Douglas Katzman bc7bcc2ae8 Disable some tests for cheneygc 2022-02-07 15:39:01 -05:00
Douglas Katzman 322cc78e76 Deflake gc-cardmark test 2022-02-07 10:34:05 -05:00
Douglas Katzman bac0a6fab2 Turn gc.impure-cload into an actually effective test
I'm unsure if was actually testing anything any more.
The new test directly asserts what it needs, which is that cleaning
a card sees the high half of an instance (or funinstance) header word.
2022-02-06 22:00:15 -05:00