[pypy-svn] r68354 - in pypy/branch/improve-kwd-args/pypy: interpreter translator

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Oct 12 22:49:54 CEST 2009


Author: cfbolz
Date: Mon Oct 12 22:49:53 2009
New Revision: 68354

Modified:
   pypy/branch/improve-kwd-args/pypy/interpreter/argument.py
   pypy/branch/improve-kwd-args/pypy/translator/geninterplevel.py
Log:
fix geninterp to no longer use fromshape


Modified: pypy/branch/improve-kwd-args/pypy/interpreter/argument.py
==============================================================================
--- pypy/branch/improve-kwd-args/pypy/interpreter/argument.py	(original)
+++ pypy/branch/improve-kwd-args/pypy/interpreter/argument.py	Mon Oct 12 22:49:53 2009
@@ -331,25 +331,6 @@
             space.setitem(w_kwds, space.wrap(key), w_value)
         return w_args, w_kwds
 
-    @staticmethod
-    def fromshape(space, (shape_cnt,shape_keys,shape_star,shape_stst), data_w):
-        # used by geninterped code
-        args_w = data_w[:shape_cnt]
-        p = end_keys = shape_cnt + len(shape_keys)
-        if shape_star:
-            w_star = data_w[p]
-            p += 1
-        else:
-            w_star = None
-        if shape_stst:
-            w_starstar = data_w[p]
-            p += 1
-        else:
-            w_starstar = None
-        return Arguments(space, args_w, list(shape_keys),
-                         data_w[shape_cnt:end_keys], w_star,
-                          w_starstar)
-
 class ArgumentsForTranslation(Arguments):
     def __init__(self, space, args_w, keywords=None, keywords_w=None,
                  w_stararg=None, w_starstararg=None):

Modified: pypy/branch/improve-kwd-args/pypy/translator/geninterplevel.py
==============================================================================
--- pypy/branch/improve-kwd-args/pypy/translator/geninterplevel.py	(original)
+++ pypy/branch/improve-kwd-args/pypy/translator/geninterplevel.py	Mon Oct 12 22:49:53 2009
@@ -52,7 +52,7 @@
 from pypy.interpreter.pycode import CO_VARARGS, CO_VARKEYWORDS
 from types import FunctionType, CodeType, ModuleType, MethodType
 from pypy.interpreter.error import OperationError
-from pypy.interpreter.argument import Arguments
+from pypy.interpreter.argument import ArgumentsForTranslation, Arguments
 from pypy.translator.backendopt.ssa import SSI_to_SSA
 
 from pypy.translator.translator import TranslationContext
@@ -71,7 +71,7 @@
 log = py.log.Producer("geninterp")
 py.log.setconsumer("geninterp", ansi_log)
 
-GI_VERSION = '1.1.26'  # bump this for substantial changes
+GI_VERSION = '1.2.1'  # bump this for substantial changes
 # ____________________________________________________________
 
 try:
@@ -264,16 +264,21 @@
             v = op.args[0]
             exv = self.expr(v, localscope)
             fmt = (
-                "_args = %(Arg)s.fromshape(space, %(shape)s, [%(data_w)s])\n"
+                "_args = %(Arg)s(space, [%(args_w)s], %(keywords)s, [%(keywords_w)s], %(w_stararg)s, %(w_starstararg)s)\n"
                 "%(res)s = space.call_args(%(func)s, _args)")
             assert isinstance(op.args[1], Constant)
             shape = op.args[1].value
             # make a list out of the second shape elt.
             shape = shape[0], list(shape[1]), shape[2], shape[3]
+            arglist = [self.expr(arg, localscope) for arg in op.args[2:]]
+            args = ArgumentsForTranslation.fromshape(None, shape, arglist)
             return fmt % {"res": self.expr(op.result, localscope),
                           "func": exv,
-                          "shape": repr(shape),
-                          "data_w": self.arglist(op.args[2:], localscope),
+                          "args_w": ", ".join(args.arguments_w),
+                          "keywords": args.keywords,
+                          "keywords_w": ", ".join(args.keywords_w),
+                          "w_stararg": args.w_stararg,
+                          "w_starstararg": args.w_starstararg,
                           'Arg': self.nameof(Arguments) }
         if op.opname == "hint":
             return "%s = %s" % (self.expr(op.result, localscope),



More information about the Pypy-commit mailing list