[pypy-svn] r31495 - in pypy/dist/pypy: jit/timeshifter rpython

arigo at codespeak.net arigo at codespeak.net
Tue Aug 22 18:42:36 CEST 2006


Author: arigo
Date: Tue Aug 22 18:42:29 2006
New Revision: 31495

Modified:
   pypy/dist/pypy/jit/timeshifter/rcontainer.py
   pypy/dist/pypy/jit/timeshifter/rtimeshift.py
   pypy/dist/pypy/rpython/rgenop.py
Log:
(pedronis, arigo)

Kill VARLIST.  No reason at all for it, plain lists work.


Modified: pypy/dist/pypy/jit/timeshifter/rcontainer.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/rcontainer.py	(original)
+++ pypy/dist/pypy/jit/timeshifter/rcontainer.py	Tue Aug 22 18:42:29 2006
@@ -143,14 +143,12 @@
         gv_sub = genvar
         genop = builder.genop
         for i in range(len(self.accessptrtype_gv)-1):
-            op_args = lltype.malloc(rgenop.VARLIST.TO, 2)
-            op_args[0] = gv_sub
-            op_args[1] = self.fieldname_gv[i]
+            op_args = [gv_sub,
+                       self.fieldname_gv[i]]
             gv_sub = genop('getsubstruct', op_args, self.accessptrtype_gv[i+1])
-        op_args = lltype.malloc(rgenop.VARLIST.TO, 3)
-        op_args[0] = gv_sub
-        op_args[1] = self.fieldname_gv[-1]
-        op_args[2] = box.getgenvar(builder)
+        op_args = [gv_sub,
+                   self.fieldname_gv[-1],
+                   box.getgenvar(builder)]
         genop('setfield', op_args, rgenop.gv_Void)        
 
 # ____________________________________________________________
@@ -210,14 +208,12 @@
         typedesc = self.typedesc
         boxes = self.content_boxes
         self.content_boxes = None
-        op_args = lltype.malloc(rgenop.VARLIST.TO, 1)
-        op_args[0] = typedesc.gv_type
+        op_args = [typedesc.gv_type]
         genvar = genop('malloc', op_args, typedesc.gv_ptrtype)
         # force all the boxes pointing to this VirtualStruct
         for box in self.substruct_boxes:
             # XXX using getsubstruct would be nicer
-            op_args = lltype.malloc(rgenop.VARLIST.TO, 1)
-            op_args[0] = genvar
+            op_args = [genvar]
             box.genvar = genop('cast_pointer', op_args, box.gv_type)
             box.content = None
         self.substruct_boxes = None

Modified: pypy/dist/pypy/jit/timeshifter/rtimeshift.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/rtimeshift.py	(original)
+++ pypy/dist/pypy/jit/timeshifter/rtimeshift.py	Tue Aug 22 18:42:29 2006
@@ -61,8 +61,7 @@
         arg = rvalue.ll_getvalue(argbox, ARG0)
         res = opdesc.llop(RESULT, arg)
         return rvalue.ll_fromvalue(res)
-    op_args = lltype.malloc(rgenop.VARLIST.TO, 1)
-    op_args[0] = argbox.getgenvar(jitstate.curbuilder)
+    op_args = [argbox.getgenvar(jitstate.curbuilder)]
     genvar = jitstate.curbuilder.genop(opdesc.opname, op_args,
                                       opdesc.gv_RESULT)
     return opdesc.redboxcls(opdesc.gv_RESULT, genvar)
@@ -78,9 +77,8 @@
         arg1 = rvalue.ll_getvalue(argbox1, ARG1)
         res = opdesc.llop(RESULT, arg0, arg1)
         return rvalue.ll_fromvalue(res)
-    op_args = lltype.malloc(rgenop.VARLIST.TO, 2)
-    op_args[0] = argbox0.getgenvar(jitstate.curbuilder)
-    op_args[1] = argbox1.getgenvar(jitstate.curbuilder)
+    op_args = [argbox0.getgenvar(jitstate.curbuilder),
+               argbox1.getgenvar(jitstate.curbuilder)]
     genvar = jitstate.curbuilder.genop(opdesc.opname, op_args,
                                        opdesc.gv_RESULT)
     return opdesc.redboxcls(opdesc.gv_RESULT, genvar)
@@ -92,9 +90,8 @@
         return rvalue.ll_fromvalue(res)
     assert isinstance(argbox, rvalue.PtrRedBox)
     if argbox.content is None:
-        op_args = lltype.malloc(rgenop.VARLIST.TO, 2)
-        op_args[0] = argbox.getgenvar(jitstate.curbuilder)
-        op_args[1] = fielddesc.fieldname_gv[-1]
+        op_args = [argbox.getgenvar(jitstate.curbuilder),
+                   fielddesc.fieldname_gv[-1]]
         genvar = jitstate.curbuilder.genop('getfield', op_args,
                                            fielddesc.gv_resulttype)
         return fielddesc.redboxcls(fielddesc.gv_resulttype, genvar)        
