1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-12 01:42:37 -07:00
emacs/mps/test/function
Helmut Eller cc1aa65f17 Add a pool for ephemerons
Ephemerons solve the key-in-value problem for weak key/value pairs.  It
seems that it's not possible to solve that problem with weak pointers or
finalizers.  Basically we want a weak key/value pair that implements the
rule:

  The value is reachable, if the key is reachable.

The key-in-value problem occurs if all paths to the key go through the
value.  In this situation, the key is considered reachable only if the
value is "externally reachable", i.e. the value is reachable through a
path other than through the weak pair.

Such weak pairs seem to need an extra phase in the GC algorithm.  See
[1] for some variants of the algorithm.

https://www.haible.de/bruno/papers/cs/weak/WeakDatastructures-writeup.html

* mps/code/mpmst.h (SegStruct): Add fields propagationNeeded,
marksChanged, and propagationFinished.
* mps/code/mpmtypes.h (RANK_LIST): Add EPHEMERON rank.
* mps/code/mps.s (mps_rank_ephemeron): New prototype.
* mps/code/mpscawl.h (mps_class_aeph, mps_fix_weak_pair)
(mps_fix_weak_or_pair, mps_fix_weak_and_pair): New prototypes.
* mps/code/mpsi.c (mps_rank_ephemeron): New function.
* mps/code/poolawl.c (AEPHSegStruct, AEPHPoolStruct): New. The
implementation the ephemeron pool.
* mps/code/seg.c (segAbsInit): Initialize propagationNeeded,
marksChanged, and propagationFinished.
* mps/code/trace.c (traceBandRetreat, tracePropagateToLowerRanks)
(moveSegToEndOfGreyRing): New helpers.
(TraceRankForAccess): Handle the RankEPHEMERON.
(traceFindGrey, traceScanSegRes): Add special handling for ephemeron
segments.
* mps/test/function/eph1.c: New test file.
* mps/test/function/eph2.c: New test file.
* mps/test/function/eph3.c: New test file.
* mps/test/function/eph4.c: New test file.
* mps/test/test/testlib/ephfmt.c: New file.
* mps/test/test/testlib/ephfmt.h: New file.
* mps/test/test/testlib/manifest: Add ephfmt.c.
* mps/test/testsets/passing: Include eph{1,2,3,4}.c.
2026-01-23 08:48:40 +01:00
..
0.c Long delayed maintenance of test suite: 2013-05-25 10:33:30 +01:00
1.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
2.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
3.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
4.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
5.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
6.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
7.c Use correct function for creating arena. 2020-08-24 17:17:37 +01:00
8.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
9.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
10.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
11.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
12.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
12p.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
13.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
14.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
15.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
16.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
17.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
18.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
19.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
20.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
21.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
22.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
23.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
24.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
25.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
26.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
27.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
28.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
29.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
30.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
31.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
32.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
33.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
34.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
35.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
36.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
37.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
38.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
39.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
40.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
41.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
42.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
43.c Fix typos. 2024-11-26 22:10:23 +07:00
44.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
45.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
46.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
47.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
48.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
49.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
50.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
51.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
52.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
53.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
54.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
55.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
56.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
57.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
60.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
61.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
62.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
63.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
64.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
65.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
66.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
67.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
68.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
69.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
70.c Remove mps_tramp, deprecated since release 1.111.0. 2020-09-24 09:30:33 +01:00
71.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
72.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
73.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
74.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
75.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
76.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
77.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
78.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
79.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
80.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
81.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
83.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
96.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
97.c New api function mps_pool_walk. 2022-01-17 17:39:18 +00:00
98.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
99.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
100.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
101.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
103.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
104.c New api function mps_pool_walk. 2022-01-17 17:39:18 +00:00
105.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
106.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
107.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
108.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
109.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
110.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
111.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
112.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
113.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
114.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
116.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
117.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
118.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
119.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
120.c Fix typos. 2024-11-26 22:10:23 +07:00
121.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
122.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
123.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
124.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
125.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
126.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
127.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
128.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
129.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
130.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
131.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
134.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
135.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
136.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
137.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
138.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
139.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
140.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
144.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
147.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
148.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
150.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
151.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
152.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
153.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
158.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
159.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
160.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
161.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
162.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
163.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
164.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
165.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
167.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
170.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
171.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
200.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
203.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
204.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
205.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
206.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
207.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
214.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
215.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
223.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
224.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
226.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
227.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
228.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
229.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
231.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
232.c Represent the spare memory as a land. 2022-01-17 20:19:07 +00:00
233.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
234.c Avoid using deprecated function mps_tramp. 2019-01-09 16:17:17 +00:00
235.c Fix typos. 2024-11-26 22:10:23 +07:00
236.c Save and restore errno in signal handlers. 2020-09-02 19:59:23 +01:00
237.c Fix typos. 2024-11-26 22:10:23 +07:00
500.txt Long delayed maintenance of test suite: 2013-05-25 10:33:30 +01:00
501.txt Long delayed maintenance of test suite: 2013-05-25 10:33:30 +01:00
502.txt Long delayed maintenance of test suite: 2013-05-25 10:33:30 +01:00
503.txt Fix typos. 2024-11-26 22:10:23 +07:00
504.txt Long delayed maintenance of test suite: 2013-05-25 10:33:30 +01:00
eph1.c Add a pool for ephemerons 2026-01-23 08:48:40 +01:00
eph2.c Add a pool for ephemerons 2026-01-23 08:48:40 +01:00
eph3.c Add a pool for ephemerons 2026-01-23 08:48:40 +01:00
eph4.c Add a pool for ephemerons 2026-01-23 08:48:40 +01:00