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