Author: Ronan Lamy <ronan.l...@gmail.com> Branch: kill-typesystem Changeset: r65765:48dff2fcd56e Date: 2013-07-29 02:05 +0100 http://bitbucket.org/pypy/pypy/changeset/48dff2fcd56e/
Log: merge lltypesystem.rvirtualizable2 into rtyper.rvirtualizable2 diff --git a/rpython/rtyper/lltypesystem/rvirtualizable2.py b/rpython/rtyper/lltypesystem/rvirtualizable2.py deleted file mode 100644 --- a/rpython/rtyper/lltypesystem/rvirtualizable2.py +++ /dev/null @@ -1,13 +0,0 @@ -from rpython.rtyper.rmodel import inputconst -from rpython.rtyper.lltypesystem import lltype, llmemory -from rpython.rtyper.lltypesystem.rclass import InstanceRepr, OBJECTPTR -from rpython.rtyper.rvirtualizable2 import AbstractVirtualizable2InstanceRepr - - -class Virtualizable2InstanceRepr(AbstractVirtualizable2InstanceRepr, InstanceRepr): - - def _setup_repr_llfields(self): - llfields = [] - if self.top_of_virtualizable_hierarchy: - llfields.append(('vable_token', llmemory.GCREF)) - return llfields diff --git a/rpython/rtyper/rclass.py b/rpython/rtyper/rclass.py --- a/rpython/rtyper/rclass.py +++ b/rpython/rtyper/rclass.py @@ -1,9 +1,11 @@ import types +from rpython.flowspace.model import Constant from rpython.annotator import description, model as annmodel from rpython.rtyper.error import TyperError from rpython.rtyper.lltypesystem.lltype import Void from rpython.rtyper.rmodel import Repr, getgcflavor, inputconst +from rpython.rlib.objectmodel import UnboxedValue class FieldListAccessor(object): @@ -73,8 +75,7 @@ def buildinstancerepr(rtyper, classdef, gcflavor='gc'): - from rpython.rlib.objectmodel import UnboxedValue - from rpython.flowspace.model import Constant + from rpython.rtyper.rvirtualizable2 import Virtualizable2InstanceRepr if classdef is None: unboxed = [] @@ -91,8 +92,8 @@ if virtualizable2: assert len(unboxed) == 0 assert gcflavor == 'gc' - return rtyper.type_system.rvirtualizable2.Virtualizable2InstanceRepr(rtyper, classdef) - elif usetagging and rtyper.type_system.name == 'lltypesystem': + return Virtualizable2InstanceRepr(rtyper, classdef) + elif usetagging: # the UnboxedValue class and its parent classes need a # special repr for their instances if len(unboxed) != 1: diff --git a/rpython/rtyper/rvirtualizable2.py b/rpython/rtyper/rvirtualizable2.py --- a/rpython/rtyper/rvirtualizable2.py +++ b/rpython/rtyper/rvirtualizable2.py @@ -1,35 +1,40 @@ from rpython.rtyper.rmodel import inputconst, log -from rpython.rtyper.lltypesystem import lltype -from rpython.rtyper.rclass import AbstractInstanceRepr, FieldListAccessor +from rpython.rtyper.lltypesystem import lltype, llmemory +from rpython.rtyper.rclass import FieldListAccessor +from rpython.rtyper.lltypesystem.rclass import InstanceRepr -class AbstractVirtualizable2InstanceRepr(AbstractInstanceRepr): +class Virtualizable2InstanceRepr(InstanceRepr): def _super(self): - return super(AbstractVirtualizable2InstanceRepr, self) + return super(Virtualizable2InstanceRepr, self) def __init__(self, rtyper, classdef): self._super().__init__(rtyper, classdef) classdesc = classdef.classdesc if '_virtualizable2_' in classdesc.classdict: basedesc = classdesc.basedesc - assert basedesc is None or basedesc.lookup('_virtualizable2_') is None + assert basedesc is None or basedesc.lookup( + '_virtualizable2_') is None self.top_of_virtualizable_hierarchy = True self.accessor = FieldListAccessor() else: self.top_of_virtualizable_hierarchy = False def _setup_repr_llfields(self): - raise NotImplementedError + llfields = [] + if self.top_of_virtualizable_hierarchy: + llfields.append(('vable_token', llmemory.GCREF)) + return llfields def _setup_repr(self): if self.top_of_virtualizable_hierarchy: hints = {'virtualizable2_accessor': self.accessor} llfields = self._setup_repr_llfields() if llfields: - self._super()._setup_repr(llfields, hints = hints) + self._super()._setup_repr(llfields, hints=hints) else: - self._super()._setup_repr(hints = hints) + self._super()._setup_repr(hints=hints) c_vfields = self.classdef.classdesc.classdict['_virtualizable2_'] self.my_redirected_fields = self._parse_field_list(c_vfields.value, self.accessor) @@ -40,7 +45,7 @@ self.my_redirected_fields = self.rbase.my_redirected_fields def hook_access_field(self, vinst, cname, llops, flags): - #if not flags.get('access_directly'): + # if not flags.get('access_directly'): if self.my_redirected_fields.get(cname.value): cflags = inputconst(lltype.Void, flags) llops.genop('jit_force_virtualizable', [vinst, cname, cflags]) diff --git a/rpython/rtyper/typesystem.py b/rpython/rtyper/typesystem.py --- a/rpython/rtyper/typesystem.py +++ b/rpython/rtyper/typesystem.py @@ -21,8 +21,7 @@ return None if name in ('rclass', 'rpbc', 'rbuiltin', 'rtuple', 'rlist', 'rslice', 'rdict', 'rrange', 'rstr', - 'll_str', 'rbuilder', 'rvirtualizable2', 'rbytearray', - 'exceptiondata'): + 'll_str', 'rbuilder', 'rbytearray', 'exceptiondata'): mod = load(name) if mod is not None: setattr(self, name, mod) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit