1. Pypy
  2. Untitled project
  3. pypy

Branches

stmgc-c7

View source
stmgc-c7
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind default.
Armin Rigo
Backed out changeset 4d93e7a10f91: gcc does some optimizations before entering the RTL mode, and these optimizations seem prone to dropping the address space. In other words, it doesn't work at all
Armin Rigo
import stmgc/c7 use-gcc, and use 'gcc-seg-gs'
Armin Rigo
Add TransactionQueue.add_generator()
Armin Rigo
pypy-stm only: add 'print_stm_log.py'
Armin Rigo
Check and complain if there is a "libpypy-c.so" that appears not to be needed
Armin Rigo
Fix: handle optional operation 'guard_not_invalidated?' as the last one in the list
Armin Rigo
Tweaks
Armin Rigo
hg merge release-2.5.x (i.e. 2.5.1)
Armin Rigo
Most probably, that's enough
Armin Rigo
import stmgc/84157d77ae80
Armin Rigo
A possible transaction break must reset the heapcache.
Armin Rigo
Explicitly introduce 'is_stm' and check different things
Armin Rigo
Fix some of these tests
Armin Rigo
make sure the PYPYLOG file is created
Armin Rigo
pom pom pom another try
Armin Rigo
Turn inevitable when changing a thread-local value. This is needed because otherwise, the thread shutdown logic write NULL as the current ExecutionContext, but then if the transaction aborts, we're back in time with still NULL...
Armin Rigo
in-progress
Armin Rigo
Fix test
Armin Rigo
fix
Armin Rigo
Fix tests
Armin Rigo
Remove this stmgc-c4 test entirely for now.
Armin Rigo
merge heads
Armin Rigo
import stmgc/a0b5046a7bea
Armin Rigo
This test finally passes
Armin Rigo
import stmgc/5da5ba86b2fa
Armin Rigo
fix some more conflicts
Armin Rigo
fix: _processing_block may add new entries into must_call_setup
Armin Rigo
Oups
Armin Rigo
Fix the conflict with 'fixed_graphs' by moving this tiny part of the logic outside the transactions.
Armin Rigo
uh
Armin Rigo
Fix the simple weakrefs for STM: don't record them on the object for now.
Armin Rigo
Add another stmdict to reduce conflicts
Armin Rigo
Test and fix for EmptyProfiler
Armin Rigo
Disable the jitprof.Profiler class with stm, as an attempt to reduce conflicts.
Armin Rigo
Phew, this took quite a bit of guessing. See comments.
Armin Rigo
import stmgc/7861b2a77263
Armin Rigo
Backout 7b2e2b3f44f0: it should now work in general (needs to be tested)
Armin Rigo
Insert a call to stm_wait_for_current_inevitable_transaction()
Armin Rigo
import stmgc/a4fc9f31f925
Armin Rigo
Kill outdated ops
Armin Rigo
Temporary workaround: start a new transaction around a lock.release()
Armin Rigo
hg backout 1349c7207652
Armin Rigo
lldebug translation fix
Armin Rigo
hg merge release-2.5.x
Armin Rigo
merge heads
Armin Rigo
Don't release the GIL, but still make a wrapper, which is needed for stm
Armin Rigo
translation fix
Armin Rigo
hg merge release-2.5.x (from 2.5.1)
Armin Rigo
hg merge release-2.5.x
Armin Rigo
Fix test to also work in lldebug mode (it used to fail because the C hack to allocate does not track the allocation) (grafted from 7926ef4fb1726f88a84ff26324c3a2cff023210a)
Armin Rigo
fix (grafted from 2157c7589dd68e40922774d01db5ee4766bd70ce)
Armin Rigo
Oops, bad move: reading the ll_raw_hashtable field of HASHTABLE_OBJ would be done with a stm_read(), even though it is immutable. Should fix test_hashtable_populate.
Armin Rigo
merge heads
Armin Rigo
Rename the file, so that it is after "test_no_conflict"
Armin Rigo
Change the argument to threadlocalproperty() from a default value to a default value factory (like "defaultdict").
Armin Rigo
Remove "local" here: it is the same thing as "thread._local".
Armin Rigo
Re-export these names from pypystm
Remi Meier
add a TODO
Armin Rigo
Raaaah I hate libffi. (grafted from 8e51496c782298ffe274ce4e64aa33d98be65c0b)
Armin Rigo
minor stuff
Armin Rigo
Obscure: after inserting an extra line at the start of the file, kill the first empty line to restore the correct line numbers
Armin Rigo
import stmgc/b26fe28d6f2b
Armin Rigo
Fix platform.python_implementation() for the stm branch
Armin Rigo
(xoraxax, arigo) Fix two broken behaviors of zipimport: * random exceptions produced by importing the modules were eaten and (sometimes) re-raised as ZipImportErrors with the same message, which does not make sense (added test_import_exception) * calling import_py_file() from import_pyc_file() would try to parse the pyc bytes as Python code! (transplanted from 5ada2fb6796fbc176e7ea49c513fd1edf1ddf709)
Armin Rigo
Finish the classification of all operations that are seen when translating pypy-stm
Armin Rigo
print the command-line executed
Armin Rigo
Fix test
Armin Rigo
Classify all operations into one of the groups.
Armin Rigo
merge heads
Armin Rigo
fix
Armin Rigo
Fix test_lloperation
Armin Rigo
import stmgc/78281a990907
Armin Rigo
Improve the test, still failing
Armin Rigo
Two tests. One fails and one passes
Armin Rigo
merge heads
Armin Rigo
translation fix
Armin Rigo
really fix it
Armin Rigo
stm fix
Armin Rigo
The new rgc.ll_arrayclear() needs a stm fall-back version too
Armin Rigo
translation fixes
Armin Rigo
more fixes
Armin Rigo
fixes
Armin Rigo
hg merge default (not tested so far)
Armin Rigo
A quick way to avoid the many forks (thanks fijal)
Armin Rigo
Move 'pypy_have_debug_prints' to the ExcData instance, which is also thread-local, but which is cleared on transaction aborts.
Armin Rigo
Use the new API
Armin Rigo
Cannot call tq.number_of_transactions_executed() when running.
Armin Rigo
Change again a bit the API in transaction.py. Now it feels more natural.
Armin Rigo
probable translation fix
Armin Rigo
Kill the mostly pointless sharing of PropagateExceptionDescr(). It is wrong now! The backend assumes it can store _x86_stm_guard_failure on the guard's descrs. Check added.
Armin Rigo
We don't really need rstm.allocate_preexisting(), so introduce and use instead rstm.allocate_nonmovable(). There is an annoying rare bug that I've no clue about but could be related to allocate_preexisting().
Armin Rigo
mention revision
Armin Rigo
Copy a fix that occurred on default recently.
Armin Rigo
We really should be allowed to redirect any loop.
Armin Rigo
Only do that if the old token is "redirectable". There are cases where it isn't (test_retracing_bridge_from_interpreter_to_finnish)
Armin Rigo
import stmgc/6c6a18d9e312
Armin Rigo
import stmgc/d4cd534ff49b
Armin Rigo
in-progress: throw away stm_become_globally_unique_transaction() and use instead some other non-implemented-yet API
Armin Rigo
translation fixes
Armin Rigo
Do redirect_call_assembler() in an stm-friendly way too
Armin Rigo
fixes
Armin Rigo
Add a way to patch guard failures without actually patching the assembler
Armin Rigo
Backed out changeset 4d74bdc4535a
Armin Rigo
Use stm_commit_and_start_inevitable() after starting a globally unique transaction.
Armin Rigo
Add comment. (Unsure we'll use it, actually.)
Armin Rigo
Add rstm.allocate_preexisting()
Armin Rigo
import stmgc/19bb1dde7aca
Armin Rigo
Marginally better
Armin Rigo
The tests pass now. Tweaks.
Armin Rigo
import stmgc/65a89cd8a6c0
Armin Rigo
Add the original stm_location to resume's pending_setfields. Needed, otherwise such setfields that occur at the start of a bridge have lost their origin and will be incorrectly reported.
Armin Rigo
kill an old unused attribute
Armin Rigo
tweaks
Armin Rigo
Dump at least the bytecode position part of the stm_location to the logs
Armin Rigo
Improve the tests. Seems for some reason that *only with the JIT* we're getting the wrong location reported for write-read conflicts .
Armin Rigo
fixes
Armin Rigo
call_all_setup() must run iteratively until there is no more setup to call.
Armin Rigo
update to stmgc/ac07eddb02d5
Armin Rigo
There are cases here where the list of pending setups is not empty after specialize_block(). Empty it during the same transaction. Otherwise in rare cases some reprs stay non-setup()ed for a non-deterministic while and then other reprs' setup crash
Armin Rigo
update to stmgc/e0ff682f6615 and fix the RPython code
Armin Rigo
import stmgc/005668d99755
Armin Rigo
re-add 'signals_enabled'
Armin Rigo
Don't default to '--shared' with stm: it has a lot of thread-locals, and reading thread-locals is much slower with --shared
Armin Rigo
Small attempt to speed-up tracing in the GC: force trace() to be inlined here.
Armin Rigo
Fix warning
Armin Rigo
For now, on top of STM, use regular stmdicts instead of weak dicts because of conflicts
Armin Rigo
Fight fight until I can reliably get a failure mode for weakrefs
Armin Rigo
more tests
Armin Rigo
Improve the basic tests
Armin Rigo
Rewrite this code, in a style a bit more defensive
Armin Rigo
import stmgc/10c636ae449e
Armin Rigo
Starting on tests that some operations don't generate conflicts
Armin Rigo
Make another dictionary a stmdict, now that we support calling .items() on it.
Armin Rigo
update to stmgc/88492dc56aa8 (branch hashtable-iter)
Armin Rigo
fix
Armin Rigo
stmdict.pop()
Armin Rigo
stmdict.keys() and similar methods
Armin Rigo
hashtable.keys(), values(), items()
Armin Rigo
Implement space.newlist_int(). So far used only in IntDictStrategy.w_keys(). (grafted from 51818c001ce86503045b7566bdb7b633e1273643)
Armin Rigo
hashtable.__len__
Armin Rigo
_ll_hashtable_list
Armin Rigo
_ll_hashtable_len
Armin Rigo
update to stmgc/de27e8f11e38 (branch hashtable-iter)
Armin Rigo
Do a single lookup in all methods of hashtable, stmset and stmdict.
Armin Rigo
next improvement
Armin Rigo
Make 'added_blocks' a thread-local too
Armin Rigo
Make 'policy' and 'position_key' thread-local
Armin Rigo
Fix this broken logic (duh!). If TLS.hash_level is missing it is assumed to be zero, but then we must also check self.__cached_hash.
Armin Rigo
tweak tweak tweak to make this list thread-local
Armin Rigo
Use pypystm.stmset() instead of stmidset (which should probably be removed soon). Also, "try:" instead of crash.
Armin Rigo
stmdict
Armin Rigo
Add 'stmset'.
Armin Rigo
Update docstring
Armin Rigo
Fix test_transaction, add stmid{set,dict}, use it in one case
Armin Rigo
needs to be really a TLS
Armin Rigo
Use the new API
Armin Rigo
Fix
Armin Rigo
translation fixes
Armin Rigo
In-progress: don't store the stm_location in the gcmap. It's nice to avoid more run-time writes of constants, but the logic to fetch it from there is completely missing and would be hard...
Armin Rigo
Kill outdated type
Armin Rigo
Some lightweight redesign of the API, and more heavyweight redesign of the implementation into a version that should be more conflict-free
Armin Rigo
Check that we don't try to compile with '--stm' on a 32-bit platform or on non-linux
Armin Rigo
Attempt to regroup the stm functions in a single built-in module called 'pypystm'. Also kill 'lib_pypy/atomic.py'.
Armin Rigo
muuuuuch faster
Armin Rigo
next fix
Armin Rigo
Meh, set() is not RPython
Armin Rigo
fix
Armin Rigo
Fixes, and partial revert: must use _HASHTABLE_OBJ everywhere in RPython, not the low-level _STM_HASHTABLE_P, because the latter is not traced!
Armin Rigo
fixes
Armin Rigo
Trying to remove the conflicts on 'alive_loops'.
Armin Rigo
Simplify the finalizer logic with rgc.register_custom_light_finalizer()
Armin Rigo
Add rgc.register_custom_light_finalizer(), similar to rgc.register_custom_trace_hook(). (grafted from 07bf50ea0b54e4c94badcd771c924263046c2fcb)
Armin Rigo
Add missing finalizer to hashtable objects
Armin Rigo
Clarify the output of this tool
Armin Rigo
update to stmgc/e7a6ff9e9da3
Armin Rigo
Use 'PYPYSTM=filename' to produce only 'filename' from the main process, and use 'PYPYSTM=filename+' to produce 'filename' in the main process and 'filename.fork<PID>' in all forked subprocesses.
Armin Rigo
update to stmgc/24b92a4c84be
Armin Rigo
hashtable.get(), hashtable.setdefault()
Armin Rigo
manual transplant of 98d7d3cb4144
Armin Rigo
Fix tests
Armin Rigo
Fix test
Armin Rigo
Trying to parallelize the rtyper
Armin Rigo
Don't load the whole file in memory (doesn't fit for a 600MB file produced by a 10-minutes run) and print progress.
Armin Rigo
update to stmgc/957947bc7ad9
Armin Rigo
Minimal fixes so that a _stm.hashtable at least feels like a dict, even if it has no way to enumerate the keys
Armin Rigo
Bah, PyPyJitDriver did not have 'stm_report_location'.
Armin Rigo
Try harder to preserve the stm_location
Armin Rigo
Account for the usleep(1) we do after an abort
Armin Rigo
Process truncated log files
Remi Meier
fix plot to show all threads
Armin Rigo
next one
Armin Rigo
hg merge default
Armin Rigo
Small fixes
Armin Rigo
fix
Remi Meier
attach clickable info to plot elements
Armin Rigo
more dont_look_insides
Armin Rigo
fix
Armin Rigo
fixes
Armin Rigo
merge heads
Armin Rigo
Fix (and reduce the diff to default)
Armin Rigo
hg merge default
Armin Rigo
Tweaks to reduce the diff from default
Remi Meier
plot pauses
Remi Meier
add basic plot_stm_log script
Remi Meier
check for STM_WAIT_FREE_SEGMENT too
Remi Meier
add useful time line to print_stm_log in order to see if the time was lost in the initialization or shutdown phases instead of the actual runtime.
Armin Rigo
update from the changes done in the list of operations
Armin Rigo
Add the missing part about recording pauses.
Armin Rigo
Update "import_stmgc.py" to show which new files need to be tracked and which old files need to be deleted. Remove three old files.
Armin Rigo
fix
Armin Rigo
(untested) rewrite this part of _write_barrier_fastpath to no longer rely on &write_locks to be in the first 2GB, which is not the case on --shared.
Armin Rigo
We must also add -fPIC here (building --shared with shadowstack)
Armin Rigo
Test and fix
Armin Rigo
fix
Armin Rigo
Use 'extern' here, just to make it easier to find after we merge with the current default.
Armin Rigo
Add _stm.time() and _stm.clock().
Armin Rigo
Temporarily ignore the @must_be_light_finalizer if it causes troubles for STM
Armin Rigo
fixes
Armin Rigo
fix
Armin Rigo
Kill special lock support for now
Armin Rigo
various fixes until llsupport/test/* pass again
Armin Rigo
Add _stm.hashtable().
Armin Rigo
Hopefully finish the RPython interfacing with stm hashtables.
Armin Rigo
With STM, lightweight finalizers must not contain any setfield.
Armin Rigo
Re-add a line that was lost during merge (this line is the diff done to rtyper/lltypesystem/rclass.py, which was deleted)
Armin Rigo
fix some imports
Armin Rigo
fix
Armin Rigo
hg merge 9a6efa2d4493 Merge default up to 7e7044080cc5; then additionally merge the improve-gc-tracing-hooks branch.
Armin Rigo
in-progress: prepare for merging improve-gc-tracing-hooks
Armin Rigo
llify the class Hashtable, in preparation for a custom tracing hook.
Armin Rigo
Mostly implement stmgc's hashtables in RPython.
Armin Rigo
Add 'cast_gcref_to_instance' here. The JIT has code that does indirectly the same thing, but it's cleaner to have a direct inverse of 'cast_instance_to_gcref'. (grafted from 5171dd85f03b3b2eea33c6402e12a4a9d6129d9d)
Armin Rigo
Light finalizers seem to be missing nothing more than being enabled. We'll see if this theory breaks down.
Armin Rigo
tweak _stm.count()
Armin Rigo
Enable the _stm module when translating with stm
Armin Rigo
import stmgc/194265597fad [hashtable]
Armin Rigo
Add _stm.count(), which returns a new integer every time it is called.
Armin Rigo
Start a built-in module "_stm".
Armin Rigo
import stmgc/b27bcdd6bc87 [hashtable]
Armin Rigo
import stmgc/ece6317ba186 [hashtable]
Armin Rigo
Fix
Armin Rigo
Light finalizers: still a problem if they call some function like close(), because that triggers stm_become_inevitable(), which can pause and run gc collections --- not supported in light finalizers.
Armin Rigo
Undo a change, temporarily
Armin Rigo
Add a light finalizer test (not passing yet)
Armin Rigo
Finalizers, step 1
Armin Rigo
Comment
Armin Rigo
Fix tests
Armin Rigo
Kill a test
Armin Rigo
(fijal, arigo) Reintroduce a direct test for _stm_expand_marker_for_pypy
Armin Rigo
Be careful here
1678 commits not shown.