Author: Armin Rigo <[email protected]>
Branch: stmgc-c4
Changeset: r65096:e51b8ee36edd
Date: 2013-06-29 14:26 +0200
http://bitbucket.org/pypy/pypy/changeset/e51b8ee36edd/
Log: Reimport
diff --git a/rpython/translator/stm/import_stmgc.py
b/rpython/translator/stm/import_stmgc.py
--- a/rpython/translator/stm/import_stmgc.py
+++ b/rpython/translator/stm/import_stmgc.py
@@ -9,9 +9,8 @@
import sys, py, subprocess
-def mangle(lines, rev):
- yield ("/* Imported by rpython/translator/stm/import_stmgc.py: %s */\n"
- % rev)
+def mangle(lines):
+ yield "/* Imported by rpython/translator/stm/import_stmgc.py */\n"
for line in lines:
yield line
@@ -34,8 +33,10 @@
path.join('..').ensure(dir=1)
if path.check():
path.remove()
- path.write(''.join(mangle(p.readlines(), rev)))
+ path.write(''.join(mangle(p.readlines())))
path.chmod(0444)
+ #
+ stmgc_dest.join('revision').write('%s\n' % rev)
if __name__ == '__main__':
if len(sys.argv) != 2:
diff --git a/rpython/translator/stm/src_stm/atomic_ops.h
b/rpython/translator/stm/src_stm/atomic_ops.h
--- a/rpython/translator/stm/src_stm/atomic_ops.h
+++ b/rpython/translator/stm/src_stm/atomic_ops.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_ATOMIC_OPS_
#define _SRCSTM_ATOMIC_OPS_
diff --git a/rpython/translator/stm/src_stm/dbgmem.c
b/rpython/translator/stm/src_stm/dbgmem.c
--- a/rpython/translator/stm/src_stm/dbgmem.c
+++ b/rpython/translator/stm/src_stm/dbgmem.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
#include <sys/mman.h>
@@ -65,6 +65,7 @@
dprintf(("stm_malloc(%zu): %p\n", sz, result));
assert(((intptr_t)(result + sz) & (PAGE_SIZE-1)) == 0);
+ memset(result, 0xBB, sz);
return result;
}
@@ -90,6 +91,13 @@
return accessible_pages[base] == 42;
}
+void assert_cleared(char *p, size_t size)
+{
+ size_t i;
+ for (i = 0; i < size; i++)
+ assert(p[i] == 0);
+}
+
/************************************************************/
#endif
@@ -98,6 +106,7 @@
size_t already_cleared)
{
char *baseaddr = base;
+ assert(already_cleared <= size);
if (size > 2 * PAGE_SIZE) {
int lowbits = ((intptr_t)baseaddr) & (PAGE_SIZE-1);
@@ -128,4 +137,5 @@
if (size > already_cleared) { /* clear the final misaligned part, if any */
memset(baseaddr, 0, size - already_cleared);
}
+ assert_cleared(base, size);
}
diff --git a/rpython/translator/stm/src_stm/dbgmem.h
b/rpython/translator/stm/src_stm/dbgmem.h
--- a/rpython/translator/stm/src_stm/dbgmem.h
+++ b/rpython/translator/stm/src_stm/dbgmem.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_DBGMEM_H
#define _SRCSTM_DBGMEM_H
@@ -8,11 +8,13 @@
void *stm_malloc(size_t);
void stm_free(void *, size_t);
int _stm_can_access_memory(char *);
+void assert_cleared(char *, size_t);
#else
#define stm_malloc(sz) malloc(sz)
#define stm_free(p,sz) free(p)
+#define assert_cleared(p,sz) do { } while(0)
#endif
diff --git a/rpython/translator/stm/src_stm/et.c
b/rpython/translator/stm/src_stm/et.c
--- a/rpython/translator/stm/src_stm/et.c
+++ b/rpython/translator/stm/src_stm/et.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
/* -*- c-basic-offset: 2 -*- */
/* XXX assumes that time never wraps around (in a 'long'), which may be
diff --git a/rpython/translator/stm/src_stm/et.h
b/rpython/translator/stm/src_stm/et.h
--- a/rpython/translator/stm/src_stm/et.h
+++ b/rpython/translator/stm/src_stm/et.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
/*** Extendable Timestamps
*
* Documentation:
diff --git a/rpython/translator/stm/src_stm/fprintcolor.c
b/rpython/translator/stm/src_stm/fprintcolor.c
--- a/rpython/translator/stm/src_stm/fprintcolor.c
+++ b/rpython/translator/stm/src_stm/fprintcolor.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
diff --git a/rpython/translator/stm/src_stm/fprintcolor.h
b/rpython/translator/stm/src_stm/fprintcolor.h
--- a/rpython/translator/stm/src_stm/fprintcolor.h
+++ b/rpython/translator/stm/src_stm/fprintcolor.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include <stdarg.h>
#include "stmimpl.h"
diff --git a/rpython/translator/stm/src_stm/gcpage.c
b/rpython/translator/stm/src_stm/gcpage.c
--- a/rpython/translator/stm/src_stm/gcpage.c
+++ b/rpython/translator/stm/src_stm/gcpage.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
diff --git a/rpython/translator/stm/src_stm/gcpage.h
b/rpython/translator/stm/src_stm/gcpage.h
--- a/rpython/translator/stm/src_stm/gcpage.h
+++ b/rpython/translator/stm/src_stm/gcpage.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_GCPAGE_H
#define _SRCSTM_GCPAGE_H
diff --git a/rpython/translator/stm/src_stm/lists.c
b/rpython/translator/stm/src_stm/lists.c
--- a/rpython/translator/stm/src_stm/lists.c
+++ b/rpython/translator/stm/src_stm/lists.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
/************************************************************/
diff --git a/rpython/translator/stm/src_stm/lists.h
b/rpython/translator/stm/src_stm/lists.h
--- a/rpython/translator/stm/src_stm/lists.h
+++ b/rpython/translator/stm/src_stm/lists.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_LISTS_H
#define _SRCSTM_LISTS_H
diff --git a/rpython/translator/stm/src_stm/nursery.c
b/rpython/translator/stm/src_stm/nursery.c
--- a/rpython/translator/stm/src_stm/nursery.c
+++ b/rpython/translator/stm/src_stm/nursery.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
@@ -73,6 +73,15 @@
P = (gcptr)cur;
P->h_tid = tid;
}
+#ifdef _GC_DEBUG
+ if (P != NULL) {
+ assert(P->h_tid != 0);
+ assert_cleared(((char *)P) + sizeof(revision_t),
+ size - sizeof(revision_t));
+ }
+ else
+ assert(tid == -1);
+#endif
return P;
}
@@ -539,18 +548,6 @@
*/
teardown_minor_collect(d);
- /* if in debugging mode, we allocate a different nursery and make
- the old one inaccessible
- */
-#if defined(_GC_DEBUG) && _GC_DEBUG >= 2
- stm_free(d->nursery_base, GC_NURSERY);
- d->nursery_base = stm_malloc(GC_NURSERY);
- d->nursery_end = d->nursery_base + GC_NURSERY;
- d->nursery_nextlimit = d->nursery_base;
- dprintf(("minor: nursery moved to [%p to %p]\n", d->nursery_base,
- d->nursery_end));
-#endif
-
/* When doing minor collections with the nursery "mostly empty",
as occurs when other threads force major collections but this
thread didn't do much at all, then we clear the nursery using
@@ -573,6 +570,20 @@
d->nursery_cleared = NC_REGULAR;
}
+ /* if in debugging mode, we allocate a different nursery and make
+ the old one inaccessible
+ */
+#if defined(_GC_DEBUG) && _GC_DEBUG >= 2
+ if (d->nursery_cleared == NC_ALREADY_CLEARED)
+ assert_cleared(d->nursery_base, GC_NURSERY);
+ stm_free(d->nursery_base, GC_NURSERY);
+ d->nursery_base = stm_malloc(GC_NURSERY);
+ d->nursery_end = d->nursery_base + GC_NURSERY;
+ dprintf(("minor: nursery moved to [%p to %p]\n", d->nursery_base,
+ d->nursery_end));
+ if (d->nursery_cleared == NC_ALREADY_CLEARED)
+ memset(d->nursery_base, 0, GC_NURSERY);
+#endif
d->nursery_current = d->nursery_base;
d->nursery_nextlimit = d->nursery_base;
@@ -641,6 +652,7 @@
/* Allocate it externally, and make it old */
gcptr P = stmgcpage_malloc(allocate_size);
+ memset(P, 0, allocate_size);
P->h_tid = tid | GCFLAG_OLD;
gcptrlist_insert(&d->old_objects_to_trace, P);
return P;
@@ -673,5 +685,7 @@
assert(d->nursery_current <= d->nursery_nextlimit);
P->h_tid = tid;
+ assert_cleared(((char *)P) + sizeof(revision_t),
+ allocate_size - sizeof(revision_t));
return P;
}
diff --git a/rpython/translator/stm/src_stm/nursery.h
b/rpython/translator/stm/src_stm/nursery.h
--- a/rpython/translator/stm/src_stm/nursery.h
+++ b/rpython/translator/stm/src_stm/nursery.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_NURSERY_H
#define _SRCSTM_NURSERY_H
diff --git a/rpython/translator/stm/src_stm/revision
b/rpython/translator/stm/src_stm/revision
new file mode 100644
--- /dev/null
+++ b/rpython/translator/stm/src_stm/revision
@@ -0,0 +1,1 @@
+c856b6a0d157
diff --git a/rpython/translator/stm/src_stm/steal.c
b/rpython/translator/stm/src_stm/steal.c
--- a/rpython/translator/stm/src_stm/steal.c
+++ b/rpython/translator/stm/src_stm/steal.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
diff --git a/rpython/translator/stm/src_stm/steal.h
b/rpython/translator/stm/src_stm/steal.h
--- a/rpython/translator/stm/src_stm/steal.h
+++ b/rpython/translator/stm/src_stm/steal.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_STEAL_H
#define _SRCSTM_STEAL_H
diff --git a/rpython/translator/stm/src_stm/stmgc.c
b/rpython/translator/stm/src_stm/stmgc.c
--- a/rpython/translator/stm/src_stm/stmgc.c
+++ b/rpython/translator/stm/src_stm/stmgc.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
/* This file is optional: it can be used to compile all .c files
* into one single big compilation unit. You must compile either
* this, or individually the other .c files in this directory.
diff --git a/rpython/translator/stm/src_stm/stmgc.h
b/rpython/translator/stm/src_stm/stmgc.h
--- a/rpython/translator/stm/src_stm/stmgc.h
+++ b/rpython/translator/stm/src_stm/stmgc.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _STMGC_H
#define _STMGC_H
diff --git a/rpython/translator/stm/src_stm/stmimpl.h
b/rpython/translator/stm/src_stm/stmimpl.h
--- a/rpython/translator/stm/src_stm/stmimpl.h
+++ b/rpython/translator/stm/src_stm/stmimpl.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_IMPL_H
#define _SRCSTM_IMPL_H
diff --git a/rpython/translator/stm/src_stm/stmsync.c
b/rpython/translator/stm/src_stm/stmsync.c
--- a/rpython/translator/stm/src_stm/stmsync.c
+++ b/rpython/translator/stm/src_stm/stmsync.c
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#include "stmimpl.h"
diff --git a/rpython/translator/stm/src_stm/stmsync.h
b/rpython/translator/stm/src_stm/stmsync.h
--- a/rpython/translator/stm/src_stm/stmsync.h
+++ b/rpython/translator/stm/src_stm/stmsync.h
@@ -1,4 +1,4 @@
-/* Imported by rpython/translator/stm/import_stmgc.py: 45380d4cb89c */
+/* Imported by rpython/translator/stm/import_stmgc.py */
#ifndef _SRCSTM_STMSYNC_H
#define _SRCSTM_STMSYNC_H
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit