[pypy-commit] pypy translation-cleanup: Stop subclassing FlowObjSpace from ObjSpace.

rlamy noreply at buildbot.pypy.org
Thu Sep 27 19:29:14 CEST 2012


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: translation-cleanup
Changeset: r57629:849233ae612f
Date: 2012-09-27 04:46 +0100
http://bitbucket.org/pypy/pypy/changeset/849233ae612f/

Log:	Stop subclassing FlowObjSpace from ObjSpace.

	Copy missing methods into FlowObjSpace and simplify
	call_valuestack()

	(causes a test failure related to special-casing of interphooks)

diff --git a/pypy/objspace/flow/objspace.py b/pypy/objspace/flow/objspace.py
--- a/pypy/objspace/flow/objspace.py
+++ b/pypy/objspace/flow/objspace.py
@@ -38,7 +38,7 @@
     }
 
 # ______________________________________________________________________
-class FlowObjSpace(ObjSpace):
+class FlowObjSpace(object):
     """NOT_RPYTHON.
     The flow objspace space is used to produce a flow graph by recording
     the space operations that the interpreter generates when it interprets
@@ -130,6 +130,12 @@
     def newslice(self, w_start, w_stop, w_step):
         return self.do_operation('newslice', w_start, w_stop, w_step)
 
+    def newbool(self, b):
+        if b:
+            return self.w_True
+        else:
+            return self.w_False
+
     def wrap(self, obj):
         if isinstance(obj, (Variable, Constant)):
             raise TypeError("already wrapped: " + repr(obj))
@@ -197,6 +203,9 @@
     def getexecutioncontext(self):
         return self.frame
 
+    def exception_issubclass_w(self, w_cls1, w_cls2):
+        return self.is_true(self.issubtype(w_cls1, w_cls2))
+
     def _exception_match(self, w_exc_type, w_check_class):
         """Helper for exception_match
 
@@ -293,7 +302,7 @@
 
     def fixedview(self, w_tuple, expected_length=None):
         return self.unpackiterable(w_tuple, expected_length)
-    listview = fixedview
+    listview = fixedview_unroll = fixedview
 
     def unpackiterable(self, w_iterable, expected_length=None):
         if not isinstance(w_iterable, Variable):
@@ -374,6 +383,9 @@
         return self.do_operation_with_implicit_exceptions('setitem', w_obj,
                                                           w_key, w_val)
 
+    def setitem_str(self, w_obj, key, w_value):
+        return self.setitem(w_obj, self.wrap(key), w_value)
+
     def getattr(self, w_obj, w_name):
         # handling special things like sys
         # unfortunately this will never vanish with a unique import logic :-(
@@ -402,6 +414,9 @@
         return self.do_operation_with_implicit_exceptions('getattr',
                 w_obj, w_name)
 
+    def isinstance_w(self, w_obj, w_type):
+        return self.is_true(self.isinstance(w_obj, w_type))
+
     def import_name(self, name, glob=None, loc=None, frm=None, level=-1):
         try:
             mod = __import__(name, glob, loc, frm, level)
@@ -424,6 +439,14 @@
             raise FSException(self.w_ImportError,
                 self.wrap("cannot import name '%s'" % w_name.value))
 
+    def call_valuestack(self, w_func, nargs, frame):
+        args = frame.make_arguments(nargs)
+        return self.call_args(w_func, args)
+
+    def call_method(self, w_obj, methname, *arg_w):
+        w_meth = self.getattr(w_obj, self.wrap(methname))
+        return self.call_function(w_meth, *arg_w)
+
     def call_function(self, w_func, *args_w):
         nargs = len(args_w)
         args = argument.ArgumentsForTranslation(self, list(args_w))


More information about the pypy-commit mailing list