Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79514:f7b49dec8b9e
Date: 2015-09-07 23:31 +0200
http://bitbucket.org/pypy/pypy/changeset/f7b49dec8b9e/
Log: fix some tests
diff --git a/rpython/jit/backend/x86/test/test_basic.py
b/rpython/jit/backend/x86/test/test_basic.py
--- a/rpython/jit/backend/x86/test/test_basic.py
+++ b/rpython/jit/backend/x86/test/test_basic.py
@@ -8,6 +8,9 @@
class Jit386Mixin(support.LLJitMixin):
type_system = 'lltype'
CPUClass = getcpuclass()
+ # we have to disable unroll
+ enable_opts = "intbounds:rewrite:virtualize:string:earlyforce:pure:heap"
+ basic = False
def check_jumps(self, maxcount):
pass
diff --git a/rpython/jit/codewriter/test/test_codewriter.py
b/rpython/jit/codewriter/test/test_codewriter.py
--- a/rpython/jit/codewriter/test/test_codewriter.py
+++ b/rpython/jit/codewriter/test/test_codewriter.py
@@ -23,8 +23,9 @@
self.fieldname = fieldname
class FakeSizeDescr(AbstractDescr):
- def __init__(self, STRUCT):
+ def __init__(self, STRUCT, vtable=None):
self.STRUCT = STRUCT
+ self.vtable = vtable
class FakeArrayDescr(AbstractDescr):
def __init__(self, ARRAY):
diff --git a/rpython/jit/codewriter/test/test_flatten.py
b/rpython/jit/codewriter/test/test_flatten.py
--- a/rpython/jit/codewriter/test/test_flatten.py
+++ b/rpython/jit/codewriter/test/test_flatten.py
@@ -58,7 +58,7 @@
return FakeDescr()
def fielddescrof(self, STRUCT, name):
return FakeDescr()
- def sizeof(self, STRUCT):
+ def sizeof(self, STRUCT, vtable=None):
return FakeDescr()
def arraydescrof(self, ARRAY):
return FakeDescr()
diff --git a/rpython/jit/codewriter/test/test_jtransform.py
b/rpython/jit/codewriter/test/test_jtransform.py
--- a/rpython/jit/codewriter/test/test_jtransform.py
+++ b/rpython/jit/codewriter/test/test_jtransform.py
@@ -46,7 +46,7 @@
return ('interiorfielddescr', ARRAY, name)
def arraydescrof(self, ARRAY):
return FakeDescr(('arraydescr', ARRAY))
- def sizeof(self, STRUCT):
+ def sizeof(self, STRUCT, vtable=None):
return FakeDescr(('sizedescr', STRUCT))
class FakeDescr(tuple):
diff --git a/rpython/jit/codewriter/test/test_list.py
b/rpython/jit/codewriter/test/test_list.py
--- a/rpython/jit/codewriter/test/test_list.py
+++ b/rpython/jit/codewriter/test/test_list.py
@@ -31,7 +31,7 @@
def __repr__(self):
return '<FieldDescr %s>' % self.fieldname
class sizeof(AbstractDescr):
- def __init__(self, STRUCT):
+ def __init__(self, STRUCT, vtable=None):
self.STRUCT = STRUCT
def __repr__(self):
return '<SizeDescr>'
diff --git a/rpython/jit/metainterp/test/support.py
b/rpython/jit/metainterp/test/support.py
--- a/rpython/jit/metainterp/test/support.py
+++ b/rpython/jit/metainterp/test/support.py
@@ -10,6 +10,7 @@
from rpython.jit.codewriter.policy import JitPolicy
from rpython.jit.codewriter import codewriter, longlong
from rpython.rlib.rfloat import isnan
+from rpython.rlib.jit import ENABLE_ALL_OPTS
from rpython.translator.backendopt.all import backend_optimizations
@@ -164,6 +165,8 @@
class JitMixin:
basic = True
+ enable_opts = ENABLE_ALL_OPTS
+
# Basic terminology: the JIT produces "loops" and "bridges".
# Bridges are always attached to failing guards. Every loop is
@@ -180,7 +183,8 @@
the ones that end in FINISH. Either pass a dictionary (then
the check must match exactly), or some keyword arguments (then
the check is only about the instructions named)."""
- get_stats().check_resops(expected=expected, **check)
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ get_stats().check_resops(expected=expected, **check)
def check_simple_loop(self, expected=None, **check):
"""Useful in the simplest case when we have only one loop
@@ -188,51 +192,62 @@
Only the operations within the loop formed by that single jump
will be counted; the bridges are all ignored. If several loops
were compiled, complains."""
- get_stats().check_simple_loop(expected=expected, **check)
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ get_stats().check_simple_loop(expected=expected, **check)
def check_trace_count(self, count): # was check_loop_count
"""Check the number of loops and bridges compiled."""
- assert get_stats().compiled_count == count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert get_stats().compiled_count == count
def check_trace_count_at_most(self, count):
"""Check the number of loops and bridges compiled."""
- assert get_stats().compiled_count <= count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert get_stats().compiled_count <= count
def check_jitcell_token_count(self, count): # was check_tree_loop_count
"""This should check the number of independent trees of code.
(xxx it is not 100% clear that the count is correct)"""
- assert len(get_stats().jitcell_token_wrefs) == count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert len(get_stats().jitcell_token_wrefs) == count
def check_target_token_count(self, count):
"""(xxx unknown)"""
- tokens = get_stats().get_all_jitcell_tokens()
- n = sum([len(t.target_tokens) for t in tokens])
- assert n == count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ tokens = get_stats().get_all_jitcell_tokens()
+ n = sum([len(t.target_tokens) for t in tokens])
+ assert n == count
def check_enter_count(self, count):
"""Check the number of times pyjitpl ran. (Every time, it
should have produced either one loop or one bridge, or aborted;
but it is not 100% clear that this is still correct in the
presence of unrolling.)"""
- assert get_stats().enter_count == count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert get_stats().enter_count == count
def check_enter_count_at_most(self, count):
"""Check the number of times pyjitpl ran."""
- assert get_stats().enter_count <= count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert get_stats().enter_count <= count
def check_aborted_count(self, count):
"""Check the number of times pyjitpl was aborted."""
- assert get_stats().aborted_count == count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert get_stats().aborted_count == count
def check_aborted_count_at_least(self, count):
"""Check the number of times pyjitpl was aborted."""
- assert get_stats().aborted_count >= count
+ if self.enable_opts == ENABLE_ALL_OPTS:
+ assert get_stats().aborted_count >= count
def meta_interp(self, *args, **kwds):
kwds['CPUClass'] = self.CPUClass
kwds['type_system'] = self.type_system
if "backendopt" not in kwds:
kwds["backendopt"] = False
+ if "enable_opts" not in kwds and hasattr(self, 'enable_opts'):
+ kwds['enable_opts'] = self.enable_opts
old = codewriter.CodeWriter.debug
try:
codewriter.CodeWriter.debug = True
diff --git a/rpython/jit/metainterp/test/test_ajit.py
b/rpython/jit/metainterp/test/test_ajit.py
--- a/rpython/jit/metainterp/test/test_ajit.py
+++ b/rpython/jit/metainterp/test/test_ajit.py
@@ -2772,6 +2772,8 @@
raise InvalidLoop
old_optimize_trace = optimizeopt.optimize_trace
optimizeopt.optimize_trace = my_optimize_trace
+ if not self.basic:
+ py.test.skip("unrolling")
try:
res = self.meta_interp(f, [23, 4])
assert res == 23
@@ -2903,7 +2905,7 @@
res = self.meta_interp(f, [10, 7])
assert res == f(10, 7)
self.check_jitcell_token_count(2)
- if 0:
+ if self.basic:
for cell in get_stats().get_all_jitcell_tokens():
assert len(cell.target_tokens) == 2
@@ -2913,8 +2915,9 @@
res = self.meta_interp(g, [10])
assert res == g(10)
self.check_jitcell_token_count(2)
- for cell in get_stats().get_all_jitcell_tokens():
- assert len(cell.target_tokens) <= 3
+ if self.basic:
+ for cell in get_stats().get_all_jitcell_tokens():
+ assert len(cell.target_tokens) <= 3
def g(n):
return f(n, 2) + f(n, 3) + f(n, 4) + f(n, 5) + f(n, 6) + f(n, 7)
@@ -2924,12 +2927,13 @@
# 2 loops and one function
self.check_jitcell_token_count(3)
cnt = 0
- for cell in get_stats().get_all_jitcell_tokens():
- if cell.target_tokens is None:
- cnt += 1
- else:
- assert len(cell.target_tokens) <= 4
- assert cnt == 1
+ if self.basic:
+ for cell in get_stats().get_all_jitcell_tokens():
+ if cell.target_tokens is None:
+ cnt += 1
+ else:
+ assert len(cell.target_tokens) <= 4
+ assert cnt == 1
def test_frame_finished_during_retrace(self):
class Base(object):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit