Author: Armin Rigo <[email protected]> Branch: stmgc-c7 Changeset: r75441:7ae5e18184da Date: 2015-01-19 18:37 +0100 http://bitbucket.org/pypy/pypy/changeset/7ae5e18184da/
Log: update to stmgc/957947bc7ad9 diff --git a/rpython/translator/stm/src_stm/revision b/rpython/translator/stm/src_stm/revision --- a/rpython/translator/stm/src_stm/revision +++ b/rpython/translator/stm/src_stm/revision @@ -1,1 +1,1 @@ -194265597fad +957947bc7ad9 diff --git a/rpython/translator/stm/src_stm/stm/hashtable.c b/rpython/translator/stm/src_stm/stm/hashtable.c --- a/rpython/translator/stm/src_stm/stm/hashtable.c +++ b/rpython/translator/stm/src_stm/stm/hashtable.c @@ -7,8 +7,14 @@ length 2**64. Initially it is full of NULLs. It's obviously implemented as a dictionary in which NULL objects are not needed. -The only operations on a hashtable are reading or writing an object at -a given index. +A real dictionary can be implemented on top of it, by using the index +`hash(key)` in the hashtable, and storing a list of `(key, value)` +pairs at that index (usually only one, unless there is a hash +collision). + +The main operations on a hashtable are reading or writing an object at a +given index. It might support in the future enumerating the indexes of +non-NULL objects. There are two markers for every index (a read and a write marker). This is unlike regular arrays, which have only two markers in total. @@ -19,10 +25,15 @@ First idea: have the hashtable in raw memory, pointing to "entry" objects. The entry objects themselves point to the user-specified -objects, and they have the read/write markers. Every entry object -itself, once created, stays around. It is only removed by the next +objects. The entry objects have the read/write markers. Every entry +object, once created, stays around. It is only removed by the next major GC if it points to NULL and its read/write markers are not set in any currently-running transaction. + +References +---------- + +Inspired by: http://ppl.stanford.edu/papers/podc011-bronson.pdf */ _______________________________________________ pypy-commit mailing list [email protected] https://mail.python.org/mailman/listinfo/pypy-commit
