Author: Alex Gaynor <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit