[pypy-svn] r37188 - pypy/dist/pypy/jit/timeshifter
pedronis at codespeak.net
pedronis at codespeak.net
Tue Jan 23 14:14:50 CET 2007
Author: pedronis
Date: Tue Jan 23 14:14:48 2007
New Revision: 37188
Modified:
pypy/dist/pypy/jit/timeshifter/rcontainer.py
Log:
(arre, pedronis) fix the current test failures, use __slots__ and _attrs_ cleverly and confusingly to achieve that.
Modified: pypy/dist/pypy/jit/timeshifter/rcontainer.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/rcontainer.py (original)
+++ pypy/dist/pypy/jit/timeshifter/rcontainer.py Tue Jan 23 14:14:48 2007
@@ -1,4 +1,3 @@
-
import operator
from pypy.rpython.lltypesystem import lltype
from pypy.rpython.annlowlevel import cachedtype, cast_base_ptr_to_instance
@@ -42,16 +41,16 @@
class StructTypeDesc(object):
__metaclass__ = cachedtype
- firstsubstructdesc = None
- arrayfielddesc = None
- alloctoken = None
- varsizealloctoken = None
- materialize = None
- base_desc = None
- info_desc = None
- access_desc = None
- gv_access = None
+ _attrs_ = """firstsubstructdesc arrayfielddesc
+ alloctoken varsizealloctoken
+ materialize
+ base_desc info_desc access_desc
+ gv_access
+ redirected_fielddescs
+ """.split()
+
+ materialize = None
def __init__(self, hrtyper, TYPE):
RGenOp = hrtyper.RGenOp
@@ -358,7 +357,7 @@
class VirtualStruct(VirtualContainer):
- typedesc = None
+ __slots__ = "typedesc content_boxes ownbox".split()
def __init__(self, typedesc):
self.typedesc = typedesc
@@ -366,7 +365,6 @@
#self.ownbox = ... set in factory()
def enter_block(self, incoming, memo):
- assert self.typedesc is not None
contmemo = memo.containers
if self not in contmemo:
contmemo[self] = None
@@ -375,7 +373,6 @@
def force_runtime_container(self, jitstate):
typedesc = self.typedesc
- assert typedesc is not None
builder = jitstate.curbuilder
boxes = self.content_boxes
self.content_boxes = None
@@ -403,7 +400,6 @@
def freeze(self, memo):
contmemo = memo.containers
assert self not in contmemo # contmemo no longer used
- assert self.typedesc is not None
result = contmemo[self] = FrozenVirtualStruct(self.typedesc)
frozens = [box.freeze(memo) for box in self.content_boxes]
result.fz_content_boxes = frozens
@@ -411,7 +407,6 @@
def copy(self, memo):
typedesc = self.typedesc
- assert typedesc is not None
contmemo = memo.containers
assert self not in contmemo # contmemo no longer used
result = contmemo[self] = typedesc.VStructCls(typedesc)
@@ -421,7 +416,6 @@
return result
def replace(self, memo):
- assert self.typedesc is not None
contmemo = memo.containers
assert self not in contmemo # contmemo no longer used
contmemo[self] = None
@@ -445,7 +439,6 @@
except KeyError:
pass
typedesc = self.typedesc
- assert typedesc is not None
builder = jitstate.curbuilder
gv_bitmask = builder.rgenop.genconst(1<<memo.bitcount)
memo.bitcount += 1
@@ -483,7 +476,6 @@
if self in memo.containers:
return
typedesc = self.typedesc
- assert typedesc is not None
builder = jitstate.curbuilder
memo.containers[self] = None
bitmask = 1<<memo.bitcount
@@ -557,7 +549,6 @@
def getgenvar(self, jitstate):
typedesc = self.typedesc
- assert typedesc is not None
builder = jitstate.curbuilder
gv_outside = self.content_boxes[-1].genvar
if gv_outside is typedesc.gv_null:
@@ -591,7 +582,6 @@
if self in memo.containers:
return
base_desc = typedesc.base_desc
- assert base_desc is not None
base_token = base_desc.fieldtoken
builder.genop_setfield(base_token, gv_outside, gv_base)
# xxx aliasing
@@ -640,7 +630,6 @@
gv_outside = self.content_boxes[-1].genvar
if gv_outside is not typedesc.gv_null:
base_desc = typedesc.base_desc
- assert base_desc is not None
base_token = typedesc.base_desc.fieldtoken
info_token = typedesc.info_desc.fieldtoken
access_token = typedesc.access_desc.fieldtoken
@@ -655,7 +644,6 @@
gv_outside = self.content_boxes[-1].genvar
if gv_outside is not typedesc.gv_null:
info_desc = typedesc.info_desc
- assert info_desc is not None
if self in memo.containers:
return
# xxx we can avoid traversing the full tree
More information about the Pypy-commit
mailing list