stm-gc-2

View source
stm-gc-2
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind default.
Armin Rigo
Old checkin
Armin Rigo
Fix
Armin Rigo
intermediate check-in
Armin Rigo
Progress, but annoyed by the constant awkward interfacing between C code and various pieces of RPython. :-/
Armin Rigo
In-progress.
Armin Rigo
In-progress: trying to get the safe points correctly is hard
Armin Rigo
Add fetch_and_add to the C sources and expose it via rlib.atomic_ops.
Armin Rigo
Translation fixes
Armin Rigo
Fix
Armin Rigo
hg merge default, and ignore some changes done in the JIT. Look here when redoing them in the future...
Armin Rigo
Comments; fix allocate_object_of_size()
Armin Rigo
Translation fixes and a "bah": can't seem to get a doubly-linked list implementation correct. (stm/test/test_ztranslated.test_targetdemo)
Armin Rigo
tweaks
Armin Rigo
When the StmGCThreadLocalAllocator is deleted, reattach its pages to the StmGCSharedArea.
Armin Rigo
in-progress
Armin Rigo
Fixes
Armin Rigo
Restore the original support: when there is an inevitable transaction, other concurrent transactions may run until they attempt to commit.
Armin Rigo
Add a possible idea (from Remi)
Armin Rigo
tweaks
Armin Rigo
in-progress
Armin Rigo
Add a test. Various fixes, of course.
Armin Rigo
in-progress: carefully copy parts of minimarkpage.py
Armin Rigo
(untested) add a way to walk all roots, for major collections
Armin Rigo
Maintain a doubly-linked chained list of stmtls objects.
Armin Rigo
Don't call rgc.add_memory_pressure() from allocate_ll_lock(), which I want to use from the GC itself.
Armin Rigo
Skip all old failing tests
Armin Rigo
in-progress
Armin Rigo
in-progress: fixing the tests
Armin Rigo
Export this API through rstm.py.
Armin Rigo
The minimal interface that should be enough to synchronize all threads at the start of a major GC
Armin Rigo
Better fix
Armin Rigo
Fix test_stmgcintf.py.
Armin Rigo
Trying to apply a read-write lock to the issue of waiting for a global pause to do a major GC. Tests coming.
Armin Rigo
hg merge stm-thread-2
Armin Rigo
Write down another TODO
Armin Rigo
Minor clean-ups
Taavi Burns
Adds instrumentation to transaction.py to report on the number of transactions run during a call to run().
Armin Rigo
Start
Armin Rigo
Major collections
Armin Rigo
details
Armin Rigo
Attempt again to fix stm_PtrEq().
Armin Rigo
Implement id() by using shadows, like minimark.py.
Armin Rigo
hg merge default
Armin Rigo
Kill an old, unused list.
Armin Rigo
Fix the logic.
Armin Rigo
Write the traceback-on-abort logic. The lnotab handling needs fixing.
Armin Rigo
Tweaks
Armin Rigo
Keep the abort info corresponding to the longest aborted transaction, in case there are several aborts before charp_inspect_abort_info() is called.
Armin Rigo
Extend the last_abort_info with bits and pieces from the tx_descriptor as well as a timing of the real time lost in the aborted transaction.
Armin Rigo
Don't show the hidden_applevel frames.
Armin Rigo
Test and fix
Armin Rigo
Fix
Armin Rigo
Test and fix
Armin Rigo
Fix for fields that actually belong to parent classes
Armin Rigo
Use charp_inspect_abort_info().
Armin Rigo
Fixes
Armin Rigo
Switch to encoding/decoding following the bittorrent file format. It's a convenient format that requires minimal effort and no escaping pain.
Armin Rigo
Implement abortinfo and lastabortinfo. This should give a way for the RPython program to register its position, and in case of abort, to read the position of the last aborted transaction.
Armin Rigo
Add a missing include.
Armin Rigo
Tweak thread-locals to change the approach, at least with STM: store the dict inside a weak-key-dictionary on the executioncontext.
Armin Rigo
Oups.
Armin Rigo
Argh, forgot that count_reads can be much bigger than the limit if the transaction is atomic.
Armin Rigo
Fixes
Armin Rigo
Support undoing changes done to the thread-local structure in case of aborts.
Armin Rigo
Fixes
Armin Rigo
merge heads
Armin Rigo
Don't use a dict at all to store the executioncontext.
Armin Rigo
Change the ThreadLocalRef to not be a cache any more. Now the GC should correctly follow and update the references we store there.
Armin Rigo
Add comments
Armin Rigo
Turn off these costly checks.
Armin Rigo
Now we need to increase a bit the checkinterval().
Armin Rigo
Found it: by making the cache more efficient, len(gcptrlist) doesn't increase much any more, but it was used as an indicator for starting the next transaction. This would make very long transactions for no reason.
Armin Rigo
dummy merge to get rid of the backout
Armin Rigo
Improve caching, and reduce the cache's total size.
Armin Rigo
Backed out changeset cadf477fe482 I don't understand it at all, but it prevents parallel execution of richards.
Armin Rigo
Tweak tweak
Armin Rigo
Hack hack hack at the caching logic. Gives 10%.
Armin Rigo
Fix: must do this step after the GC was annotated.
Armin Rigo
Check in the latest version of richards.
Armin Rigo
Use ThreadLocalReference to get the excutioncontext more efficiently.
Armin Rigo
Flush the ThreadLocalReferences whenever we are collecting.
Armin Rigo
ThreadLocalReference: implementation.
Armin Rigo
Add the ThreadLocalReference class.
Armin Rigo
hg merge default
Armin Rigo
Use __pypy__.thread.signals_enabled here.
Armin Rigo
Kill the section about signals.
Armin Rigo
Needs a become_inevitable()
Armin Rigo
Argh. Disable this cache if we are running with stm.
Armin Rigo
Probably fix stm_PtrEq, to never cause transaction aborts.
Armin Rigo
Fix
Armin Rigo
Untested so far: attempt to fix signals for stm
Armin Rigo
hg merge default
Armin Rigo
Fix this import.
Armin Rigo
Move thread.atomic to __pypy__.thread.atomic.
Armin Rigo
hg merge default
Armin Rigo
Unclear why it occurs here and not on "default", but we need to prevent multiple #includes of this file
Armin Rigo
Fix imports
Armin Rigo
Ignore for now jitdrivers with autoreds.
Armin Rigo
Avoid renaming the module on import; there is not really a point here now.
Taavi Burns
Fixes rpython.rlib.thread import.
Armin Rigo
hg merge default
Armin Rigo
hg merge default
Armin Rigo
A clean replacement for 009b40655c5f.
Armin Rigo
hg backout 009b40655c5f: remove the hack based on signals.
Armin Rigo
A PyPy extension: add to thread locks a method acquire_interruptible(). This is like acquire() but handles signals, similarly to Python 3's acquire() method.
Armin Rigo
hg merge default
Armin Rigo
More import fixes
Armin Rigo
Run a mechanical translation of imports.
Armin Rigo
Move these in place too.
Armin Rigo
hg merge default
Armin Rigo
hg merge default
Armin Rigo
Move this file as well.
Armin Rigo
Move this file into its proper location.
Armin Rigo
hg merge default (again)
Armin Rigo
hg merge default (untested so far)
Armin Rigo
Preparing for the merge of default
Armin Rigo
Trying out using signals and signal.pause()...
Armin Rigo
Trying out signals
Armin Rigo
Copy the same simplification as in trunk.
Armin Rigo
Another TODO.
Armin Rigo
Split interp_signal in three. rlib/rsignal is like on trunk. sigaction.py is the non-stm action classes.
Armin Rigo
in-progress
Armin Rigo
Fix some tests
Armin Rigo
Fix a few tests, skip the others
Armin Rigo
These two flags are not referenced from C.
Armin Rigo
Another point
Armin Rigo
Fix at least one of the ztranslated test: test_targetdemo.
Armin Rigo
Do not turn inevitable either on raw_malloc, in addition to malloc(flavor='raw').
Armin Rigo
Add a TODO
Armin Rigo
done.
Armin Rigo
Trying to implement the idea of decreasing the limit more subtly: set it to 94% of the read size at the point the abort occurred. (This is what I meant, and not f3d388a6c22d from stm-logging.) Measures needed.
Armin Rigo
Kill 'self.value' and use a regular local variable instead, now that we can. It improves the testing.
Armin Rigo
Reorder (ints first, refs next).
Armin Rigo
Untested: revert some of the changes to pyopcode, relying instead on a new jitdriver to trigger stm.
Armin Rigo
Don't use SSA_to_SSI; it's not used by other code and seems not really well-tested enough :-(
Armin Rigo
Start to adapt the targetdemo2 test.
Armin Rigo
Finish it, maybe. Hard to test! Tested so far by staring at the graphs :-(
Armin Rigo
In-progress
Armin Rigo
In-progress: rewrite the graphs around jit_merge_points into calls to perform_transaction().
Armin Rigo
hg merge default
Armin Rigo
Add a TODO.
Armin Rigo
hg merge default
Armin Rigo
Left over from the merge.
Armin Rigo
hg merge default
Armin Rigo
Fix
Armin Rigo
Fix
Armin Rigo
Left behind in previous merge
Armin Rigo
hg merge default
Armin Rigo
Prefix all lines printed in PYPYLOG with a thread number (in color too, if the output is a tty).
Armin Rigo
stm: don't turn inevitable on weakref_* [copied from meierrem on stm-logging]
Armin Rigo
stm: make more functions transactionsafe [copied from meierrem on stm-logging]
Armin Rigo
Use 'try' here, which is more compatible (but may hide for now the same issue that we had in strtod()).
Armin Rigo
merge heads
Remi Meier
rearrange mallocs in strtod to allow inlining of str2charp add transactionsafe to RPyThreadGetIdent
Remi Meier
stm: fix raw_free test
Remi Meier
stm: don't turn inevitable before raw-mallocs and raw-accesses/frees to the freshly allocated memory this leaks memory in case the transaction performing malloc aborts
Remi Meier
stm: turn inevitable before (in)direct_call, add transactionsafe flag
Armin Rigo
Revert changes to writebarrier.py, and implement it directly in src_stm/et.h.
Armin Rigo
Trying to remove the hack around hashes. Now taking a hash for the first time on an object is a write operation, but it simplifies the (broken) logic.
Armin Rigo
Update to the latest stmimpl.rst, following the changes done to https://bitbucket.org/arigo/arigo/raw/default/hack/stm/c2/et.c
Armin Rigo
Random minor fixes
Armin Rigo
Bah, fix.
Armin Rigo
Re-import the parts of the old transform.py that insert 'turn_inevitable' around unsupported operations.
Armin Rigo
"extra threshold" support in stmgc.
Armin Rigo
Let "translate.py --stm -Ojit" pick the stmgc.
Armin Rigo
hg merge remove-globals-in-jit
Armin Rigo
Fixes following the merge.
Armin Rigo
hg merge remove-globals-in-jit
Armin Rigo
hg merge default
Armin Rigo
Kill old commented-out lines
Armin Rigo
Printing "stm-perform-transaction" delimiters.
Armin Rigo
Be more careful about having no extrainfo on the call descr.
Armin Rigo
Ignore calls to _gctransformer_hint_close_stack_ functions.
Armin Rigo
Fix
Armin Rigo
Delayed pointers are not the same as external pointers. For now, just return top_result().
Armin Rigo
Pffff.
Armin Rigo
64-bit fix
Armin Rigo
Fix the previous merge :-/
Armin Rigo
hg merge default
Armin Rigo
Comment out that too.
Armin Rigo
hack hack
Armin Rigo
Fixes
Armin Rigo
fix fix fix in-progress
Armin Rigo
Link to project-ideas.rst.
Armin Rigo
in-progress: access thread-local variables from the generated assembler.
Armin Rigo
This global var needs a __thread.
Armin Rigo
Add a debug_print to get the nursery position
Armin Rigo
Nice colors to sort out which thread prints what.
Armin Rigo
Fix test_stmgcintf.c.
Armin Rigo
Minor type fixes.
Armin Rigo
Fix translation.
Armin Rigo
Various fixes
Armin Rigo
Start writing a second target test. Fix a subtle bug revealed by it (see extradoc/6a8e4f80ba44).
Armin Rigo
Add a comment
Armin Rigo
Fix
Armin Rigo
Call it the "category" consistently.
Armin Rigo
Disable this case too for now.
Armin Rigo
Mark places that will need fixing once we start improving translator/stm/transform2.py.
Armin Rigo
Reimplement llmodel for stm using a read/write barrier (easier).
Armin Rigo
Revert all changes to llmodel.py. Kill the gc_load/gc_store lloperations again.
Armin Rigo
Another possible optimization to implement later.
Armin Rigo
Support for mangling the calls to ptr_eq.
Armin Rigo
Pass the test.
Armin Rigo
in-progress: remove more leftovers, and start to add a test for the barrier that returns modified objects.
Armin Rigo
hg merge default
Armin Rigo
Kill old stm-supporting code from the x86 backend.
Armin Rigo
Fixes. test_stmrewrite.py seems to pass now.
Armin Rigo
Progress
Armin Rigo
Finish the setfield tests.
Armin Rigo
in-progress: fixing the JIT
Armin Rigo
Fix translation
Armin Rigo
Add a can_move() for the JIT.
Armin Rigo
Fix test
Armin Rigo
Fixes for the hash tests.
Armin Rigo
in-progress: fix the tests
Armin Rigo
Always let "PYPYLOG=stm:-" work for now.
Armin Rigo
Finish hash() --- hopefully. At least the test in targetdemo2 passes.
Armin Rigo
In-progress? Support for hash, partly copied from semispace/hybrid.
Armin Rigo
test_ztranslation starts to pass. Yay!
Armin Rigo
Add asserts
Armin Rigo
Tweak
Armin Rigo
Finish the fix.
Armin Rigo
Remove "struct gcroot_s".
Armin Rigo
fixfixfix
Armin Rigo
Fix
Armin Rigo
Fixes
Armin Rigo
fixes fixes
Armin Rigo
Pass next test
Armin Rigo
Fix 'stmgc': in-progress
Armin Rigo
Using gc=none instead of fighting Boehm. Now the test passes, slowly.
Armin Rigo
Add a few asserts.
Armin Rigo
Hacks to get Boehm to translate and run. Crashes, but that may be a genuine bug.
Armin Rigo
in-progress
Armin Rigo
in-progress
Armin Rigo
In-progress: the first goal will be to have a working Boehm translation.
Armin Rigo
In-progress
Armin Rigo
test_stmgcintf passes again.
Armin Rigo
in-progress: trying to get test_stmgcintf working again
Armin Rigo
Update to arigo/2f5d4cc948b2.
Armin Rigo
Random initial tweaks.
Armin Rigo
Copy the C files from arigo/hack/stm/c2/.
Armin Rigo
Tweaks and fixes
Armin Rigo
Kill test files too.
Armin Rigo
Kill this file too.
Armin Rigo
Kill these two files too.
Armin Rigo
Kill transform.py. A few small parts will be restored into transform2.py.
Armin Rigo
Move the write_analyzer locally.
Armin Rigo
Propagate the category freely across cast_pointers.
Armin Rigo
Add a test for what occurs around cast_pointer. Currently fails.
Armin Rigo
Also rename across links, to preserve at least the run-time knowledge so that future barriers can be skipped.
563 commits not shown.