[pypy-svn] r25213 - in pypy/branch/jit-timeshifter-refactoring: . timeshifter

arigo at codespeak.net arigo at codespeak.net
Sat Apr 1 19:37:40 CEST 2006


Author: arigo
Date: Sat Apr  1 19:37:39 2006
New Revision: 25213

Added:
   pypy/branch/jit-timeshifter-refactoring/
      - copied from r25211, pypy/dist/pypy/jit/
   pypy/branch/jit-timeshifter-refactoring/timeshifter/rvalue.py
      - copied unchanged from r25211, pypy/branch/jit-timeshifter-refactoring/timeshifter/rvalue.py
Modified:
   pypy/branch/jit-timeshifter-refactoring/timeshifter/rtimeshift.py
   pypy/branch/jit-timeshifter-refactoring/timeshifter/timeshift.py
Log:
Second try.


Modified: pypy/branch/jit-timeshifter-refactoring/timeshifter/rtimeshift.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/rtimeshift.py	(original)
+++ pypy/branch/jit-timeshifter-refactoring/timeshifter/rtimeshift.py	Sat Apr  1 19:37:39 2006
@@ -27,411 +27,411 @@
     return l
 
 
-class RedBox(object):
+##class RedBox(object):
 
-    def same_constant(self, other):
-        return False
+##    def same_constant(self, other):
+##        return False
 
-    def getallvariables(self, jitstate, result_gv, memo):
-        pass
-
-    def copybox(self, newblock, gv_type, memo):
-        try:
-            return memo[self]
-        except KeyError:
-            return self._copybox(newblock, gv_type, memo)
-
-    def match(self, jitstate, newbox, incoming, memo):
-        if self in memo:
-            return memo[self] is newbox
-        if newbox in memo:
-            return memo[newbox] is self
-        memo[self] = newbox
-        memo[newbox] = self
-        return self._match(jitstate, newbox, incoming, memo)
-
-    def union_for_new_block(self, jitstate, newbox, newblock,
-                            gv_type, incoming, memo):
-        try:
-            return memo[newbox]
-        except KeyError:
-            return self._union_for_new_block(jitstate, newbox, newblock,
-                                             gv_type, incoming, memo)
-
-    # generic implementation of some operations
-    def op_getfield(self, jitstate, fielddesc):
-        op_args = lltype.malloc(VARLIST.TO, 2)
-        op_args[0] = self.getgenvar(jitstate)
-        op_args[1] = fielddesc.gv_fieldname
-        genvar = rgenop.genop(jitstate.curblock, 'getfield', op_args,
-                              fielddesc.gv_resulttype)
-        return VarRedBox(genvar)
-
-    def op_setfield(self, jitstate, fielddesc, valuebox):
-        op_args = lltype.malloc(VARLIST.TO, 3)
-        op_args[0] = self.getgenvar(jitstate)
-        op_args[1] = fielddesc.gv_fieldname
-        op_args[2] = valuebox.getgenvar(jitstate)
-        rgenop.genop(jitstate.curblock, 'setfield', op_args,
-                              gv_Void)
-
-    def op_getsubstruct(self, jitstate, fielddesc):
-        op_args = lltype.malloc(VARLIST.TO, 2)
-        op_args[0] = self.getgenvar(jitstate)
-        op_args[1] = fielddesc.gv_fieldname
-        genvar = rgenop.genop(jitstate.curblock, 'getsubstruct', op_args,
-                              fielddesc.gv_resulttype)
-        return VarRedBox(genvar)
-
-
-class VarRedBox(RedBox):
-    "A red box that contains a run-time variable."
-
-    def __init__(self, genvar):
-        self.genvar = genvar
-
-    def getgenvar(self, jitstate):
-        return self.genvar
-
-    def getallvariables(self, jitstate, result_gv, memo):
-        if self not in memo:
-            result_gv.append(self.genvar)
-            memo[self] = None
-
-    def _copybox(self, newblock, gv_type, memo):
-        newgenvar = rgenop.geninputarg(newblock, gv_type)
-        memo[self] = newbox = VarRedBox(newgenvar)
-        return newbox
-
-        incoming.append(newbox.getgenvar(jitstate))
-        return True
-
-    def _match(self, jitstate, newbox, incoming, memo):
-        incoming.append(newbox.getgenvar(jitstate))
-        return True
-
-    def _union_for_new_block(self, jitstate, newbox, newblock,
-                             gv_type, incoming, memo):
-        incoming.append(newbox.getgenvar(jitstate))
-        newgenvar = rgenop.geninputarg(newblock, gv_type)
-        memo[newbox] = newnewbox = VarRedBox(newgenvar)
-        return newnewbox
+##    def getallvariables(self, jitstate, result_gv, memo):
+##        pass
 
+##    def copybox(self, newblock, gv_type, memo):
+##        try:
+##            return memo[self]
+##        except KeyError:
+##            return self._copybox(newblock, gv_type, memo)
+
+##    def match(self, jitstate, newbox, incoming, memo):
+##        if self in memo:
+##            return memo[self] is newbox
+##        if newbox in memo:
+##            return memo[newbox] is self
+##        memo[self] = newbox
+##        memo[newbox] = self
+##        return self._match(jitstate, newbox, incoming, memo)
+
+##    def union_for_new_block(self, jitstate, newbox, newblock,
+##                            gv_type, incoming, memo):
+##        try:
+##            return memo[newbox]
+##        except KeyError:
+##            return self._union_for_new_block(jitstate, newbox, newblock,
+##                                             gv_type, incoming, memo)
+
+##    # generic implementation of some operations
+##    def op_getfield(self, jitstate, fielddesc):
+##        op_args = lltype.malloc(VARLIST.TO, 2)
+##        op_args[0] = self.getgenvar(jitstate)
+##        op_args[1] = fielddesc.gv_fieldname
+##        genvar = rgenop.genop(jitstate.curblock, 'getfield', op_args,
+##                              fielddesc.gv_resulttype)
+##        return VarRedBox(genvar)
+
+##    def op_setfield(self, jitstate, fielddesc, valuebox):
+##        op_args = lltype.malloc(VARLIST.TO, 3)
+##        op_args[0] = self.getgenvar(jitstate)
+##        op_args[1] = fielddesc.gv_fieldname
+##        op_args[2] = valuebox.getgenvar(jitstate)
+##        rgenop.genop(jitstate.curblock, 'setfield', op_args,
+##                              gv_Void)
+
+##    def op_getsubstruct(self, jitstate, fielddesc):
+##        op_args = lltype.malloc(VARLIST.TO, 2)
+##        op_args[0] = self.getgenvar(jitstate)
+##        op_args[1] = fielddesc.gv_fieldname
+##        genvar = rgenop.genop(jitstate.curblock, 'getsubstruct', op_args,
+##                              fielddesc.gv_resulttype)
+##        return VarRedBox(genvar)
+
+
+##class VarRedBox(RedBox):
+##    "A red box that contains a run-time variable."
+
+##    def __init__(self, genvar):
+##        self.genvar = genvar
+
+##    def getgenvar(self, jitstate):
+##        return self.genvar
+
+##    def getallvariables(self, jitstate, result_gv, memo):
+##        if self not in memo:
+##            result_gv.append(self.genvar)
+##            memo[self] = None
+
+##    def _copybox(self, newblock, gv_type, memo):
+##        newgenvar = rgenop.geninputarg(newblock, gv_type)
+##        memo[self] = newbox = VarRedBox(newgenvar)
+##        return newbox
+
+##        incoming.append(newbox.getgenvar(jitstate))
+##        return True
+
+##    def _match(self, jitstate, newbox, incoming, memo):
+##        incoming.append(newbox.getgenvar(jitstate))
+##        return True
+
+##    def _union_for_new_block(self, jitstate, newbox, newblock,
+##                             gv_type, incoming, memo):
+##        incoming.append(newbox.getgenvar(jitstate))
+##        newgenvar = rgenop.geninputarg(newblock, gv_type)
+##        memo[newbox] = newnewbox = VarRedBox(newgenvar)
+##        return newnewbox
+
+
+##VCONTAINER = lltype.GcStruct("vcontainer")
+
+##class ContainerRedBox(RedBox):
+##    def __init__(self, envelope, content_addr):
+##        self.envelope = envelope
+##        self.content_addr = content_addr
+
+##    def getgenvar(self, jitstate): # no support at the moment
+##        raise RuntimeError("cannot force virtual containers")
+
+##    def ll_make_container_box(envelope, content_addr):
+##        return ContainerRedBox(envelope, content_addr)
+##    ll_make_container_box = staticmethod(ll_make_container_box)
+
+##    def ll_make_subcontainer_box(box, content_addr):
+##        return ContainerRedBox(box.envelope, content_addr)
+##    ll_make_subcontainer_box = staticmethod(ll_make_subcontainer_box)
+
+
+##def ll_getenvelope(box):
+##    assert isinstance(box, ContainerRedBox)
+##    return box.envelope
+
+##def ll_getcontent(box):
+##    assert isinstance(box, ContainerRedBox)
+##    return box.content_addr
+
+
+##class BigRedBox(RedBox):
+##    "A (big) red box that contains (small) red boxes inside."
+
+##    #def __init__(self, content_boxes):
+##    #    self.content_boxes = content_boxes
+
+##    def op_getfield(self, jitstate, fielddesc):
+##        if self.content_boxes is None:
+##            return RedBox.op_getfield(self, jitstate, fielddesc)
+##        else:
+##            return self.content_boxes[fielddesc.fieldindex]
 
-VCONTAINER = lltype.GcStruct("vcontainer")
-
-class ContainerRedBox(RedBox):
-    def __init__(self, envelope, content_addr):
-        self.envelope = envelope
-        self.content_addr = content_addr
-
-    def getgenvar(self, jitstate): # no support at the moment
-        raise RuntimeError("cannot force virtual containers")
-
-    def ll_make_container_box(envelope, content_addr):
-        return ContainerRedBox(envelope, content_addr)
-    ll_make_container_box = staticmethod(ll_make_container_box)
-
-    def ll_make_subcontainer_box(box, content_addr):
-        return ContainerRedBox(box.envelope, content_addr)
-    ll_make_subcontainer_box = staticmethod(ll_make_subcontainer_box)
-
-
-def ll_getenvelope(box):
-    assert isinstance(box, ContainerRedBox)
-    return box.envelope
-
-def ll_getcontent(box):
-    assert isinstance(box, ContainerRedBox)
-    return box.content_addr
-
-
-class BigRedBox(RedBox):
-    "A (big) red box that contains (small) red boxes inside."
-
-    #def __init__(self, content_boxes):
-    #    self.content_boxes = content_boxes
+##    def op_setfield(self, jitstate, fielddesc, valuebox):
+##        if self.content_boxes is None:
+##            RedBox.op_setfield(self, jitstate, fielddesc, valuebox)
+##        else:
+##            self.content_boxes[fielddesc.fieldindex] = valuebox
 
-    def op_getfield(self, jitstate, fielddesc):
-        if self.content_boxes is None:
-            return RedBox.op_getfield(self, jitstate, fielddesc)
-        else:
-            return self.content_boxes[fielddesc.fieldindex]
+##    def op_getsubstruct(self, jitstate, fielddesc):
+##        if self.content_boxes is None:
+##            return RedBox.op_getsubstruct(self, jitstate, fielddesc)
+##        else:
+##            return self.content_boxes[fielddesc.fieldindex]
 
-    def op_setfield(self, jitstate, fielddesc, valuebox):
-        if self.content_boxes is None:
-            RedBox.op_setfield(self, jitstate, fielddesc, valuebox)
-        else:
-            self.content_boxes[fielddesc.fieldindex] = valuebox
 
-    def op_getsubstruct(self, jitstate, fielddesc):
-        if self.content_boxes is None:
-            return RedBox.op_getsubstruct(self, jitstate, fielddesc)
-        else:
-            return self.content_boxes[fielddesc.fieldindex]
+##class VirtualRedBox(BigRedBox):
+##    "A red box that contains (for now) a virtual Struct."
 
+##    def __init__(self, typedesc):
+##        self.content_boxes = typedesc.build_content_boxes(self)
+##        self.typedesc = typedesc
+##        self.genvar = rgenop.nullvar
+
+##    def getgenvar(self, jitstate):
+##        if not self.genvar:
+##            typedesc = self.typedesc
+##            boxes = self.content_boxes
+##            self.content_boxes = None
+##            op_args = lltype.malloc(VARLIST.TO, 1)
+##            op_args[0] = typedesc.gv_type
+##            self.genvar = rgenop.genop(jitstate.curblock, 'malloc', op_args,
+##                                       typedesc.gv_ptrtype)
+##            typedesc.materialize_content(jitstate, self.genvar, boxes)
+##        return self.genvar
+
+##    def is_forced(self):
+##        return bool(self.genvar)
+
+##    def getallvariables(self, jitstate, result_gv, memo):
+##        if self.genvar:
+##            if self not in memo:
+##                result_gv.append(self.genvar)
+##                memo[self] = None
+##        else:
+##            for smallbox in self.content_boxes:
+##                smallbox.getallvariables(jitstate, result_gv, memo)
 
-class VirtualRedBox(BigRedBox):
-    "A red box that contains (for now) a virtual Struct."
+##    def _copybox(self, newblock, gv_type, memo):
+##        if self.genvar:
+##            newgenvar = rgenop.geninputarg(newblock, gv_type)
+##            memo[self] = newbox = VarRedBox(newgenvar)
+##            return newbox
+##        bigbox = VirtualRedBox(self.typedesc)
+##        memo[self] = bigbox
+##        for i in range(len(bigbox.content_boxes)):
+##            gv_fldtype = self.typedesc.fielddescs[i].gv_resulttype
+##            bigbox.content_boxes[i] = self.content_boxes[i].copybox(newblock,
+##                                                                    gv_fldtype,
+##                                                                    memo)
+##        return bigbox
 
-    def __init__(self, typedesc):
-        self.content_boxes = typedesc.build_content_boxes(self)
-        self.typedesc = typedesc
-        self.genvar = rgenop.nullvar
-
-    def getgenvar(self, jitstate):
-        if not self.genvar:
-            typedesc = self.typedesc
-            boxes = self.content_boxes
-            self.content_boxes = None
-            op_args = lltype.malloc(VARLIST.TO, 1)
-            op_args[0] = typedesc.gv_type
-            self.genvar = rgenop.genop(jitstate.curblock, 'malloc', op_args,
-                                       typedesc.gv_ptrtype)
-            typedesc.materialize_content(jitstate, self.genvar, boxes)
-        return self.genvar
-
-    def is_forced(self):
-        return bool(self.genvar)
-
-    def getallvariables(self, jitstate, result_gv, memo):
-        if self.genvar:
-            if self not in memo:
-                result_gv.append(self.genvar)
-                memo[self] = None
-        else:
-            for smallbox in self.content_boxes:
-                smallbox.getallvariables(jitstate, result_gv, memo)
+##    def _match(self, jitstate, newbox, incoming, memo):
+##        if self.genvar:
+##            incoming.append(newbox.getgenvar(jitstate))
+##            return True
+##        if not isinstance(newbox, VirtualRedBox):
+##            return False
+##        for i in range(len(self.content_boxes)):
+##            mysmallbox  = self.content_boxes[i]
+##            newsmallbox = newbox.content_boxes[i]
+##            if not mysmallbox.match(jitstate, newsmallbox, incoming, memo):
+##                return False
+##        else:
+##            return True
 
