Author: Armin Rigo <[email protected]>
Branch:
Changeset: r167:34b9dddf5a8c
Date: 2013-06-17 13:54 +0200
http://bitbucket.org/pypy/stmgc/changeset/34b9dddf5a8c/
Log: Next test
diff --git a/c4/et.c b/c4/et.c
--- a/c4/et.c
+++ b/c4/et.c
@@ -1345,6 +1345,14 @@
struct tx_public_descriptor *stm_descriptor_array[MAX_THREADS] = {0};
static revision_t descriptor_array_free_list = 0;
+void _stm_test_forget_previous_state(void)
+{
+ fprintf(stderr, "=======================================================\n");
+ assert(thread_descriptor == NULL);
+ memset(stm_descriptor_array, 0, sizeof(stm_descriptor_array));
+ descriptor_array_free_list = 0;
+}
+
int DescriptorInit(void)
{
if (GCFLAG_PREBUILT != PREBUILT_FLAGS)
diff --git a/c4/et.h b/c4/et.h
--- a/c4/et.h
+++ b/c4/et.h
@@ -181,6 +181,7 @@
gcptr stm_get_private_from_protected(long); /* debugging */
gcptr stm_get_read_obj(long); /* debugging */
void stm_clear_read_cache(void); /* debugging */
+void _stm_test_forget_previous_state(void); /* debugging */
int DescriptorInit(void);
void DescriptorDone(void);
diff --git a/c4/test/support.py b/c4/test/support.py
--- a/c4/test/support.py
+++ b/c4/test/support.py
@@ -90,6 +90,7 @@
void *my_stub_thread(void);
int _stm_can_access_memory(char *);
+ void stm_initialize_and_set_max_abort(int max_aborts);
void stm_initialize_tests(int max_aborts);
/* some constants normally private that are useful in the tests */
@@ -219,12 +220,18 @@
return (void *)thread_descriptor->public_descriptor;
}
- void stm_initialize_tests(int max_aborts)
+ void stm_initialize_and_set_max_abort(int max_aborts)
{
stm_initialize();
stm_set_max_aborts(max_aborts);
}
+ void stm_initialize_tests(int max_aborts)
+ {
+ _stm_test_forget_previous_state();
+ stm_initialize_and_set_max_abort(max_aborts);
+ }
+
size_t stmcb_size(gcptr obj)
{
if (gettid(obj) < 421) {
@@ -320,7 +327,7 @@
def run(self, fn, lck):
try:
try:
- lib.stm_initialize_tests(self.max_aborts)
+ lib.stm_initialize_and_set_max_abort(self.max_aborts)
try:
fn(self)
finally:
diff --git a/c4/test/test_gcpage.py b/c4/test/test_gcpage.py
--- a/c4/test/test_gcpage.py
+++ b/c4/test/test_gcpage.py
@@ -32,3 +32,14 @@
assert distance(p2, p3) == HDR
assert abs(distance(p3, p4)) > PAGE_ROOM / 2
assert distance(p4, p5) == HDR + WORD
+
+def test_malloc_page_full():
+ plist = []
+ for i in range(PAGE_ROOM // HDR):
+ plist.append(lib.stmgcpage_malloc(HDR))
+ for p1, p2 in zip(plist[:-1], plist[1:]):
+ assert distance(p1, p2) == HDR
+ assert count_pages() == 1
+ p = lib.stmgcpage_malloc(HDR)
+ assert distance(plist[-1], p) != HDR
+ assert count_pages() == 2
diff --git a/c4/test/test_random.py b/c4/test/test_random.py
--- a/c4/test/test_random.py
+++ b/c4/test/test_random.py
@@ -362,7 +362,7 @@
p = self.pop_roots(extra=p)
def run_single_thread(self):
- lib.stm_initialize_tests(0)
+ lib.stm_initialize_and_set_max_abort(0)
self.interruptible_transaction = False
self.startrev()
#
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit