Branches

stmgc-static-barrier

View source
stmgc-static-barrier
  • Contributors
    1. Loading...
Author Commit Message Labels Comments Date
250+ commits behind default.
Armin Rigo
hg merge stmgc-c4
Armin Rigo
import stmgc/111c09337109
Armin Rigo
import stmgc/111c09337109
Armin Rigo
import stmgc/4ed9ba1552f8 and hack to always print aborts
Remi Meier
little fix to always release a spinlock
Remi Meier
turn inevitable before calls that don't have an effectinfo (to be safe)
Armin Rigo
Baaah. jit_assembler_call() needs to say canmallocgc=True. To be on the safe side, also say canraise=Exc. I guess that indirect_call is special-cased by various anaysis, but not jit_assembler_call.
Armin Rigo
import stmgc/0b3f7830cb46
Remi Meier
2 more tests just to be sure
Armin Rigo
Argh, thanks Remi. We're going to rename this obscure name.
Armin Rigo
Redo this hack
Armin Rigo
Fix the test
Armin Rigo
import stmgc/c5636881b4d5
Armin Rigo
merge heads
Armin Rigo
Fix dtoa.c to use stm_call_on_abort(), which makes the code transactionsafe again.
Armin Rigo
import stmgc/983af03354a5
Remi Meier
merge
Remi Meier
try to reduce becomeinevitable because of indirect_calls in blackhole.py (call_stub)
Armin Rigo
Don't force the frame for the JIT. Temporary workaround.
Armin Rigo
hg merge default
Armin Rigo
Disable stack-checking "more", with STM. In particular, avoid calls to LL_stack_criticalcode_start(), turning the transaction inevitable.
Armin Rigo
do_malloc_xx_clear(), used in the JIT
Armin Rigo
Waa, this made gcc produce a warning: "/*" within comment
Armin Rigo
A test and small fixes for gc_writebarrier in stm.
Armin Rigo
hg merge default
Armin Rigo
hg merge default
Armin Rigo
The indirect_call() going to assembler code forces the transaction to become inevitable. The only way I can think of to avoid this is to add a new operation.
Armin Rigo
Fixes: in raw_load/raw_store, we don't know what kind of type the 1st argument has. It could be a GCREF, or a Signed or an Address.
Armin Rigo
Add raw_load and raw_store here, to generate the correct barriers when applied on GC objects.
Armin Rigo
hg merge default
Armin Rigo
Fix
Armin Rigo
Handle gc_writebarrier in stm/writebarrier.py
Armin Rigo
Debugging: always fprintf the inevitable reasons
Armin Rigo
Crash more cleanly when trying to translate on 32-bit (duh)
Armin Rigo
Make the raw JITFRAMEINFO STM-free, by using only one field in case of STM and by updating its value carefully with bool_cas().
Armin Rigo
import stmgc/698910c9edc3
Armin Rigo
Yes, it was a fix. Here's the test.
Armin Rigo
Fix?
Armin Rigo
Fix raw mallocs to be freed in case of an abort occurring at the wrong time.
Armin Rigo
rstm.charp_inspect_abort_info() now turns the transaction inevitable. Must move the call to it after abort_and_retry() in the test.
Armin Rigo
import stmgc/782ebd6afc03
Armin Rigo
merge heads
Armin Rigo
Import stmgc/4c80cba2b8ce
Armin Rigo
Remove clear_exception_data_on_abort() and piggy-back calls to stm_clear_on_abort() to stm_initialize().
Armin Rigo
Rewrite this part
Armin Rigo
Don't use None as category. This should ensure that all categories are decreasing over time, eventually reaching a fixed point.
Armin Rigo
This may fix the order dependency.
Remi Meier
cleanup of thread-local code in assembler.py
Remi Meier
import stmgc
Remi Meier
merge default and fix "__thread before static" error in debug_print.c
Armin Rigo
merge heads
Armin Rigo
Make the __thread in these files only appear in stm mode.
Armin Rigo
Make the __thread in these files only appear in stm mode.
Armin Rigo
Re-enable printing conflicts, which seems to work fine now.
Armin Rigo
Import stmgc/24b6be3aaa67
Remi Meier
more jit.dont_look_inside needed after merge
Armin Rigo
the call to report_abort_info() is disabled for now because it's buggy
Armin Rigo
Fix
Armin Rigo
Fix
Armin Rigo
More fixes
Armin Rigo
Fix test
Armin Rigo
Fix
Armin Rigo
fix test
Armin Rigo
Fix for test_zll_stress_*.
Armin Rigo
Argh argh argh! This comes from an insufficiently-tested checkin by me long ago. :-(
Armin Rigo
Use a regexp to drop the "1#" at the start of stm pypylog files. Otherwise, it would drop everything before a "#" used as a comment.
Armin Rigo
Fix
Armin Rigo
Skip this test when running on top of CPython
Armin Rigo
merge heads
Armin Rigo
Fix
Remi Meier
fix bogus test
Armin Rigo
Accept DelayedPointers here too
Armin Rigo
Fix for test_lloperation
Armin Rigo
Merge fix
Armin Rigo
More merge fixes
Armin Rigo
Fix
Armin Rigo
Fix for running most non-stm C tests
Remi Meier
fix some merge leftovers
Remi Meier
remove duplicated logging
Armin Rigo
Fix? But the test is still failing
Armin Rigo
hg merge default Lots of changes, needs careful testing
Armin Rigo
Remove this test, not working any more since a while
Remi Meier
import stmgc
Remi Meier
import stmgc
Remi Meier
Merge
Remi Meier
try to fix test_stm_integration.py
Armin Rigo
'weakref_deref' needs an immutable read barrier
Remi Meier
prefix debug lines with the thread number during testing
Remi Meier
add comment
Remi Meier
move rgc.no_release_gil to backendopt
Remi Meier
add rgc.no_release_gil to places that may access the prebuilt assembler object
Remi Meier
add support for instantiate_call to rgc.no_release_gil
Remi Meier
in-progress fixes to test_stm_integration
Remi Meier
import stmgc
Remi Meier
threadlocal_base() should not be threadsafe (and release the gil)
Remi Meier
implement rgc.no_release_gil
Remi Meier
merge static-write-barriers
Remi Meier
import stmgc
Remi Meier
cleanup for last fix
Remi Meier
fix bug where spilled references do not get updated by stm barriers
Remi Meier
import stmgc
Armin Rigo
import stmgc/d2e01fce511f
Armin Rigo
import stmgc/f614fd3a4080
Remi Meier
some pure operations need barriers (stmrewrite.py)
Armin Rigo
import stmgc/c83f63e68ab7
Armin Rigo
For now, withmapdict=True doesn't really make sense with STM, so don't enable it if we select both STM and the JIT.
Armin Rigo
hg merge stmgc-c4
Armin Rigo
import stmgc/e14cbe1e040b
Armin Rigo
Add a (failing) test: most operations with GC in their name need to be explicitly handled by stmrewrite. This is a hack but it gives some future-proofing against adding new GC operations and forgetting that they need special STM support.
Armin Rigo
import stmgc/c7b63aa9d1ad
Armin Rigo
import stmgc/7b20231c8672
Armin Rigo
Hack to avoid the algorithm getting stuck (maybe)
Armin Rigo
Fixes
Armin Rigo
Do some whole-graph analysis.
Armin Rigo
No-op: refactoring
Armin Rigo
Improve generation of write barriers: we only need to check GCFLAG_WRITEBARRIER when we're writing a GC pointer into the object.
Remi Meier
fix an error in richards.py caused by missing barriers in llmodel.py
Armin Rigo
Add a XXX about that case
Remi Meier
remove gcref mess (test_stm_integration runs again)
Armin Rigo
test_cast_gcref_to_int: when running untranslated, accept also _llgcopaque objects and force a cast to integer.
Remi Meier
in-progress
Remi Meier
use test8 instead of cmp8
Remi Meier
fix for ptr_eq because a function returning _Bool only sets the lower 8 bits of the return value
Remi Meier
stmgc import
Remi Meier
extend test (fails now :( )
Remi Meier
start using allocate_public_integer_address. Breaks tests in test_stm_integration.py...
Remi Meier
the revision too...
Remi Meier
import stmgc with with allocate_public_integer_address
Remi Meier
fix that test so it makes sense
Armin Rigo
Add a test that actually shows that GCREFs work, even if slightly inefficiently --- which is probably fine.
Armin Rigo
Fix the test
Armin Rigo
Test failing because of the XXX in writebarrier.py
Armin Rigo
import stmgc/50d9d16d6327
Armin Rigo
If gcremovetypeptr, we can access directly the typeptr field even on a stub.
Armin Rigo
Prebuilt objects cannot be stubs.
Armin Rigo
import stmgc/edbd90784082
Armin Rigo
Fix barrier choice
Armin Rigo
Finish generating all new barrier combinations
Armin Rigo
in-progress: use the 5 barriers
Remi Meier
trying to find all locations where gcrefs are encoded in the trace and make them non-movable.
Remi Meier
avoid deadlock by transaction committing and another one because a call to stmcb_size() could call become_inevitable()
Remi Meier
add some another test
Remi Meier
also add read_cache fastpath to stm_read_barrier in gc.py
Remi Meier
test gc.py's stm barrier fastpaths
Armin Rigo
Yay, finally found out the objdump option "-m i386:x86-64". Solves the truncated addresses. (transplanted from 37b092c3f176633f1d5cc053d351c5f2b0684482)
Armin Rigo
Use stm_pointer_equal_prebuilt; test.
Armin Rigo
Clean up imports
Armin Rigo
import stmgc/9dc18268f0da
Armin Rigo
A branch to improve the static placement of barriers
Remi Meier
implement fastpath in read and write barriers of gc.py, but fail at testing them
Remi Meier
fix forgotten jitframe allocation before call_assembler
Armin Rigo
merge heads
Armin Rigo
Always load symbols from the executable, but just print an error and continue if that fails. (transplanted from 783e5f660b9c7243739521564f436c0d56af0d99)
Armin Rigo
Try to reuse the World class from viewcode. It will correctly handle the patching, so unlike the previous version, we see correct jump targets, for example. It's still a mess because of various issues like objdump truncating addresses to 4 bytes. (transplanted from 6688b05ff4aa2c733d5150b9a0a757bc95ea4bb3)
Armin Rigo
Print assembler including the address of the current instruction and the raw bytes; I think there is little point in hiding information here, and it lets us see that some jumps have a bogus destination address (unpatched) (transplanted from 2d0eaeda9275f908f52a75973b1b63c6fa9baa80)
Armin Rigo
Fix on 32-bit linux (transplanted from 476cabac8fcb9f22775630b8f998ca393697f81d)
Remi Meier
hack to show full 64bit addresses in assembler dump of jitviewer. This doesn't work in cases where the truncated (by objdump) 32bit address already overflows
Remi Meier
make exception thread-local stm-aware
Remi Meier
add guard_value to stm_integration tests
Remi Meier
give up and hack to make test pass (checking guard_true/false with ptr_eq)
Remi Meier
even more fixes. still, jf_descr contains some weird value
Remi Meier
another fix
Remi Meier
fix something, still not working
Remi Meier
in progress
Remi Meier
test and fix ptr_eq
Remi Meier
test stm_write_barrier fastpaths
Remi Meier
fix in test-code and test both fastpaths of the read_barrier
Remi Meier
first test for stm_read_barrier fastpath
Remi Meier
lots of little changes and possible untested fixes
Remi Meier
do a ptr_eq on guard_value() comparing two ptrs
Remi Meier
reenable gcremovetypeptr. seems to work now
Remi Meier
remove need for another temporary register in stm_read_barrier fastpath
Armin Rigo
'base_loc' is not actually ebp, but an immediate, which (on 64-bit) may not fit a 32-bit number; the encoding Remi did is correct in that case. But if it is (or fits) 32-bit, use directly INC_j, with the logic of regloc.py to pick.
Remi Meier
Merge
Remi Meier
add resop for incrementing debug counters
Remi Meier
invalidate all 'R' variables after a write barrier. Can be improved with aliasing info and other tricks
Armin Rigo
Mention vtune
Armin Rigo
The nursery allocs don't have a fast-path right now
Armin Rigo
List some optimization opportunities outside the JIT.
Remi Meier
fix and expand test
Remi Meier
add jump()s
Remi Meier
and another test for stmrewrite.py
Remi Meier
more testing, more fixes
Remi Meier
yet another failing test for stmrewrite
Remi Meier
forgot the case where cmp(immed,immed) in ptr_eq
Remi Meier
needed for calling clear_exception_data_on_abort, I guess..
Remi Meier
another failing test for stmrewrite
Remi Meier
hack-in clearing of exception on abort (untested)
Remi Meier
make pypy-jit translate with excessive use of @dont_look_inside
Remi Meier
fix problem in zrpy_gc_test.py (we need to break the transaction in order to free all possible weakref'ed objects)
Remi Meier
fix ptr_eq and add a test for it in zrpy_gc_test.py
Remi Meier
add failing test for repeating a read_barrier after a write_barrier
Remi Meier
add stm_dont_track_raw_accesses hint for classes; use it for 'aroundstate' also mark ExcData to not track. this may require clearing it on abort!
Remi Meier
adapt to new api
Remi Meier
Merge
Remi Meier
attempt to implement ptr_eq fastpath
Remi Meier
remove a jump
Armin Rigo
Another XXX
Armin Rigo
A problem with can_move()
Armin Rigo
Add a direct translation test for weakrefs
Armin Rigo
Update these constants
Armin Rigo
Import stmgc/c528da482152
Remi Meier
fix
Remi Meier
bah
Remi Meier
improve asm of fastpath in stm barriers
Armin Rigo
Add 'CMP_ra' to rx86.py.
Remi Meier
Add fastpaths for read/write barriers for x64. The asm is still seriously non-optimal in the fastpath
Remi Meier
add first part of a fastpath to stm_read_barrier (makes targettlc slower)
Remi Meier
let jitviewer show symbol names for addresses (like viewcode.py)
Remi Meier
make jitviewer show rewritten trace
Remi Meier
make jitviewer work by ignoring thread numbers in log files
Remi Meier
take the real address
Remi Meier
attempt to use stmtlocal.py for stm_shadowstack
Remi Meier
little improvement to register usage
Remi Meier
better log output
Remi Meier
add weakref.c/h to hg
Remi Meier
fix a few tests
Remi Meier
possibly fix things by not using registers that aren't saved
Remi Meier
fix more tools for new thread number prefix in logs
Remi Meier
fix logparser and viewcode.py for new thread number prefix in logs
Remi Meier
add weakref support and log rewritten jit trace
Remi Meier
import weakref branch
Remi Meier
merge (I should pull before doing things..)
Remi Meier
repeat writebarrier after possible minor collect here too
Remi Meier
repeat write barriers after a possible minor collection
Armin Rigo
Adpat writebarrier.py to the precise current set of requirements.
Remi Meier
prepare for fastpath for ptr_eq and fix slowpath of stm-barriers
Remi Meier
fighting layers to make it work
Remi Meier
trying to implement _record_constptrs(). doesn't work so far
Remi Meier
fix and add more tests
Remi Meier
satisfy some tests
Remi Meier
forgot OP_STM_GET_ROOT_STACK_TOP in funcgen
Remi Meier
progress on stm barriers (without fastpath) and GC without malloc fastpaths (nursery)
Remi Meier
remove R2W for now; introduce is_stm on GcRootMap
Remi Meier
break less stuff
Remi Meier
hopefully in the right direction: now a single cond_call_stm_b because there may be many more variants in the future.
Armin Rigo
We can't leave getarraysize or the immutable getfields fully unmodified. We'd need at least some lightweight read barrier to detect stubs. For now we just put a regular read barrier.
Remi Meier
we don't need that extra parameter
Remi Meier
skip stm_barriers; no implementation in runner.py
Armin Rigo
Import stmgc/dd0aff1663a1
Armin Rigo
hg merge
Armin Rigo
Fix the test. Now test_ztranslated passes completely.
Armin Rigo
test_collect.
Armin Rigo
Import stmgc/88246694721e
Armin Rigo
Progress on the remaining tests
Armin Rigo
Pass again test_ztranslated:test_abort_info
Armin Rigo
Import stmgc/007ac02eb935
Remi Meier
no fastpath for gc write/read barriers
Remi Meier
extract stm barriers from normal write barrier
Remi Meier
try to satisfy tests..
857 commits not shown.