Branches

stm-jit

View source
stm-jit
  • Contributors
    1. Loading...
Author Commit Message Labels Comments Date
250+ commits behind default.
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.
Armin Rigo
Fish from the history stm_perform_transaction(). Now, it is the only way to start a non-inevitable transaction.
Armin Rigo
Fix fix fix. Good, now targetdemo2 passes (but still with only inevitable transactions, which is of course still pointless)
Armin Rigo
Typos
Armin Rigo
Analyze statically which calls can eventually cause transaction breaks. For any such call, the variables around the call can switch back from LOCAL to GLOBAL.
Armin Rigo
Implement the TransactionBreakAnalyzer, needed in this version of STM. A variable pointing to a local object can again point to a global object later, and thus will need another stm_writebarrier.
Armin Rigo
In-progress
Armin Rigo
fix fix fix
Armin Rigo
Intermediate check-in
Armin Rigo
Add a demo transaction target using the GIL.
Armin Rigo
Kill two more files.
Armin Rigo
hg merge default
Armin Rigo
This also makes no sense any more.
Armin Rigo
First, kill the 'transaction' module.
Armin Rigo
As per pypy-dev discussion: try a different model with threads
Armin Rigo
Add documentation for these options.
Armin Rigo
- Fix test. - Obviously, config.translation.stm is true here. It's not that that we should test...
Armin Rigo
Remove unused declaration again.
Armin Rigo
Bah.
Armin Rigo
Fix tests.
Armin Rigo
Fix test
Armin Rigo
Fix tests
Armin Rigo
Fix test.
Armin Rigo
Fix tests.
Armin Rigo
Comment.
Armin Rigo
Replace hacking around an llop with just a function fishing around in the config.
Armin Rigo
Fix the test.
Armin Rigo
Fixes
Armin Rigo
Fix rgc to support both STM and non-STM modes.
Armin Rigo
Add a direct low-level operation stm_is_enabled().
Armin Rigo
Reverse the order to avoid unexpected effects if someone calls the constructor without keyword args.
Armin Rigo
hg merge default
Armin Rigo
Re-enable the methodcache optimization. Found another trick that should be "kind of good enough for now".
Armin Rigo
A default value for this attribute is really needed.
Armin Rigo
Disable again the ThreadLocal class.
Armin Rigo
Manually backout most of 133049a5ba84. The idea doesn't work as it is. The issue is what occurs in case a transaction is aborted. The thread-local data cannot stay around for the next transaction, because it now points to half-random data. :-(
Armin Rigo
Remove the part of the test handling thread-locals
Armin Rigo
Keep the extra test from the previous backout.
Armin Rigo
Backed out changeset 4c6a625119f9
Armin Rigo
Copy the logic for thread-locals. The last new test is the one failing because it needs slightly special care.
Armin Rigo
Fix the first half of the test.
Armin Rigo
A failing test.
Armin Rigo
Start to write support code around the GC for getting at thread-local data. This, and (by the way) also regular GC pointers in non-GC prebuilt structs, are not supported yet by the GC; it comes next.
Armin Rigo
Comment, and kill outdated method (see start_transaction() in the class StmShadowStackRootWalker).
Armin Rigo
hg merge default
Armin Rigo
Start a ThreadLocal object. See comments.
Armin Rigo
hg merge default
Armin Rigo
Bah.
Armin Rigo
Minor tweak.
Armin Rigo
Comment.
Armin Rigo
Update docs
Armin Rigo
Use pthread_join() instead of a lock. This makes sure that the threads are really down before returning.
Armin Rigo
hg merge default
Armin Rigo
Add an assert. Status update: seems that pypy-stm running translate.py works now. :-)
Armin Rigo
Argh, argh. Finally found the next bug.
Armin Rigo
More tests until failure found.
Armin Rigo
grumble
Armin Rigo
Debugging. Should be safe in module/transaction/, but better safe than horribly confusingly sorry.
Armin Rigo
Ah bah.
Armin Rigo
Fixes.
Armin Rigo
Improve the tests.
Armin Rigo
More passing tests.
Armin Rigo
Improve testing before translation.
Armin Rigo
Add a passing test.
Armin Rigo
Fix test.
Armin Rigo
Tweak to make mt_global_turned_local and the tldict more similar.
Armin Rigo
Mark a point that is not done.
Armin Rigo
Documentation, documentation, documentation. It helps a lot to make my confused mind a bit clearer, and it should trigger a few simplifications too.
Armin Rigo
Fix.
Armin Rigo
Complete the tests and the code.
Armin Rigo
Fix test to run even if the working directory is different.
Armin Rigo
Test and fix.
Armin Rigo
Fix local.
Armin Rigo
Kill test
Armin Rigo
Fix test
Armin Rigo
Start to fix the 'transaction' module, mostly by killing code.
Armin Rigo
Fix the FakeStmOperations class.
Armin Rigo
Re-add rstm.thread_id().
Armin Rigo
Fix test.
Armin Rigo
Tests tests tests... and found one missing "return;" :-)
Armin Rigo
Next test
Armin Rigo
Start porting these tests as C code.
Armin Rigo
Start to re-enable test_stmgcintf.
Armin Rigo
Fix test
Armin Rigo
Ensure NEXT is cleared by C code after all. Adapt two more tests.
Armin Rigo
Fix.
Armin Rigo
Progress...
Armin Rigo
Progress
Armin Rigo
Extra test.
Armin Rigo
In-progress
Armin Rigo
Start to refactor the RPython interface to be higher-level. This should make it easier to call directly C code from the higher-level code without passing through lower-level interfaces. No need to access from RPython the ll_thread module with locks and so on; this should all be done in C. Untested code so far (it doesn't run at all, missing levels, but I'd like to add proper testing anyway).
Armin Rigo
A failing test.
Armin Rigo
Move these too.
Armin Rigo
Fix.
Armin Rigo
Fix the test.
Armin Rigo
A failing test
Armin Rigo
A random change...
Armin Rigo
Better _freeze_, to make sure everything is clear during translation.
Armin Rigo
Fix epoll too.
Armin Rigo
Rename this method
Armin Rigo
Fix. See comment.
Armin Rigo
hg merge default
Armin Rigo
Add an essential assert. I think it is broken right now. Will write comments...
Armin Rigo
Print another message when we are leaving transactional mode.
Armin Rigo
Use __pypy__.local here.
Armin Rigo
Add '__pypy__.local', re-exposing either 'thread._local', or 'transaction.local', or just a dummy class if we have neither.
Armin Rigo
Allow gc_identityhash and gc_id, too.
Armin Rigo
hg merge default
Armin Rigo
Add 'transaction.local' in the emulator too. (This is a complete implementation.)
Armin Rigo
Thread-local data in the transaction module. See docstring for two foreseen usage patterns.
Armin Rigo
Fix comment.
Armin Rigo
Disable the 'thread' module if 'transaction' is enabled.
Armin Rigo
hg merge default
Armin Rigo
stacklets are not compatible with stm right now.
Armin Rigo
hg merge default
Armin Rigo
Fix test.
Armin Rigo
Fix for tests.
Armin Rigo
Partial fix: don't record orecs when running in an inevitable transaction (like the main thread). Should be improved also for non-inevitable transactions as documented in lists.c.
Armin Rigo
Bah.
Armin Rigo
Comment.
Armin Rigo
Play nicely with 'MALLOC_CHECK_', the checking done by glibc's malloc, which is unhappy about the overwrite of 4 bytes with 0xDDDDDDDD if we allocated less than 4 bytes.
Armin Rigo
Allow the JIT operations too. At this point, if they are left in the code, it means mostly that we don't have a JIT anyway.
Armin Rigo
Comments and asserts.
Armin Rigo
Weakrefs again.
Armin Rigo
AddressStack.clear()
Armin Rigo
Optimize.
Armin Rigo
Fix the test of 1bb21a8ad460.
Armin Rigo
Fixes
Armin Rigo
A failing test.
Armin Rigo
Debugging.
Armin Rigo
Save and restore the root_stack_top explicitly with the help of C code.
Armin Rigo
Backed out changeset 93da8b4ece49
Armin Rigo
We really need to know if we're starting a new or restarting an aborted transaction.
Armin Rigo
hg merge default
Armin Rigo
Test and fix.
Armin Rigo
Complete the comment.
Armin Rigo
Fixes.
Armin Rigo
Fix the test.
Armin Rigo
A failing test
Armin Rigo
More asserts
Armin Rigo
Disable a couple of extra features when translating with --no-translation-rweakref.
Armin Rigo
id(), hash(), and small refactors
Armin Rigo
Start to rewrite test_stmgc.py.
Armin Rigo
Fixes, enough to have 'targetdemo-c' pass.
Armin Rigo
Fixes
301 commits not shown.