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