@@ -104,10 +101,9 @@
 def ll_generate_setfield(jitstate, fielddesc, destbox, valuebox):
     assert isinstance(destbox, rvalue.PtrRedBox)
     if destbox.content is None:
-        op_args = lltype.malloc(rgenop.VARLIST.TO, 3)
-        op_args[0] = destbox.getgenvar(jitstate.curbuilder)
-        op_args[1] = fielddesc.fieldname_gv[-1]
-        op_args[2] = valuebox.getgenvar(jitstate.curbuilder)
+        op_args = [destbox.getgenvar(jitstate.curbuilder),
+                   fielddesc.fieldname_gv[-1],
+                   valuebox.getgenvar(jitstate.curbuilder)]
         jitstate.curbuilder.genop('setfield', op_args,
                                   rgenop.gv_Void)       
     else:
@@ -120,9 +116,8 @@
         return rvalue.ll_fromvalue(res)
     assert isinstance(argbox, rvalue.PtrRedBox)
     if argbox.content is None:
-        op_args = lltype.malloc(rgenop.VARLIST.TO, 2)
-        op_args[0] = argbox.getgenvar(jitstate.curbuilder)
-        op_args[1] = fielddesc.gv_fieldname
+        op_args = [argbox.getgenvar(jitstate.curbuilder),
+                   fielddesc.gv_fieldname]
         genvar = jitstate.curbuilder.genop('getsubstruct', op_args,
                                            fielddesc.gv_resulttype)
         return fielddesc.redboxcls(fielddesc.gv_resulttype, genvar)        
@@ -135,9 +130,8 @@
         array = rvalue.ll_getvalue(argbox, fielddesc.PTRTYPE)
         res = array[rvalue.ll_getvalue(indexbox, lltype.Signed)]
         return rvalue.ll_fromvalue(res)
-    op_args = lltype.malloc(rgenop.VARLIST.TO, 2)
-    op_args[0] = argbox.getgenvar(jitstate.curbuilder)
-    op_args[1] = indexbox.getgenvar(jitstate.curbuilder)
+    op_args = [argbox.getgenvar(jitstate.curbuilder),
+               indexbox.getgenvar(jitstate.curbuilder)]
     genvar = jitstate.curbuilder.genop('getarrayitem', op_args,
                                        fielddesc.gv_resulttype)
     return fielddesc.redboxcls(fielddesc.gv_resulttype, genvar)
@@ -254,8 +248,6 @@
         jitstate.split_queue.append((exitindex, later_builder, redboxcopies))
         return True
 
-novars = lltype.malloc(rgenop.VARLIST.TO, 0)
-
 def dispatch_next(jitstate, outredboxes):
     split_queue = jitstate.split_queue
     if split_queue:

Modified: pypy/dist/pypy/rpython/rgenop.py
==============================================================================
--- pypy/dist/pypy/rpython/rgenop.py	(original)
+++ pypy/dist/pypy/rpython/rgenop.py	Tue Aug 22 18:42:29 2006
@@ -52,17 +52,18 @@
         res.append(v)
     return res
 
-# is opname a runtime value?
-def genop(blockcontainer, opname, vars, resulttype):
+def genop(blockcontainer, opname, vars_gv, gv_RESULT_TYPE):
+    # 'opname' is a constant string
+    # gv_RESULT_TYPE comes from constTYPE
     if not isinstance(opname, str):
         opname = LLSupport.from_rstr(opname)
     block = from_opaque_object(blockcontainer.obj)
     assert block.exits == [], "block already closed"
-    if isinstance(resulttype, lltype.LowLevelType):
-        RESULT_TYPE = resulttype
+    if isinstance(gv_RESULT_TYPE, lltype.LowLevelType):
+        RESULT_TYPE = gv_RESULT_TYPE
     else:
-        RESULT_TYPE = from_opaque_object(resulttype).value
-    opvars = _inputvars(vars)    
+        RESULT_TYPE = from_opaque_object(gv_RESULT_TYPE).value
+    opvars = _inputvars(vars_gv)
     v = flowmodel.Variable()
     v.concretetype = RESULT_TYPE
     op = flowmodel.SpaceOperation(opname, opvars, v)
@@ -245,19 +246,6 @@
 nulllink = lltype.nullptr(LINK.TO)
 gv_Void = constTYPE(lltype.Void)
 
-# VARLIST
-def ll_fixed_items(l):
-    return l
-
-def ll_fixed_length(l):
-    return len(l)
-
-VARLIST = lltype.Ptr(lltype.GcArray(CONSTORVAR,
-                                    adtmeths = {
-                                        "ll_items": ll_fixed_items,
-                                        "ll_length": ll_fixed_length
-                                    }))
-
 
 # helpers
 def setannotation(func, annotation, specialize_as_constant=False):



More information about the Pypy-commit mailing list