[pypy-commit] pypy quad-color-gc: Update qcgc codebase (bugfix)
ntruessel
pypy.commits at gmail.com
Tue Sep 13 03:31:26 EDT 2016
Author: Nicolas Truessel <ntruessel at njsm.de>
Branch: quad-color-gc
Changeset: r87058:253023b456c9
Date: 2016-09-13 09:30 +0200
http://bitbucket.org/pypy/pypy/changeset/253023b456c9/
Log: Update qcgc codebase (bugfix)
diff --git a/rpython/memory/gc/qcgc.py b/rpython/memory/gc/qcgc.py
--- a/rpython/memory/gc/qcgc.py
+++ b/rpython/memory/gc/qcgc.py
@@ -12,7 +12,7 @@
_alloc_flavor_ = "raw"
moving_gc = False
needs_write_barrier = True
- malloc_zero_filled = True
+ malloc_zero_filled = False
prebuilt_gc_objects_are_static_roots = True # XXX: ?
can_usually_pin_objects = False
object_minimal_size = 0
@@ -32,7 +32,7 @@
hdr.tid = llop.combine_ushort(lltype.Signed, typeid, 0)
hdr.hash = rffi.cast(lltype.Signed, 0)
- def malloc_fixedsize_clear(self, typeid, size,
+ def malloc_fixedsize(self, typeid, size,
needs_finalizer=False,
is_finalizer_light=False,
contains_weakptr=False):
@@ -43,8 +43,7 @@
self.init_gc_object(obj, typeid)
return llmemory.cast_adr_to_ptr(obj, llmemory.GCREF)
- def malloc_varsize_clear(self, typeid, length, size, itemsize,
- offset_to_length):
+ def malloc_varsize(self, typeid, length, size, itemsize, offset_to_length):
if length < 0:
raise MemoryError
#
diff --git a/rpython/memory/gctransform/qcgcframework.py b/rpython/memory/gctransform/qcgcframework.py
--- a/rpython/memory/gctransform/qcgcframework.py
+++ b/rpython/memory/gctransform/qcgcframework.py
@@ -46,7 +46,7 @@
if needs_hash:
hdr.hash = lltype.identityhash_nocache(obj._as_ptr())
else:
- assert hdr.hash == 0
+ hdr.hash = 0
return hdr
def push_roots(self, hop, keep_current_args=False):
diff --git a/rpython/translator/c/src/qcgc/src/allocator.c b/rpython/translator/c/src/qcgc/src/allocator.c
--- a/rpython/translator/c/src/qcgc/src/allocator.c
+++ b/rpython/translator/c/src/qcgc/src/allocator.c
@@ -137,7 +137,7 @@
memset(result, 0, cells * sizeof(cell_t));
#endif
- result->flags |= QCGC_GRAY_FLAG;
+ result->flags = QCGC_GRAY_FLAG;
#if CHECKED
assert(qcgc_arena_is_coalesced(qcgc_arena_addr((cell_t *)result)));
if (qcgc_allocator_state.bump_state.remaining_cells > 0) {
@@ -243,7 +243,7 @@
memset(result, 0, cells * sizeof(cell_t));
#endif
- result->flags |= QCGC_GRAY_FLAG;
+ result->flags = QCGC_GRAY_FLAG;
return result;
}
@@ -260,6 +260,7 @@
memset(result, 0, bytes);
#endif
qcgc_hbtable_insert(result);
+ result->flags = QCGC_GRAY_FLAG;
return result;
}
diff --git a/rpython/translator/c/src/qcgc/src/config.h b/rpython/translator/c/src/qcgc/src/config.h
--- a/rpython/translator/c/src/qcgc/src/config.h
+++ b/rpython/translator/c/src/qcgc/src/config.h
@@ -3,7 +3,7 @@
#define CHECKED 0 // Enable runtime sanity checks
#define DEBUG_ZERO_ON_SWEEP 0 // Zero memory on sweep (debug only)
-#define QCGC_INIT_ZERO 1 // Init new objects with zero bytes
+#define QCGC_INIT_ZERO 0 // Init new objects with zero bytes
/**
* Event logger
diff --git a/rpython/translator/c/src/qcgc/src/core.c b/rpython/translator/c/src/qcgc/src/core.c
--- a/rpython/translator/c/src/qcgc/src/core.c
+++ b/rpython/translator/c/src/qcgc/src/core.c
@@ -85,8 +85,7 @@
if (size <= 1<<QCGC_LARGE_ALLOC_THRESHOLD_EXP) {
// Use bump / fit allocator
- //if (qcgc_allocator_state.use_bump_allocator) {
- if (true) {
+ if (qcgc_allocator_state.use_bump_allocator) {
result = qcgc_bump_allocate(size);
} else {
result = qcgc_fit_allocate(size);
More information about the pypy-commit
mailing list