-    def _copybox(self, newblock, gv_type, memo):
-        if self.genvar:
-            newgenvar = rgenop.geninputarg(newblock, gv_type)
-            memo[self] = newbox = VarRedBox(newgenvar)
-            return newbox
-        bigbox = VirtualRedBox(self.typedesc)
-        memo[self] = bigbox
-        for i in range(len(bigbox.content_boxes)):
-            gv_fldtype = self.typedesc.fielddescs[i].gv_resulttype
-            bigbox.content_boxes[i] = self.content_boxes[i].copybox(newblock,
-                                                                    gv_fldtype,
-                                                                    memo)
-        return bigbox
-
-    def _match(self, jitstate, newbox, incoming, memo):
-        if self.genvar:
-            incoming.append(newbox.getgenvar(jitstate))
-            return True
-        if not isinstance(newbox, VirtualRedBox):
-            return False
-        for i in range(len(self.content_boxes)):
-            mysmallbox  = self.content_boxes[i]
-            newsmallbox = newbox.content_boxes[i]
-            if not mysmallbox.match(jitstate, newsmallbox, incoming, memo):
-                return False
-        else:
-            return True
+##    def inlined_structs_are_compatible(self, newbox):
+##        return (isinstance(newbox, VirtualRedBox) and not newbox.genvar and
+##                self.typedesc.compare_content_boxes(self.content_boxes,
+##                                                    newbox.content_boxes))
+
+##    def _union_for_new_block(self, jitstate, newbox, newblock,
+##                             gv_type, incoming, memo):
+##        if self.genvar or not self.inlined_structs_are_compatible(newbox):
+##            incoming.append(newbox.getgenvar(jitstate))
+##            newgenvar = rgenop.geninputarg(newblock, gv_type)
+##            memo[newbox] = newnewbox = VarRedBox(newgenvar)
+##            return newnewbox
+##        bigbox = VirtualRedBox(self.typedesc)
+##        memo[newbox] = bigbox
+##        for i in range(len(bigbox.content_boxes)):
+##            gv_fldtype = self.typedesc.fielddescs[i].gv_resulttype
+##            box = self.content_boxes[i]
+##            bigbox.content_boxes[i] = box.union_for_new_block(
+##                jitstate,
+##                newbox.content_boxes[i],
+##                newblock,
+##                gv_fldtype,
+##                incoming,
+##                memo)
+##        return bigbox
+
+
+##class SubVirtualRedBox(BigRedBox):
+
+##    def __init__(self, parentbox, fielddesc):
+##        self.parentbox = parentbox
+##        self.fielddesc = fielddesc
+##        typedesc = fielddesc.inlined_typedesc
+##        self.content_boxes = typedesc.build_content_boxes(self)
+
+##    def getgenvar(self, jitstate):
+##        gv = self.parentbox.getgenvar(jitstate)
+##        op_args = lltype.malloc(VARLIST.TO, 2)
+##        op_args[0] = gv
+##        op_args[1] = self.fielddesc.gv_fieldname
+##        genvar = rgenop.genop(jitstate.curblock, 'getsubstruct', op_args,
+##                              self.fielddesc.gv_resulttype)
+##        return genvar
+
+##    def is_forced(self):
+##        return self.parentbox.is_forced()
+
+##    def getallvariables(self, jitstate, result_gv, memo):
+##        if self.is_forced():
+##            if self not in memo:
+##                result_gv.append(self.getgenvar(jitstate))
+##                memo[self] = None
+##        else:
+##            for smallbox in self.content_boxes:
+##                smallbox.getallvariables(jitstate, result_gv, memo)
 
-    def inlined_structs_are_compatible(self, newbox):
-        return (isinstance(newbox, VirtualRedBox) and not newbox.genvar and
-                self.typedesc.compare_content_boxes(self.content_boxes,
-                                                    newbox.content_boxes))
-
-    def _union_for_new_block(self, jitstate, newbox, newblock,
-                             gv_type, incoming, memo):
-        if self.genvar or not self.inlined_structs_are_compatible(newbox):
-            incoming.append(newbox.getgenvar(jitstate))
-            newgenvar = rgenop.geninputarg(newblock, gv_type)
-            memo[newbox] = newnewbox = VarRedBox(newgenvar)
-            return newnewbox
-        bigbox = VirtualRedBox(self.typedesc)
-        memo[newbox] = bigbox
-        for i in range(len(bigbox.content_boxes)):
-            gv_fldtype = self.typedesc.fielddescs[i].gv_resulttype
-            box = self.content_boxes[i]
-            bigbox.content_boxes[i] = box.union_for_new_block(
-                jitstate,
-                newbox.content_boxes[i],
-                newblock,
-                gv_fldtype,
-                incoming,
-                memo)
-        return bigbox
-
-
-class SubVirtualRedBox(BigRedBox):
-
-    def __init__(self, parentbox, fielddesc):
-        self.parentbox = parentbox
-        self.fielddesc = fielddesc
-        typedesc = fielddesc.inlined_typedesc
-        self.content_boxes = typedesc.build_content_boxes(self)
-
-    def getgenvar(self, jitstate):
-        gv = self.parentbox.getgenvar(jitstate)
-        op_args = lltype.malloc(VARLIST.TO, 2)
-        op_args[0] = gv
-        op_args[1] = self.fielddesc.gv_fieldname
-        genvar = rgenop.genop(jitstate.curblock, 'getsubstruct', op_args,
-                              self.fielddesc.gv_resulttype)
-        return genvar
-
-    def is_forced(self):
-        return self.parentbox.is_forced()
-
-    def getallvariables(self, jitstate, result_gv, memo):
-        if self.is_forced():
-            if self not in memo:
-                result_gv.append(self.getgenvar(jitstate))
-                memo[self] = None
-        else:
-            for smallbox in self.content_boxes:
-                smallbox.getallvariables(jitstate, result_gv, memo)
+##    def _copybox(self, newblock, gv_type, memo):
+##        if self.is_forced():
+##            newgenvar = rgenop.geninputarg(newblock, gv_type)
+##            memo[self] = newbox = VarRedBox(newgenvar)
+##            return newbox
+##        bigbox = SubVirtualRedBox(None, self.fielddesc)
+##        memo[self] = bigbox
+##        gv_parenttype = self.fielddesc.parenttypedesc.gv_ptrtype
+##        parentcopybox = self.parentbox.copybox(newblock, gv_parenttype, memo)
+##        bigbox.parentbox = parentcopybox
+##        typedesc = self.fielddesc.inlined_typedesc
+##        for i in range(len(bigbox.content_boxes)):
+##            gv_fldtype = typedesc.fielddescs[i].gv_resulttype
+##            bigbox.content_boxes[i] = self.content_boxes[i].copybox(newblock,
+##                                                                    gv_fldtype,
+##                                                                    memo)
+##        return bigbox
 
-    def _copybox(self, newblock, gv_type, memo):
-        if self.is_forced():
-            newgenvar = rgenop.geninputarg(newblock, gv_type)
-            memo[self] = newbox = VarRedBox(newgenvar)
-            return newbox
-        bigbox = SubVirtualRedBox(None, self.fielddesc)
-        memo[self] = bigbox
-        gv_parenttype = self.fielddesc.parenttypedesc.gv_ptrtype
-        parentcopybox = self.parentbox.copybox(newblock, gv_parenttype, memo)
-        bigbox.parentbox = parentcopybox
-        typedesc = self.fielddesc.inlined_typedesc
-        for i in range(len(bigbox.content_boxes)):
-            gv_fldtype = typedesc.fielddescs[i].gv_resulttype
-            bigbox.content_boxes[i] = self.content_boxes[i].copybox(newblock,
-                                                                    gv_fldtype,
-                                                                    memo)
-        return bigbox
-
-    def _match(self, jitstate, newbox, incoming, memo):
-        if self.is_forced():
-            incoming.append(newbox.getgenvar(jitstate))
-            return True
-        if not (isinstance(newbox, SubVirtualRedBox) and
-                self.fielddesc is newbox.fielddesc and
-                self.parentbox.match(jitstate, newbox.parentbox,
-                                     incoming, memo)):
-            return False
-        for i in range(len(self.content_boxes)):
-            mysmallbox  = self.content_boxes[i]
-            newsmallbox = newbox.content_boxes[i]
-            if not mysmallbox.match(jitstate, newsmallbox, incoming, memo):
-                return False
-        else:
-            return True
+##    def _match(self, jitstate, newbox, incoming, memo):
+##        if self.is_forced():
+##            incoming.append(newbox.getgenvar(jitstate))
+##            return True
+##        if not (isinstance(newbox, SubVirtualRedBox) and
+##                self.fielddesc is newbox.fielddesc and
+##                self.parentbox.match(jitstate, newbox.parentbox,
+##                                     incoming, memo)):
+##            return False
+##        for i in range(len(self.content_boxes)):
+##            mysmallbox  = self.content_boxes[i]
+##            newsmallbox = newbox.content_boxes[i]
+##            if not mysmallbox.match(jitstate, newsmallbox, incoming, memo):
+##                return False
+##        else:
+##            return True
 
-    def inlined_structs_are_compatible(self, newbox):
-        if (isinstance(newbox, SubVirtualRedBox) and not newbox.is_forced() and
-            self.fielddesc is newbox.fielddesc):
-            return self.parentbox.inlined_structs_are_compatible(
-                newbox.parentbox)
-        else:
-            return False
+##    def inlined_structs_are_compatible(self, newbox):
+##        if (isinstance(newbox, SubVirtualRedBox) and not newbox.is_forced() and
+##            self.fielddesc is newbox.fielddesc):
+##            return self.parentbox.inlined_structs_are_compatible(
+##                newbox.parentbox)
+##        else:
+##            return False
 
-    def _union_for_new_block(self, jitstate, newbox, newblock,
-                             gv_type, incoming, memo):
-        if self.is_forced() or not self.inlined_structs_are_compatible(newbox):
-            incoming.append(newbox.getgenvar(jitstate))
-            newgenvar = rgenop.geninputarg(newblock, gv_type)
-            memo[newbox] = newnewbox = VarRedBox(newgenvar)
-            return newnewbox
-        assert isinstance(newbox, SubVirtualRedBox)
-        bigbox = SubVirtualRedBox(None, self.fielddesc)
-        memo[newbox] = bigbox
-        gv_parenttype = self.fielddesc.parenttypedesc.gv_ptrtype
-        parentcopybox = self.parentbox.union_for_new_block(jitstate,
-                                                           newbox.parentbox,
-                                                           newblock,
-                                                           gv_parenttype,
-                                                           incoming,
-                                                           memo)
-        bigbox.parentbox = parentcopybox
-        typedesc = self.fielddesc.inlined_typedesc
-        for i in range(len(bigbox.content_boxes)):
-            gv_fldtype = typedesc.fielddescs[i].gv_resulttype
-            box = self.content_boxes[i]
-            bigbox.content_boxes[i] = box.union_for_new_block(
-                jitstate,
-                newbox.content_boxes[i],
-                newblock,
-                gv_fldtype,
-                incoming,
-                memo)
-        return bigbox
-
-
-class ConstRedBox(RedBox):
-    "A red box that contains a run-time constant."
-
-    def __init__(self, genvar):
-        self.genvar = genvar
-
-    def getgenvar(self, jitstate):
-        return self.genvar
-
-    def copybox(self, newblock, gv_type, memo):
-        return self
-
-    def match(self, jitstate, newbox, incoming, memo):
-        return self.same_constant(newbox)
-
-    def _union_for_new_block(self, jitstate, newbox, newblock,
-                             gv_type, incoming, memo):
-        if self.same_constant(newbox):
-            newnewbox = newbox
-        else:
-            incoming.append(newbox.getgenvar(jitstate))
-            newgenvar = rgenop.geninputarg(newblock, gv_type)
-            newnewbox = VarRedBox(newgenvar)
-        memo[newbox] = newnewbox
-        return newnewbox
-
-    def ll_fromvalue(value):
-        T = lltype.typeOf(value)
-        gv = rgenop.genconst(value)
-        if isinstance(T, lltype.Ptr):
-            return AddrRedBox(gv)
-        elif T is lltype.Float:
-            return DoubleRedBox(gv)
-        else:
-            assert isinstance(T, lltype.Primitive)
-            assert T is not lltype.Void, "cannot make red boxes of voids"
-            # XXX what about long longs?
-            return IntRedBox(gv)
-    ll_fromvalue = staticmethod(ll_fromvalue)
-
-    def ll_getvalue(self, T):
-        # note: this is specialized by low-level type T, as a low-level helper
-        return rgenop.revealconst(T, self.genvar)
+##    def _union_for_new_block(self, jitstate, newbox, newblock,
+##                             gv_type, incoming, memo):
+##        if self.is_forced() or not self.inlined_structs_are_compatible(newbox):
+##            incoming.append(newbox.getgenvar(jitstate))
+##            newgenvar = rgenop.geninputarg(newblock, gv_type)
+##            memo[newbox] = newnewbox = VarRedBox(newgenvar)
+##            return newnewbox
+##        assert isinstance(newbox, SubVirtualRedBox)
+##        bigbox = SubVirtualRedBox(None, self.fielddesc)
+##        memo[newbox] = bigbox
+##        gv_parenttype = self.fielddesc.parenttypedesc.gv_ptrtype
+##        parentcopybox = self.parentbox.union_for_new_block(jitstate,
+##                                                           newbox.parentbox,
+##                                                           newblock,
+##                                                           gv_parenttype,
+##                                                           incoming,
+##                                                           memo)
+##        bigbox.parentbox = parentcopybox
+##        typedesc = self.fielddesc.inlined_typedesc
+##        for i in range(len(bigbox.content_boxes)):
+##            gv_fldtype = typedesc.fielddescs[i].gv_resulttype
+##            box = self.content_boxes[i]
+##            bigbox.content_boxes[i] = box.union_for_new_block(
+##                jitstate,
+##                newbox.content_boxes[i],
+##                newblock,
+##                gv_fldtype,
+##                incoming,
+##                memo)
+##        return bigbox
+
+
+##class ConstRedBox(RedBox):
+##    "A red box that contains a run-time constant."
+
+##    def __init__(self, genvar):
+##        self.genvar = genvar
+
+##    def getgenvar(self, jitstate):
+##        return self.genvar
+
+##    def copybox(self, newblock, gv_type, memo):
+##        return self
+
+##    def match(self, jitstate, newbox, incoming, memo):
+##        return self.same_constant(newbox)
+
+##    def _union_for_new_block(self, jitstate, newbox, newblock,
+##                             gv_type, incoming, memo):
+##        if self.same_constant(newbox):
+##            newnewbox = newbox
+##        else:
+##            incoming.append(newbox.getgenvar(jitstate))
+##            newgenvar = rgenop.geninputarg(newblock, gv_type)
+##            newnewbox = VarRedBox(newgenvar)
+##        memo[newbox] = newnewbox
+##        return newnewbox
+
+##    def ll_fromvalue(value):
+##        T = lltype.typeOf(value)
+##        gv = rgenop.genconst(value)
+##        if isinstance(T, lltype.Ptr):
+##            return AddrRedBox(gv)
+##        elif T is lltype.Float:
+##            return DoubleRedBox(gv)
+##        else:
+##            assert isinstance(T, lltype.Primitive)
+##            assert T is not lltype.Void, "cannot make red boxes of voids"
+##            # XXX what about long longs?
+##            return IntRedBox(gv)
+##    ll_fromvalue = staticmethod(ll_fromvalue)
+
+##    def ll_getvalue(self, T):
+##        # note: this is specialized by low-level type T, as a low-level helper
+##        return rgenop.revealconst(T, self.genvar)
 
-def ll_getvalue(box, T):
-    return box.ll_getvalue(T)
+##def ll_getvalue(box, T):
+##    return box.ll_getvalue(T)
         
 
-class IntRedBox(ConstRedBox):
-    "A red box that contains a constant integer-like value."
+##class IntRedBox(ConstRedBox):
+##    "A red box that contains a constant integer-like value."
 
-    def same_constant(self, other):
-        return (isinstance(other, IntRedBox) and
-                self.ll_getvalue(lltype.Signed) == other.ll_getvalue(lltype.Signed))
+##    def same_constant(self, other):
+##        return (isinstance(other, IntRedBox) and
+##                self.ll_getvalue(lltype.Signed) == other.ll_getvalue(lltype.Signed))
 
 
-class DoubleRedBox(ConstRedBox):
-    "A red box that contains a constant double-precision floating point value."
+##class DoubleRedBox(ConstRedBox):
+##    "A red box that contains a constant double-precision floating point value."
 
-    def same_constant(self, other):
-        return (isinstance(other, DoubleRedBox) and
-                self.ll_getvalue(lltype.Float) == other.ll_getvalue(lltype.Float))
+##    def same_constant(self, other):
+##        return (isinstance(other, DoubleRedBox) and
+##                self.ll_getvalue(lltype.Float) == other.ll_getvalue(lltype.Float))
 
 
-class AddrRedBox(ConstRedBox):
-    "A red box that contains a constant address."
+##class AddrRedBox(ConstRedBox):
+##    "A red box that contains a constant address."
 
-    def same_constant(self, other):
-        return (isinstance(other, AddrRedBox) and
-                self.ll_getvalue(llmemory.Address) == other.ll_getvalue(llmemory.Address))
+##    def same_constant(self, other):
+##        return (isinstance(other, AddrRedBox) and
+##                self.ll_getvalue(llmemory.Address) == other.ll_getvalue(llmemory.Address))
 
 
 # ____________________________________________________________

Modified: pypy/branch/jit-timeshifter-refactoring/timeshifter/timeshift.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/timeshift.py	(original)
+++ pypy/branch/jit-timeshifter-refactoring/timeshifter/timeshift.py	Sat Apr  1 19:37:39 2006
@@ -3,8 +3,7 @@
 from pypy.objspace.flow import model as flowmodel
 from pypy.annotation import model as annmodel
 from pypy.annotation import listdef, dictdef
-from pypy.jit.timeshifter.rtimeshift import VARLIST, RedBox, VarRedBox
-from pypy.jit.timeshifter.rtimeshift import ConstRedBox, JITState
+from pypy.jit.timeshifter.rtimeshift import VARLIST, JITState
 from pypy.jit.timeshifter.rtimeshift import make_types_const
 from pypy.rpython import rmodel, rlist, rdict, rgenop, annlowlevel
 from pypy.rpython.lltypesystem import rtuple



More information about the Pypy-commit mailing list