[pypy-commit] pypy kill-ootype: Kill get_funcobj() because it is now trivial

rlamy noreply at buildbot.pypy.org
Tue Jul 23 14:11:30 CEST 2013


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: kill-ootype
Changeset: r65554:4cd0c0e9db23
Date: 2013-07-23 14:10 +0200
http://bitbucket.org/pypy/pypy/changeset/4cd0c0e9db23/

Log:	Kill get_funcobj() because it is now trivial

diff --git a/rpython/jit/backend/llsupport/support.py b/rpython/jit/backend/llsupport/support.py
--- a/rpython/jit/backend/llsupport/support.py
+++ b/rpython/jit/backend/llsupport/support.py
@@ -1,4 +1,3 @@
-from rpython.translator.simplify import get_funcobj
 from rpython.rtyper.llinterp import LLInterpreter
 from rpython.rtyper.lltypesystem import lltype, rffi
 from rpython.rtyper.extregistry import ExtRegistryEntry
@@ -28,7 +27,7 @@
                 i += 1
         return real_args
 
-    funcobj = get_funcobj(fnptr)
+    funcobj = fnptr._obj
     if hasattr(funcobj, 'graph'):
         # cache the llinterp; otherwise the remember_malloc/remember_free
         # done on the LLInterpreter don't match
diff --git a/rpython/jit/codewriter/call.py b/rpython/jit/codewriter/call.py
--- a/rpython/jit/codewriter/call.py
+++ b/rpython/jit/codewriter/call.py
@@ -8,7 +8,7 @@
 from rpython.jit.codewriter.effectinfo import (VirtualizableAnalyzer,
     QuasiImmutAnalyzer, RandomEffectsAnalyzer, effectinfo_from_writeanalyze,
     EffectInfo, CallInfoCollection)
-from rpython.translator.simplify import get_funcobj, get_functype
+from rpython.translator.simplify import get_functype
 from rpython.rtyper.lltypesystem import lltype, llmemory
 from rpython.translator.backendopt.canraise import RaiseAnalyzer
 from rpython.translator.backendopt.writeanalyze import ReadWriteAnalyzer
@@ -86,7 +86,7 @@
         if is_candidate is None:
             is_candidate = self.is_candidate
         if op.opname == 'direct_call':
-            funcobj = get_funcobj(op.args[0].value)
+            funcobj = op.args[0].value._obj
             graph = funcobj.graph
             if is_candidate(graph):
                 return [graph]     # common case: look inside this graph
@@ -130,7 +130,7 @@
             funcptr = op.args[0].value
             if self.jitdriver_sd_from_portal_runner_ptr(funcptr) is not None:
                 return 'recursive'
-            funcobj = get_funcobj(funcptr)
+            funcobj = funcptr._obj
             if getattr(funcobj, 'graph', None) is None:
                 return 'residual'
             targetgraph = funcobj.graph
@@ -222,7 +222,7 @@
         loopinvariant = False
         call_release_gil_target = llmemory.NULL
         if op.opname == "direct_call":
-            funcobj = get_funcobj(op.args[0].value)
+            funcobj = op.args[0].value._obj
             assert getattr(funcobj, 'calling_conv', 'c') == 'c', (
                 "%r: getcalldescr() with a non-default call ABI" % (op,))
             func = getattr(funcobj, '_callable', None)
diff --git a/rpython/jit/codewriter/jtransform.py b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -14,7 +14,6 @@
 from rpython.rlib.rgc import lltype_is_gc
 from rpython.rtyper.lltypesystem import lltype, llmemory, rstr, rclass, rffi
 from rpython.rtyper.rclass import IR_QUASIIMMUTABLE, IR_QUASIIMMUTABLE_ARRAY
-from rpython.translator.simplify import get_funcobj
 from rpython.translator.unsimplify import varoftype
 
 class UnsupportedMallocFlags(Exception):
@@ -1444,7 +1443,7 @@
         # because functions that are neither nonneg nor fast don't have an
         # oopspec any more
         # xxx break of abstraction:
-        func = get_funcobj(op.args[0].value)._callable
+        func = op.args[0].value._obj._callable
         # base hints on the name of the ll function, which is a bit xxx-ish
         # but which is safe for now
         assert func.func_name.startswith('ll_')
diff --git a/rpython/jit/codewriter/support.py b/rpython/jit/codewriter/support.py
--- a/rpython/jit/codewriter/support.py
+++ b/rpython/jit/codewriter/support.py
@@ -15,7 +15,6 @@
 from rpython.rtyper.lltypesystem import lltype, rclass, rffi, llmemory, rstr as ll_rstr, rdict as ll_rdict
 from rpython.rtyper.lltypesystem.lloperation import llop
 from rpython.rtyper.lltypesystem.module import ll_math
-from rpython.translator.simplify import get_funcobj
 from rpython.translator.translator import TranslationContext
 from rpython.translator.unsimplify import split_block
 
@@ -149,7 +148,7 @@
 def maybe_on_top_of_llinterp(rtyper, fnptr):
     # Run a generated graph on top of the llinterp for testing.
     # When translated, this just returns the fnptr.
-    funcobj = get_funcobj(fnptr)
+    funcobj = fnptr._obj
     if hasattr(funcobj, 'graph'):
         llinterp = LLInterpreter(rtyper)  #, exc_data_ptr=exc_data_ptr)
         def on_top_of_llinterp(*args):
@@ -772,7 +771,7 @@
 
 def decode_builtin_call(op):
     if op.opname == 'direct_call':
-        fnobj = get_funcobj(op.args[0].value)
+        fnobj = op.args[0].value._obj
         opargs = op.args[1:]
         return get_call_oopspec_opargs(fnobj, opargs)
     elif op.opname == 'gc_identityhash':
diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -247,7 +247,7 @@
         test_ajit::test_inline_jit_merge_point
         """
         from rpython.translator.backendopt.inline import (
-            get_funcobj, inlinable_static_callers, auto_inlining)
+            inlinable_static_callers, auto_inlining)
 
         jmp_calls = {}
         def get_jmp_call(graph, _inline_jit_merge_point_):
@@ -277,7 +277,7 @@
             msg = ("The first operation of an _inline_jit_merge_point_ graph must be "
                    "a direct_call to the function passed to @jitdriver.inline()")
             assert op_jmp_call.opname == 'direct_call', msg
-            jmp_funcobj = get_funcobj(op_jmp_call.args[0].value)
+            jmp_funcobj = op_jmp_call.args[0].value._obj
             assert jmp_funcobj._callable is _inline_jit_merge_point_, msg
             jmp_block.operations.remove(op_jmp_call)
             return op_jmp_call, jmp_funcobj.graph
diff --git a/rpython/rtyper/test/test_rlist.py b/rpython/rtyper/test/test_rlist.py
--- a/rpython/rtyper/test/test_rlist.py
+++ b/rpython/rtyper/test/test_rlist.py
@@ -1382,7 +1382,6 @@
         assert res == True
 
     def test_immutable_list_out_of_instance(self):
-        from rpython.translator.simplify import get_funcobj
         for immutable_fields in (["a", "b"], ["a", "b", "y[*]"]):
             class A(object):
                 _immutable_fields_ = immutable_fields
@@ -1401,7 +1400,7 @@
             block = graph.startblock
             op = block.operations[-1]
             assert op.opname == 'direct_call'
-            func = get_funcobj(op.args[0].value)._callable
+            func = op.args[0].value._obj._callable
             assert ('foldable' in func.func_name) == \
                    ("y[*]" in immutable_fields)
 
diff --git a/rpython/translator/backendopt/canraise.py b/rpython/translator/backendopt/canraise.py
--- a/rpython/translator/backendopt/canraise.py
+++ b/rpython/translator/backendopt/canraise.py
@@ -3,7 +3,6 @@
 from rpython.rtyper.lltypesystem.lloperation import LL_OPERATIONS
 from rpython.tool.ansi_print import ansi_log
 from rpython.translator.backendopt import graphanalyze
-from rpython.translator.simplify import get_funcobj
 
 log = py.log.Producer("canraise")
 py.log.setconsumer("canraise", ansi_log)
@@ -18,7 +17,7 @@
             return True
 
     def analyze_external_call(self, op, seen=None):
-        fnobj = get_funcobj(op.args[0].value)
+        fnobj = op.args[0].value._obj
         return getattr(fnobj, 'canraise', True)
 
     def analyze_external_method(self, op, TYPE, meth):
diff --git a/rpython/translator/backendopt/graphanalyze.py b/rpython/translator/backendopt/graphanalyze.py
--- a/rpython/translator/backendopt/graphanalyze.py
+++ b/rpython/translator/backendopt/graphanalyze.py
@@ -1,4 +1,4 @@
-from rpython.translator.simplify import get_graph, get_funcobj
+from rpython.translator.simplify import get_graph
 from rpython.tool.algo.unionfind import UnionFind
 
 
@@ -52,7 +52,7 @@
         return self.bottom_result()
 
     def analyze_external_call(self, op, seen=None):
-        funcobj = get_funcobj(op.args[0].value)
+        funcobj = op.args[0].value._obj
         result = self.bottom_result()
         if hasattr(funcobj, '_callbacks'):
             bk = self.translator.annotator.bookkeeper
diff --git a/rpython/translator/backendopt/inline.py b/rpython/translator/backendopt/inline.py
--- a/rpython/translator/backendopt/inline.py
+++ b/rpython/translator/backendopt/inline.py
@@ -8,7 +8,7 @@
 from rpython.translator.backendopt import removenoops
 from rpython.translator.backendopt.canraise import RaiseAnalyzer
 from rpython.translator.backendopt.support import log, find_loop_blocks
-from rpython.translator.simplify import join_blocks, cleanup_graph, get_graph, get_funcobj
+from rpython.translator.simplify import join_blocks, cleanup_graph, get_graph
 from rpython.translator.unsimplify import copyvar, split_block
 
 
@@ -63,7 +63,7 @@
     for block in graph.iterblocks():
         for i, op in enumerate(block.operations):
             if op.opname == "direct_call":
-                funcobj = get_funcobj(op.args[0].value)
+                funcobj = op.args[0].value._obj
             elif op.opname == "oosend":
                 funcobj = get_meth_from_oosend(op)
                 if funcobj is None:
@@ -218,7 +218,7 @@
     def get_graph_from_op(self, op):
         assert op.opname in ('direct_call', 'oosend')
         if op.opname == 'direct_call':
-            return get_funcobj(self.op.args[0].value).graph
+            return self.op.args[0].value._obj.graph
         else:
             return get_meth_from_oosend(op).graph
 
@@ -246,7 +246,7 @@
         d = {}
         for i, op in enumerate(block.operations):
             if op.opname == "direct_call":
-                funcobj = get_funcobj(op.args[0].value)
+                funcobj = op.args[0].value._obj
             elif op.opname == "oosend":
                 funcobj = get_meth_from_oosend(op)
                 if funcobj is None:
@@ -622,7 +622,7 @@
         for block in parentgraph.iterblocks():
             for op in block.operations:
                 if op.opname == "direct_call":
-                    funcobj = get_funcobj(op.args[0].value)
+                    funcobj = op.args[0].value._obj
                     graph = getattr(funcobj, 'graph', None)
                     if graph is not None and graph in ok_to_call:
                         if getattr(getattr(funcobj, '_callable', None),
@@ -654,7 +654,7 @@
                 op = ops[i]
                 i -= 1
                 if op.opname == "direct_call":
-                    funcobj = get_funcobj(op.args[0].value)
+                    funcobj = op.args[0].value._obj
                     graph = getattr(funcobj, 'graph', None)
                     if graph is not None:
                         if getattr(getattr(funcobj, '_callable', None),
diff --git a/rpython/translator/backendopt/test/test_canraise.py b/rpython/translator/backendopt/test/test_canraise.py
--- a/rpython/translator/backendopt/test/test_canraise.py
+++ b/rpython/translator/backendopt/test/test_canraise.py
@@ -1,6 +1,4 @@
-import py
 from rpython.translator.translator import TranslationContext, graphof
-from rpython.translator.simplify import get_funcobj
 from rpython.translator.backendopt.canraise import RaiseAnalyzer
 from rpython.translator.backendopt.all import backend_optimizations
 from rpython.conftest import option
@@ -144,7 +142,7 @@
         # check that we fished the expected ops
         def check_call(op, fname):
             assert op.opname == "direct_call"
-            assert get_funcobj(op.args[0].value)._name == fname
+            assert op.args[0].value._obj._name == fname
         check_call(op_call_f, "f")
         check_call(op_call_m, "m")
 
diff --git a/rpython/translator/backendopt/test/test_writeanalyze.py b/rpython/translator/backendopt/test/test_writeanalyze.py
--- a/rpython/translator/backendopt/test/test_writeanalyze.py
+++ b/rpython/translator/backendopt/test/test_writeanalyze.py
@@ -1,7 +1,5 @@
-import py
 from rpython.rtyper.lltypesystem import lltype
 from rpython.translator.translator import TranslationContext, graphof
-from rpython.translator.simplify import get_funcobj
 from rpython.translator.backendopt.writeanalyze import WriteAnalyzer, top_set
 from rpython.translator.backendopt.writeanalyze import ReadWriteAnalyzer
 from rpython.translator.backendopt.all import backend_optimizations
@@ -159,7 +157,7 @@
         # check that we fished the expected ops
         def check_call(op, fname):
             assert op.opname == "direct_call"
-            assert get_funcobj(op.args[0].value)._name == fname
+            assert op.args[0].value._obj._name == fname
         check_call(op_call_f, "f")
         check_call(op_call_m, "m")
 
@@ -193,7 +191,6 @@
 
     def test_llexternal(self):
         from rpython.rtyper.lltypesystem.rffi import llexternal
-        from rpython.rtyper.lltypesystem import lltype
         z = llexternal('z', [lltype.Signed], lltype.Signed)
         def f(x):
             return z(x)
@@ -307,7 +304,7 @@
 
         # check that we fished the expected ops
         assert op_call_f.opname == "direct_call"
-        assert get_funcobj(op_call_f.args[0].value)._name == 'A.f'
+        assert op_call_f.args[0].value._obj._name == 'A.f'
 
         result = wa.analyze(op_call_f)
         assert len(result) == 2
diff --git a/rpython/translator/simplify.py b/rpython/translator/simplify.py
--- a/rpython/translator/simplify.py
+++ b/rpython/translator/simplify.py
@@ -4,7 +4,6 @@
 
 simplify_graph() applies all simplifications defined in this file.
 """
-
 import py
 
 from rpython.flowspace import operation
@@ -16,16 +15,6 @@
 from rpython.rtyper.lltypesystem import lloperation, lltype
 from rpython.rtyper.ootypesystem import ootype
 
-def get_funcobj(func):
-    """
-    Return an object which is supposed to have attributes such as graph and
-    _callable
-    """
-    if hasattr(func, '_obj'):
-        return func._obj # lltypesystem
-    else:
-        return func # ootypesystem
-
 def get_functype(TYPE):
     if isinstance(TYPE, lltype.Ptr):
         return TYPE.TO
@@ -39,7 +28,7 @@
     f = arg.value
     if not isinstance(f, lltype._ptr) and not isinstance(f, ootype._callable):
         return None
-    funcobj = get_funcobj(f)
+    funcobj = f._obj
     try:
         callable = funcobj._callable
     except (AttributeError, KeyError, AssertionError):


More information about the pypy-commit mailing list