[pypy-commit] stmgc copy-over-original2: More fixes.
arigo
noreply at buildbot.pypy.org
Fri Jul 26 10:02:51 CEST 2013
Author: Armin Rigo <arigo at tunes.org>
Branch: copy-over-original2
Changeset: r446:0d0ab39425d7
Date: 2013-07-26 10:02 +0200
http://bitbucket.org/pypy/stmgc/changeset/0d0ab39425d7/
Log: More fixes.
diff --git a/c4/gcpage.c b/c4/gcpage.c
--- a/c4/gcpage.c
+++ b/c4/gcpage.c
@@ -241,8 +241,10 @@
size_t objsize;
if (obj->h_tid & GCFLAG_STUB)
objsize = sizeof(struct stm_stub_s);
- else
+ else {
objsize = stmgc_size(obj);
+ assert(objsize > sizeof(struct stm_stub_s) - WORD);
+ }
dprintf(("copy %p over %p (%ld bytes)\n", obj, id_copy, objsize));
memcpy(id_copy + 1, obj + 1, objsize - sizeof(struct stm_object_s));
diff --git a/c4/test/support.py b/c4/test/support.py
--- a/c4/test/support.py
+++ b/c4/test/support.py
@@ -586,7 +586,7 @@
def delegate(p1, p2):
assert classify(p1) == "public"
assert classify(p2) == "public"
- assert lib.gettid(p1) != 42 and lib.gettid(p2) == lib.gettid(p1)
+ assert lib.gettid(p1) != 42 + HDR and lib.gettid(p2) == lib.gettid(p1)
p1.h_revision = ffi.cast("revision_t", p2)
p1.h_tid |= GCFLAG_PUBLIC_TO_PRIVATE
if p1.h_tid & GCFLAG_PREBUILT_ORIGINAL:
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
@@ -201,8 +201,8 @@
assert p3 == lib.stm_write_barrier(p1)
def test_new_version_id_alive():
- p1 = oalloc(HDR); make_public(p1)
- p2 = oalloc(HDR); make_public(p2)
+ p1 = oalloc(HDR + WORD); make_public(p1)
+ p2 = oalloc(HDR + WORD); make_public(p2)
delegate(p1, p2)
lib.stm_push_root(p1)
major_collect()
@@ -237,10 +237,10 @@
def test_new_version_kill_intermediate_non_root():
p1 = oalloc_refs(1); make_public(p1)
- p2 = oalloc(HDR); make_public(p2)
- p3 = oalloc(HDR); make_public(p3)
- p4 = oalloc(HDR); make_public(p4)
- p5 = oalloc(HDR); make_public(p5)
+ p2 = oalloc(HDR + WORD); make_public(p2)
+ p3 = oalloc(HDR + WORD); make_public(p3)
+ p4 = oalloc(HDR + WORD); make_public(p4)
+ p5 = oalloc(HDR + WORD); make_public(p5)
delegate(p2, p3)
delegate(p3, p4)
delegate(p4, p5)
@@ -295,9 +295,9 @@
check_prebuilt(p1)
def test_prebuilt_version_2():
- p1 = lib.pseudoprebuilt(HDR, 42 + HDR)
- p2 = oalloc(HDR); make_public(p2)
- p3 = oalloc(HDR); make_public(p3)
+ p1 = lib.pseudoprebuilt(HDR + WORD, 42 + HDR + WORD)
+ p2 = oalloc(HDR + WORD); make_public(p2)
+ p3 = oalloc(HDR + WORD); make_public(p3)
delegate(p1, p2)
delegate(p2, p3)
major_collect()
@@ -306,9 +306,9 @@
check_free_old(p3)
def test_prebuilt_with_hash():
- p1 = lib.pseudoprebuilt_with_hash(HDR, 42 + HDR, 99)
- p2 = oalloc(HDR); make_public(p2)
- p3 = oalloc(HDR); make_public(p3)
+ p1 = lib.pseudoprebuilt_with_hash(HDR + WORD, 42 + HDR + WORD, 99)
+ p2 = oalloc(HDR + WORD); make_public(p2)
+ p3 = oalloc(HDR + WORD); make_public(p3)
delegate(p1, p2)
delegate(p2, p3)
major_collect()
More information about the pypy-commit
mailing list