Author: Alex Gaynor <alex.gay...@gmail.com>
Branch: kill-someobject
Changeset: r57835:bf78aca59cc6
Date: 2012-10-07 19:26 +0200
http://bitbucket.org/pypy/pypy/changeset/bf78aca59cc6/

Log:    Remove more pyobj stuff

diff --git a/pypy/rpython/lltypesystem/test/test_lltype.py 
b/pypy/rpython/lltypesystem/test/test_lltype.py
--- a/pypy/rpython/lltypesystem/test/test_lltype.py
+++ b/pypy/rpython/lltypesystem/test/test_lltype.py
@@ -718,10 +718,6 @@
     gc.collect()
     repr(s)
 
-def test_pyobject():
-    p = pyobjectptr({42: 84})
-    assert typeOf(p) == Ptr(PyObject)
-
 def test_name_clash():
     import re
     fn = lltype.__file__
diff --git a/pypy/rpython/memory/gctransform/support.py 
b/pypy/rpython/memory/gctransform/support.py
--- a/pypy/rpython/memory/gctransform/support.py
+++ b/pypy/rpython/memory/gctransform/support.py
@@ -3,17 +3,6 @@
 from pypy.annotation import model as annmodel
 import os
 
-def var_ispyobj(var):
-    if hasattr(var, 'concretetype'):
-        if isinstance(var.concretetype, lltype.Ptr):
-            return var.concretetype.TO._gckind == 'cpy'
-        else:
-            return False
-    else:
-        # assume PyObjPtr
-        return True
-
-PyObjPtr = lltype.Ptr(lltype.PyObject)
 
 def find_gc_ptrs_in_type(TYPE):
     if isinstance(TYPE, lltype.Array):
@@ -33,20 +22,6 @@
     else:
         return []
 
-def type_contains_pyobjs(TYPE):
-    if isinstance(TYPE, lltype.Array):
-        return type_contains_pyobjs(TYPE.OF)
-    elif isinstance(TYPE, lltype.Struct):
-        result = []
-        for name in TYPE._names:
-            if type_contains_pyobjs(TYPE._flds[name]):
-                return True
-        return False
-    elif isinstance(TYPE, lltype.Ptr) and TYPE.TO._gckind == 'cpy':
-        return True
-    else:
-        return False
-
 def get_rtti(TYPE):
     if isinstance(TYPE, lltype.RttiStruct):
         try:
diff --git a/pypy/rpython/memory/gctransform/transform.py 
b/pypy/rpython/memory/gctransform/transform.py
--- a/pypy/rpython/memory/gctransform/transform.py
+++ b/pypy/rpython/memory/gctransform/transform.py
@@ -1,4 +1,3 @@
-import py
 from pypy.rpython.lltypesystem import lltype, llmemory
 from pypy.objspace.flow.model import SpaceOperation, Variable, Constant, \
      c_last_exception, checkgraph
@@ -7,24 +6,18 @@
 from pypy.translator.unsimplify import starts_with_empty_block
 from pypy.translator.backendopt.support import var_needsgc
 from pypy.translator.backendopt import inline
-from pypy.translator.backendopt import graphanalyze
 from pypy.translator.backendopt.canraise import RaiseAnalyzer
 from pypy.translator.backendopt.ssa import DataFlowFamilyBuilder
 from pypy.translator.backendopt.constfold import constant_fold_graph
 from pypy.annotation import model as annmodel
 from pypy.rpython import rmodel
-from pypy.rpython.memory import gc
-from pypy.rpython.memory.gctransform.support import var_ispyobj
 from pypy.rpython.annlowlevel import MixLevelHelperAnnotator
 from pypy.rpython.rtyper import LowLevelOpList
 from pypy.rpython.rbuiltin import gen_cast
 from pypy.rlib.rarithmetic import ovfcheck
-import sys
-import os
 from pypy.rpython.lltypesystem.lloperation import llop
-from pypy.translator.simplify import join_blocks, cleanup_graph
+from pypy.translator.simplify import cleanup_graph
 
-PyObjPtr = lltype.Ptr(lltype.PyObject)
 
 class GcHighLevelOp(object):
     def __init__(self, gct, op, index, llops):
@@ -55,17 +48,9 @@
 
         if var_needsgc(v_result):
             gct.livevars.append(v_result)
-            if var_ispyobj(v_result):
-                if opname in ('getfield', 'getarrayitem', 'same_as',
-                                 'cast_pointer', 'getsubstruct',
-                                 'getinteriorfield'):
-                    # XXX more operations?
-                    gct.push_alive(v_result, self.llops)
-            elif opname not in ('direct_call', 'indirect_call'):
+            if opname not in ('direct_call', 'indirect_call'):
                 gct.push_alive(v_result, self.llops)
 
-
-
     def rename(self, newopname):
         self.llops.append(
             SpaceOperation(newopname, self.spaceop.args, self.spaceop.result))
@@ -85,8 +70,8 @@
 
     def cast_result(self, var):
         v_result = self.spaceop.result
-        resulttype = getattr(v_result, 'concretetype', PyObjPtr)
-        curtype = getattr(var, 'concretetype', PyObjPtr)
+        resulttype = v_result.concretetype
+        curtype = var.concretetype
         if curtype == resulttype:
             self.genop('same_as', [var], resultvar=v_result)
         else:
@@ -120,11 +105,8 @@
             self.minimalgctransformer = None
 
     def get_lltype_of_exception_value(self):
-        if self.translator is not None:
-            exceptiondata = self.translator.rtyper.getexceptiondata()
-            return exceptiondata.lltype_of_exception_value
-        else:
-            return lltype.Ptr(lltype.PyObject)
+        exceptiondata = self.translator.rtyper.getexceptiondata()
+        return exceptiondata.lltype_of_exception_value
 
     def need_minimal_transform(self, graph):
         self.seen_graphs[graph] = True
@@ -329,28 +311,11 @@
         hop.rename('bare_' + opname)
         self.pop_alive(v_old, hop.llops)
 
-
     def push_alive(self, var, llops):
-        if var_ispyobj(var):
-            self.push_alive_pyobj(var, llops)
-        else:
-            self.push_alive_nopyobj(var, llops)
+        self.push_alive_nopyobj(var, llops)
 
     def pop_alive(self, var, llops):
-        if var_ispyobj(var):
-            self.pop_alive_pyobj(var, llops)
-        else:
-            self.pop_alive_nopyobj(var, llops)
-
-    def push_alive_pyobj(self, var, llops):
-        if hasattr(var, 'concretetype') and var.concretetype != PyObjPtr:
-            var = gen_cast(llops, PyObjPtr, var)
-        llops.genop("gc_push_alive_pyobj", [var])
-
-    def pop_alive_pyobj(self, var, llops):
-        if hasattr(var, 'concretetype') and var.concretetype != PyObjPtr:
-            var = gen_cast(llops, PyObjPtr, var)
-        llops.genop("gc_pop_alive_pyobj", [var])
+        self.pop_alive_nopyobj(var, llops)
 
     def push_alive_nopyobj(self, var, llops):
         pass
@@ -359,7 +324,7 @@
         pass
 
     def var_needs_set_transform(self, var):
-        return var_ispyobj(var)
+        return False
 
     def default(self, hop):
         hop.llops.append(hop.spaceop)
diff --git a/pypy/translator/c/funcgen.py b/pypy/translator/c/funcgen.py
--- a/pypy/translator/c/funcgen.py
+++ b/pypy/translator/c/funcgen.py
@@ -53,7 +53,7 @@
         self.collect_var_and_types()
 
         for v in self.vars:
-            T = getattr(v, 'concretetype', PyObjPtr)
+            T = v.concretetype
             # obscure: skip forward references and hope for the best
             # (needed for delayed function pointers)
             if isinstance(T, Ptr) and T.TO.__class__ == ForwardReference:
@@ -121,7 +121,7 @@
         db = self.db
         lltypes = identity_dict()
         for v in self.vars:
-            T = getattr(v, 'concretetype', PyObjPtr)
+            T = v.concretetype
             typename = db.gettype(T)
             lltypes[v] = T, typename
         self.illtypes = lltypes
@@ -221,12 +221,6 @@
             if len(block.exits) == 0:
                 assert len(block.inputargs) == 1
                 # regular return block
-                if self.exception_policy == "CPython":
-                    assert self.lltypemap(self.graph.getreturnvar()) == 
PyObjPtr
-                    yield 'if (RPyExceptionOccurred()) {'
-                    yield '\tRPyConvertExceptionToCPython();'
-                    yield '\treturn NULL;'
-                    yield '}'
                 retval = self.expr(block.inputargs[0])
                 if self.exception_policy != "exc_helper":
                     yield 'RPY_DEBUG_RETURN();'
@@ -241,20 +235,12 @@
                 assert block.exitswitch != c_last_exception
                 # block ending in a switch on a value
                 TYPE = self.lltypemap(block.exitswitch)
-                if TYPE in (Bool, PyObjPtr):
+                if TYPE == Bool:
                     expr = self.expr(block.exitswitch)
                     for link in block.exits[:0:-1]:
                         assert link.exitcase in (False, True)
-                        if TYPE == Bool:
-                            if not link.exitcase:
-                                expr = '!' + expr
-                        elif TYPE == PyObjPtr:
-                            yield 'assert(%s == Py_True || %s == Py_False);' % 
(
-                                expr, expr)
-                            if link.exitcase:
-                                expr = '%s == Py_True' % expr
-                            else:
-                                expr = '%s == Py_False' % expr
+                        if not link.exitcase:
+                            expr = '!' + expr
                         yield 'if (%s) {' % expr
                         for op in self.gen_link(link):
                             yield '\t' + op
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to