racket/mats
Matthew Flatt c195288251 scalable object locking
The `unlock-object` operation was O(N) with N currently locked objects
--- so, O(N^2) to lock N objects and then unlock them --- because
locked objects were stored in and searched in a global list. Also, GC
was O(N) at any generation with N locked objects across generations,
since every locked object was scanned.

Fix these poblems so that locking and unlocking is practically O(1)
and GC is not poportional to locked objects. More precisely, locking
and unlocking is now O(C) for locking an individual object C times to
be balanced by C unlocks. (Since multiple locks on a single object
is rare, this performance seems good enough.)

The implementation replaces the global list with segment-specific
lists. Backpointers are managed using the general generational
support, so that unmodified, old-generation locked objects do not
need to be swept duing a new-generation collection.

original commit: a57d256ca73a3d507792c471facb7e35afbe88b3
2019-09-01 07:03:16 -06: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 Merge github.com:cisco/ChezScheme 2019-02-17 18:22:55 -07:00
5_1.ms change eqv? to recognize +nan.0s as equivalent 2019-01-17 09:05:13 -07:00
5_2.ms make test for relop-length more sensitive 2019-05-24 10:33:52 -04:00
5_3.ms Merge branch 'bsd' of github.com:mflatt/ChezScheme 2019-07-05 07:30:37 -06:00
5_4.ms Merge github.com:cisco/ChezScheme 2019-02-17 18:22:55 -07: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 committing a handful of changes, none of which should be particularly 2019-02-11 20:06:42 -08:00
5_7.ms changed copyright year to 2017 2017-04-06 11:41:33 -04:00
5_8.ms add box-cas! and vector-cas! 2018-07-16 07:51:32 -06:00
6.ms avoid fasl overflow of C stack 2018-12-28 08:26:50 -06:00
7.ms adjust object-backreferences test for interpreter 2019-04-26 22:36:55 -05:00
8.ms ignore multiple-value return from interleaved init expressions in top-level-program 2019-03-27 13:00:38 -04:00
bytevector.ms compress-level parameter, improvement in lz4 compression, and various other related improvements 2019-04-18 05:47:19 -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 cptypes: reduce (if t <error> x) ==> (begin (if t <error> (void)) x) 2019-04-04 18:31:00 +02:00
cptypes.ms Fix call case with rest argument in cptypes 2018-07-31 20:00:00 -03: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 fix flround on [-0.5, 0.0) 2019-06-21 12:26:00 -06:00
foreign.ms fix string allocation for callable argument or foreign-call return 2019-01-27 13:01:57 -07:00
foreign1.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
foreign2.c fix string allocation for callable argument or foreign-call return 2019-01-27 13:01:57 -07:00
foreign3.c Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
foreign4.c x86_64: fix foreign-procedure & results that are not multiples of a word 2018-06-15 13:59:34 -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 9.5.2 changes: 2019-03-21 14:30:49 -07:00
fx.ms fix cp0 reduction of fx[+-*]/carry and their signatures 2017-10-09 12:09:50 -03:00
hash.ms Adds hashtable-ref-cell 2019-07-26 16:02:55 -06:00
ht.ss changed copyright year to 2017 2017-04-06 11:41:33 -04:00
ieee.ms adjust sqrt and log on -0.0 2019-06-21 12:48:42 -06:00
io.ms fix open-string-input-port on immutable strings 2019-07-02 13:17:39 -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 Merge github.com:cisco/ChezScheme 2019-05-22 10:46:59 -06:00
Mf-a6fb support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-a6le support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-a6nb support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-a6nt Now opening 9.5.3 release. Intent is to formally release 9.5.2 2019-03-21 15:07:39 -07:00
Mf-a6ob support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-a6osx support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-a6s2 support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-arm32le support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-base Add cptypes pass to cp0 to reduce expression using types 2018-04-12 21:53:33 -03:00
Mf-i3fb support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-i3le support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-i3nb support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-i3nt Now opening 9.5.3 release. Intent is to formally release 9.5.2 2019-03-21 15:07:39 -07:00
Mf-i3ob support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-i3osx support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-i3qnx support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-i3s2 support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-ppc32le support struct args to and results from foreign procedures 2018-03-12 21:01:47 -06:00
Mf-ta6fb Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ta6le Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ta6nb Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ta6nt Now opening 9.5.3 release. Intent is to formally release 9.5.2 2019-03-21 15:07:39 -07:00
Mf-ta6ob Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ta6osx Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ta6s2 Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ti3fb Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ti3le Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ti3nb Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ti3nt Now opening 9.5.3 release. Intent is to formally release 9.5.2 2019-03-21 15:07:39 -07:00
Mf-ti3ob Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ti3osx Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-ti3s2 Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
Mf-tppc32le Add __thread foreign-call convention 2018-03-14 17:20:33 -06:00
misc.ms scalable object locking 2019-09-01 07:03:16 -06: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 print positive flonum exponents with "+" 2019-06-21 12:19:59 -06: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 Updating bullyx patches. 2019-02-12 10:22:39 -08:00
patch-compile-0-f-t-f Adds hashtable-ref-cell 2019-07-26 16:02:55 -06: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 Adds hashtable-ref-cell 2019-07-26 16:02:55 -06:00
patch-compile-0-t-f-t Updating bullyx patches. 2019-02-12 10:22:39 -08:00
patch-compile-0-t-t-f Updating bullyx patches. 2019-02-12 10:22:39 -08: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 Adds hashtable-ref-cell 2019-07-26 16:02:55 -06:00
patch-interpret-3-f-t-f Adds hashtable-ref-cell 2019-07-26 16:02:55 -06: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 Adds hashtable-ref-cell 2019-07-26 16:02:55 -06:00
patch-interpret-0-f-t-f Adds hashtable-ref-cell 2019-07-26 16:02:55 -06:00
patch-interpret-0-t-f-f Updating bullyx patches. 2019-02-12 10:22:39 -08:00
patch-interpret-0-t-t-f Updating bullyx patches. 2019-02-12 10:22:39 -08:00
primvars.ms rename who -> maybe-who 2019-06-20 12:33:51 -03:00
record.ms Merge github.com:cisco/ChezScheme 2019-05-22 10:46:59 -06:00
root-experr-compile-2-f-f-f print positive flonum exponents with "+" 2019-06-21 12:19:59 -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 Adds hashtable-ref-cell 2019-07-26 16:02:55 -06:00
thread.ms Merge branch 'hashmix' of github.com:mflatt/ChezScheme 2019-04-07 10:14:10 +02: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