stm-thread-2

View source
stm-thread-2
  • Contributors
    1. Loading...
Author Commit Message Date Builds
62 commits behind default.
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
Translation fixes for test_zrpy_gc.
Armin Rigo
Fixes following the merge.
Armin Rigo
hg merge remove-globals-in-jit
Armin Rigo
hg merge default
Armin Rigo
Revert the last usage of rerased in the jit. It just doesn't work. Fix it differently.
Armin Rigo
Yay! test_zrpy_gc passes.
Armin Rigo
Fix translation. Or at least, test_zrpy_gc.py's test_compile_boehm passes.
Armin Rigo
Fix test
Armin Rigo
Fix test
Armin Rigo
Fix test
Armin Rigo
hg merge default
Armin Rigo
Fix test.
Armin Rigo
More work on exceptions. Propagate MemoryError.
Armin Rigo
Give up using a union for now, which simplifies things.
Armin Rigo
Forgot to check this in.
Armin Rigo
Fix, progress.
Armin Rigo
Fix fix fix, with a hack for now
Armin Rigo
Fix force().
Armin Rigo
Fix exceptions.
Armin Rigo
Remove old method.
Armin Rigo
Progress.
Armin Rigo
Pass the first test.
Armin Rigo
In-progress: kill kill kill failargs_xyz and related data on the Assembler386 class.
Armin Rigo
Fix tests.
Armin Rigo
Kill this test, now that the llgraph backend is not translatable at all.
Armin Rigo
fix test
Armin Rigo
Another round of fixes for the front-end, getting close.
Armin Rigo
fix test
Armin Rigo
fix
Armin Rigo
fix fix
Armin Rigo
Fix
Armin Rigo
progress
Armin Rigo
progress
Armin Rigo
Cancel the change to resoperation, which breaks things (it ignores 'opnum'). Fix differently.
Armin Rigo
hg merge default
Armin Rigo
Starting to fix the front-end
Armin Rigo
Finish test_llgraph.
Armin Rigo
Progress, by fighting the urge to fix seven things in the same branch.
Armin Rigo
in-progress
Armin Rigo
hg merge default
Armin Rigo
in-progress
Armin Rigo
tweak tweak
Armin Rigo
Copy over the state of the llgraph backend as it is in the 'no-failargs' branch. In particular, it's a major simplification at the cost of not being 'half-RPython' any more.
Armin Rigo
Add this too.
Armin Rigo
The goal.
Armin Rigo
Try again from scratch: step 1 is removing the globals from the run-time in the JIT-generated code.
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.
Armin Rigo
Detect when a barrier has an effect or not.
Armin Rigo
Kill a misleading line.
Armin Rigo
For completeness, a test for 'P=W' in addition to 'W=P'.
Armin Rigo
Pointer comparison barrier.
Armin Rigo
External calls.
Armin Rigo
Detect potential aliases and revert objects from the 'R' category to the 'O' category.
Armin Rigo
Mallocs.
Armin Rigo
Collapse obvious duplicate barriers
Armin Rigo
Track more precisely the category of individual pointers, not the category of general objects.
Armin Rigo
The simplest version of read and write barrier insertion.
Armin Rigo
Kill this directory. Outdated and no chances to work.
Armin Rigo
Make another branch: the JIT support is not done, but the goal now is to upgrade to the newer model described in extradoc/talk/stm2012/.
Armin Rigo
hg merge default
Ronny Pfannschmidt
introduce thread.exclusive_atomic it will throw an error if it is used within another atomic block
Armin Rigo
in-progress
Armin Rigo
Starting work on the x86 backend
Armin Rigo
Skip some tests that are "only" for optimization, and pass the others.
Armin Rigo
progress
Armin Rigo
Starting on stmrewrite.py.
Armin Rigo
Write a plain text explanation.
Armin Rigo
Update the test.
Armin Rigo
Start to draft the tests for the GcStmReviewerAssembler as a llsupport subclass of GcRewriterAssembler. Unsure yet if this is the ideal level.
Armin Rigo
Now translation completes.
Armin Rigo
Translation of an example getting closer
Armin Rigo
in-progress
Armin Rigo
in-progress
Armin Rigo
Improve precision.
Armin Rigo
gc_load, stm_gc_load, gc_store: the most generic operations on GC objects, reading or writing a field of any type in a given GC object at a given offset.
Armin Rigo
finish llmodel support. XXX refactor...
Armin Rigo
in-progress. Missing tests :-(
Armin Rigo
in-progress
Armin Rigo
hg merge default
Armin Rigo
In-progress
Armin Rigo
Start a branch to work on the JIT support of STM.
Armin Rigo
hg merge default
Armin Rigo
Update docs.
Armin Rigo
Mention this as a rough edge.
Armin Rigo
Update.
Armin Rigo
Update docs.
Armin Rigo
Anther __builtin_except() to mark the slow path.
Armin Rigo
Bah.
Armin Rigo
Workaround.
Armin Rigo
hg merge default
Armin Rigo
Fix.
Armin Rigo
A failing test.
Armin Rigo
Tweak.
Armin Rigo
Kill a non-useful field.
Armin Rigo
Disable this useless-so-far computation
Armin Rigo
Tweak: it seems that 9 gives better results than both 7 or 11 (the default).
Armin Rigo
Fix for corner cases of non-properly-nested atomic blocks.
Armin Rigo
Dynamically shorten transactions if they start failing.
Armin Rigo
Change the default checkinterval to a value which ends up with a much lower overhead.
Armin Rigo
Translation fixes
Armin Rigo
Add set_transaction_length here.
Armin Rigo
Tweaks in the main loop to not longer systematically call rstm.perform_transaction().
Armin Rigo
should_break_transaction(): give a configurable length limit.
Armin Rigo
hg merge default
Armin Rigo
The next thing to re-optimize: withmethodcache
Armin Rigo
Remove the hand-waving uncertainty of gcsource, and instead assume that it is able to find *all* calls to functions with a GC arg or result. Tentative: this should be true because external calls and callbacks are always with functions with no GC argument.
Armin Rigo
Some more stm_assert_locals
Armin Rigo
Re-add this. Needed because it's the start of a new transaction.
Armin Rigo
Add an XXX to be clear
Armin Rigo
hg merge default
Armin Rigo
Fixes.
Armin Rigo
Tentative. When a transaction finishes, save in the shadowstack which objects were locals (using the bit '1<<1'). When a transaction starts, remake the corresponding objects locals.
Armin Rigo
In-progress: the goal is to change the GC so that after a collection the stack variables that were local are still local --- unless they are specially marked as "stm_local_not_needed" by stm/transform.py.
Armin Rigo
hg merge default
Armin Rigo
Fix the comment (not "transaction" but "translation"...)
Armin Rigo
Kill a potential big performance issue.
Armin Rigo
A notice about the word "inevitable".
Armin Rigo
Rewrite the "Parallelization" section.
Armin Rigo
Add reference.
Armin Rigo
hg merge default
Armin Rigo
Try to fix the tests, or kill them in case they don't make sense any more.
Armin Rigo
Fix for small translation targets
Armin Rigo
Move the import statement to be local.
Armin Rigo
Support for thread.atomic also for pypy without stm.
Armin Rigo
Adapt test_ztranslation.
Armin Rigo
Test fix
Armin Rigo
Adapt test_stmgcintf.*.
Armin Rigo
Remove the numerous prints, not captured when we run the file directly.
Armin Rigo
merge heads
Armin Rigo
Update the doc.
Armin Rigo
Add a direct way to run this particular test.
Armin Rigo
Bah.
Armin Rigo
Add an assert.
Armin Rigo
A better fix.
Armin Rigo
Fix. No clue how to write a test :-(
Armin Rigo
Test and simple fix.
Armin Rigo
Fix comments.
Armin Rigo
Tentatively add a 'transaction' module in pure Python. For now with the same API as the old 'transaction' module. Minimal tests too; will need to test more in depth.
Armin Rigo
hg merge default
Armin Rigo
Clarifications.
Armin Rigo
Complete
Armin Rigo
Starting to write some documentation.
Armin Rigo
Remove this outdated file
Armin Rigo
Missing line.
Armin Rigo
Ah, found a possibly acceptable solution. To be tried out in real life.
Armin Rigo
Temporary workaround: in a "with atomic" it is not allowed to acquire any lock. That's too strong a restriction, because it prevents us from doing anything with files. Well, this is work-in-progress and it's still better than random deadlocks.
Armin Rigo
Tweaks.
Armin Rigo
Fix.
Armin Rigo
thread.atomic.
Armin Rigo
Fixes
Armin Rigo
Replace the few "return next_instr" with a reordering of the code. Avoids returning to the parent function just to get back immediately.
Armin Rigo
Remove an obvious source of conflicts.
Armin Rigo
Tweaks to replace the GIL.
Armin Rigo
Save and restore the errno, like module/thread/gil.py does.
Armin Rigo
Revert again the introduction of '__pypy__.local'.
Armin Rigo
hg merge default
Armin Rigo
Fix.
Armin Rigo
Bah
Armin Rigo
Attempt to fix the hints
Armin Rigo
Missing.
Armin Rigo
Fix
Armin Rigo
Raising exceptions around the stm callback is not supported. Fix this by explicitly saving and re-raising exceptions for now.
Armin Rigo
Minimal hack to add these kind of transactions into the PyPy interpreter.
Armin Rigo
Tweaks and comments.
Armin Rigo
Easy performance improvement.
445 commits not shown.