Author: Armin Rigo <ar...@tunes.org> Branch: c7-refactor Changeset: r779:77f7aa36c2c7 Date: 2014-02-19 10:44 +0100 http://bitbucket.org/pypy/stmgc/changeset/77f7aa36c2c7/
Log: A test for 44b81083d7cf. diff --git a/c7/test/support.py b/c7/test/support.py --- a/c7/test/support.py +++ b/c7/test/support.py @@ -291,6 +291,9 @@ class Conflict(Exception): pass +class EmptyStack(Exception): + pass + def is_in_nursery(o): return lib._stm_in_nursery(o) @@ -464,6 +467,8 @@ def pop_root(self): tl = self.tls[self.current_thread] curlength = tl.shadowstack - tl.shadowstack_base + if curlength == 0: + raise EmptyStack assert 0 < curlength <= SHADOWSTACK_LENGTH tl.shadowstack -= 1 return ffi.cast("object_t *", tl.shadowstack[0]) diff --git a/c7/test/test_basic.py b/c7/test/test_basic.py --- a/c7/test/test_basic.py +++ b/c7/test/test_basic.py @@ -402,6 +402,12 @@ assert stm_get_char(lp1, offset=4103) == 'b' self.commit_transaction() + def test_abort_restores_shadowstack(self): + self.start_transaction() + self.push_root(ffi.cast("object_t *", 0)) + self.abort_transaction() + py.test.raises(EmptyStack, self.pop_root) + # def test_resolve_write_write_no_conflict(self): # self.start_transaction() # p1 = stm_allocate(16) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit