Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r69754:acd1f927bb36
Date: 2014-03-06 11:28 +0100
http://bitbucket.org/pypy/pypy/changeset/acd1f927bb36/
Log: Hack hack
diff --git a/rpython/memory/gctransform/framework.py
b/rpython/memory/gctransform/framework.py
--- a/rpython/memory/gctransform/framework.py
+++ b/rpython/memory/gctransform/framework.py
@@ -191,19 +191,9 @@
# run-time teardown code for tests!
gcdata.gc._teardown()
- bk = self.translator.annotator.bookkeeper
r_typeid16 = rffi.platform.numbertype_to_rclass[TYPE_ID]
s_typeid16 = annmodel.SomeInteger(knowntype=r_typeid16)
- # the point of this little dance is to not annotate
- # self.gcdata.static_root_xyz as constants. XXX is it still needed??
- data_classdef = bk.getuniqueclassdef(gctypelayout.GCData)
- data_classdef.generalize_attr('static_root_start', SomeAddress())
- data_classdef.generalize_attr('static_root_nongcend', SomeAddress())
- data_classdef.generalize_attr('static_root_end', SomeAddress())
- data_classdef.generalize_attr('max_type_id', annmodel.SomeInteger())
- data_classdef.generalize_attr('typeids_z', SomeAddress())
-
annhelper = annlowlevel.MixLevelHelperAnnotator(self.translator.rtyper)
def getfn(ll_function, args_s, s_result, inline=False,
@@ -227,6 +217,7 @@
self.weakref_deref_ptr = self.inittime_helper(
ll_weakref_deref, [llmemory.WeakRefPtr], llmemory.Address)
+ bk = self.translator.annotator.bookkeeper
classdef = bk.getuniqueclassdef(GCClass)
s_gc = annmodel.SomeInstance(classdef)
@@ -272,6 +263,16 @@
from rpython.memory.gc.base import ARRAY_TYPEID_MAP
from rpython.memory.gc import inspector
+ # the point of this little dance is to not annotate
+ # self.gcdata.static_root_xyz as constants. XXX is it still needed??
+ bk = self.translator.annotator.bookkeeper
+ data_classdef = bk.getuniqueclassdef(gctypelayout.GCData)
+ data_classdef.generalize_attr('static_root_start', SomeAddress())
+ data_classdef.generalize_attr('static_root_nongcend', SomeAddress())
+ data_classdef.generalize_attr('static_root_end', SomeAddress())
+ data_classdef.generalize_attr('max_type_id', annmodel.SomeInteger())
+ data_classdef.generalize_attr('typeids_z', SomeAddress())
+
s_gcref = SomePtr(llmemory.GCREF)
gcdata = self.gcdata
translator = self.translator
diff --git a/rpython/memory/gctransform/stmframework.py
b/rpython/memory/gctransform/stmframework.py
--- a/rpython/memory/gctransform/stmframework.py
+++ b/rpython/memory/gctransform/stmframework.py
@@ -38,6 +38,10 @@
llannotation.SomePtr(GCClass.VISIT_FPTR)],
annmodel.s_None))
+ def finish_tables(self):
+ self.layoutbuilder.close_table()
+ return []
+
def build_root_walker(self):
return StmRootWalker(self)
diff --git a/rpython/translator/c/node.py b/rpython/translator/c/node.py
--- a/rpython/translator/c/node.py
+++ b/rpython/translator/c/node.py
@@ -72,7 +72,7 @@
if isinstance(T, GcStruct):
node = self.db.gettypedefnode(T, varlength=varlength)
self.dependencies.add(node)
- return 'struct %s' % node.name
+ return 'struct %s @' % node.name
if isinstance(T, OpaqueType):
if T.hints.get("is_stm_header", False):
return 'struct rpyobj_s @'
@@ -538,7 +538,7 @@
else:
assert self.implementationtypename.endswith('_t @')
uniontypename = 'union %su @'%self.implementationtypename[:-4]
- if self.db.with_stm():
+ if self.db.with_stm() and self.getTYPE()._gckind == 'gc':
uniontypename = 'TLPREFIX ' + uniontypename
return uniontypename, self.name[:-2]
else:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit