Author: Ronan Lamy <[email protected]>
Branch: kill-ootype
Changeset: r65560:4576b880cad6
Date: 2013-07-23 16:22 +0200
http://bitbucket.org/pypy/pypy/changeset/4576b880cad6/

Log:    remove rpython.translator.backendopt.checkvirtual

diff --git a/rpython/translator/backendopt/all.py 
b/rpython/translator/backendopt/all.py
--- a/rpython/translator/backendopt/all.py
+++ b/rpython/translator/backendopt/all.py
@@ -9,7 +9,6 @@
 from rpython.translator.backendopt import mallocprediction
 from rpython.translator.backendopt.removeassert import remove_asserts
 from rpython.translator.backendopt.support import log
-from rpython.translator.backendopt.checkvirtual import check_virtual_methods
 from rpython.translator.backendopt.storesink import storesink_graph
 from rpython.flowspace.model import checkgraph
 
@@ -53,9 +52,6 @@
     if config.raisingop2direct_call:
         raisingop2direct_call(translator, graphs)
 
-    if translator.rtyper.type_system.name == 'ootypesystem':
-        check_virtual_methods()
-
     if config.remove_asserts:
         constfold(config, graphs)
         remove_asserts(translator, graphs)
@@ -93,7 +89,7 @@
 
     if config.clever_malloc_removal:
         threshold = config.clever_malloc_removal_threshold
-        heuristic = get_function(config.clever_malloc_removal_heuristic)       
 
+        heuristic = get_function(config.clever_malloc_removal_heuristic)
         log.inlineandremove("phase with threshold factor: %s" % threshold)
         log.inlineandremove("heuristic: %s.%s" % (heuristic.__module__,
                                                   heuristic.__name__))
@@ -105,7 +101,7 @@
         constfold(config, graphs)
         if config.print_statistics:
             print "after clever inlining and malloc removal"
-            print_statistics(translator.graphs[0], translator)        
+            print_statistics(translator.graphs[0], translator)
 
     if config.storesink:
         for graph in graphs:
@@ -145,7 +141,7 @@
 def constfold(config, graphs):
     if config.constfold:
         for graph in graphs:
-            constant_fold_graph(graph)    
+            constant_fold_graph(graph)
 
 def inline_malloc_removal_phase(config, translator, graphs, inline_threshold,
                                 inline_heuristic,
@@ -175,4 +171,4 @@
 
         if config.print_statistics:
             print "after malloc removal:"
-            print_statistics(translator.graphs[0], translator)    
+            print_statistics(translator.graphs[0], translator)
diff --git a/rpython/translator/backendopt/checkvirtual.py 
b/rpython/translator/backendopt/checkvirtual.py
deleted file mode 100644
--- a/rpython/translator/backendopt/checkvirtual.py
+++ /dev/null
@@ -1,21 +0,0 @@
-"""
-Visit all known INSTANCEs to see which methods can be marked as
-non-virtual: a method is marked as non-virtual when it's never
-overridden in the subclasses: this means that backends can translate
-oosends relative to that method into non-virtual call (or maybe
-switching back to a direct_call if the backend doesn't support
-non-virtual calls, such as JVM).
-"""
-
-from rpython.rtyper.ootypesystem import ootype
-
-def check_virtual_methods(INSTANCE=ootype.ROOT, super_methods = {}):
-    my_methods = super_methods.copy()
-    for name, method in INSTANCE._methods.iteritems():
-        method._virtual = False
-        my_methods[name] = method
-        if name in super_methods:
-            super_methods[name]._virtual = True
-
-    for SUB_INSTANCE in INSTANCE._subclasses:
-        check_virtual_methods(SUB_INSTANCE, my_methods)
diff --git a/rpython/translator/backendopt/test/test_checkvirtual.py 
b/rpython/translator/backendopt/test/test_checkvirtual.py
deleted file mode 100644
--- a/rpython/translator/backendopt/test/test_checkvirtual.py
+++ /dev/null
@@ -1,57 +0,0 @@
-from rpython.rtyper.ootypesystem.ootype import ROOT, Instance, \
-     addMethods, meth, Meth, Void
-from rpython.translator.backendopt.checkvirtual import check_virtual_methods
-
-def test_nonvirtual():
-    A = Instance("A", ROOT)
-    addMethods(A, {"foo": meth(Meth([], Void))})
-
-    check_virtual_methods()
-    assert A._methods["foo"]._virtual == False
-
-def test_checkvirtual_simple():
-    A = Instance("A", ROOT)
-    B = Instance("B", A)
-
-    addMethods(A, {"foo": meth(Meth([], Void)),
-                   "bar": meth(Meth([], Void))})
-    
-    addMethods(B, {"foo": meth(Meth([], Void))})
-
-    check_virtual_methods()
-    assert A._methods["foo"]._virtual == True
-    assert A._methods["bar"]._virtual == False
-    assert B._methods["foo"]._virtual == False
-
-def test_checkvirtual_deep():
-    A = Instance("A", ROOT)
-    B = Instance("B", A)
-    C = Instance("C", B)
-
-    addMethods(A, {"foo": meth(Meth([], Void)),
-                   "bar": meth(Meth([], Void))})
-    
-    addMethods(C, {"foo": meth(Meth([], Void))})
-
-    check_virtual_methods()
-    assert A._methods["foo"]._virtual == True
-    assert A._methods["bar"]._virtual == False
-    assert "foo" not in B._methods
-    assert C._methods["foo"]._virtual == False
-
-def test_checkvirtual_brother():
-    A = Instance("A", ROOT)
-    B1 = Instance("B1", A)
-    B2 = Instance("B2", A)
-
-    addMethods(A, {"foo": meth(Meth([], Void)),
-                   "bar": meth(Meth([], Void))})
-    
-    addMethods(B1, {"foo": meth(Meth([], Void))})
-
-    check_virtual_methods()
-    assert A._methods["foo"]._virtual == True
-    assert A._methods["bar"]._virtual == False
-    assert B1._methods["foo"]._virtual == False
-    assert "foo" not in B2._methods
-
diff --git a/rpython/translator/backendopt/test/test_inline.py 
b/rpython/translator/backendopt/test/test_inline.py
--- a/rpython/translator/backendopt/test/test_inline.py
+++ b/rpython/translator/backendopt/test/test_inline.py
@@ -1,16 +1,11 @@
 # XXX clean up these tests to use more uniform helpers
 import py
-import os
-from rpython.flowspace.model import Block, Link, Variable, Constant
-from rpython.flowspace.model import last_exception, checkgraph
+from rpython.flowspace.model import Variable, Constant, checkgraph
 from rpython.translator.backendopt import canraise
-from rpython.translator.backendopt.inline import simple_inline_function, 
CannotInline
-from rpython.translator.backendopt.inline import auto_inlining, Inliner
-from rpython.translator.backendopt.inline import collect_called_graphs
-from rpython.translator.backendopt.inline import measure_median_execution_cost
-from rpython.translator.backendopt.inline import instrument_inline_candidates
-from rpython.translator.backendopt.inline import auto_inline_graphs
-from rpython.translator.backendopt.checkvirtual import check_virtual_methods
+from rpython.translator.backendopt.inline import (simple_inline_function,
+    CannotInline, auto_inlining, Inliner, collect_called_graphs,
+    measure_median_execution_cost, instrument_inline_candidates,
+    auto_inline_graphs)
 from rpython.translator.translator import TranslationContext, graphof
 from rpython.rtyper.llinterp import LLInterpreter
 from rpython.rtyper.test.tool import BaseRtypingTest
@@ -87,11 +82,8 @@
         return eval_func
 
     def check_auto_inlining(self, func, sig, multiplier=None, 
call_count_check=False,
-                            checkvirtual=False, remove_same_as=False, 
heuristic=None,
-                            const_fold_first=False):
+                            remove_same_as=False, heuristic=None, 
const_fold_first=False):
         t = self.translate(func, sig)
-        if checkvirtual:
-            check_virtual_methods()
         if const_fold_first:
             from rpython.translator.backendopt.constfold import 
constant_fold_graph
             from rpython.translator.simplify import eliminate_empty_blocks
@@ -556,7 +548,7 @@
                 tot += item
             return tot
 
-        eval_func, t = self.check_auto_inlining(f, [], checkvirtual=True)
+        eval_func, t = self.check_auto_inlining(f, [])
         f_graph = graphof(t, f)
         called_graphs = collect_called_graphs(f_graph, t, include_oosend=False)
         assert len(called_graphs) == 0
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to