Author: Stephan <step...@stzal.com> Branch: Changeset: r349:a907889d585c Date: 2013-02-03 17:37 +0100 http://bitbucket.org/pypy/lang-js/changeset/a907889d585c/
Log: added more jit viewer test cases diff --git a/test/jit_view.py b/test/jit_view.py --- a/test/jit_view.py +++ b/test/jit_view.py @@ -7,11 +7,22 @@ conftest.option = o from pypy.jit.metainterp.test.support import LLJitMixin +from pypy.rlib import jit from js import interpreter class TestJtTrace(LLJitMixin): + def run(self, code, expected): + jsint = interpreter.Interpreter() + + def interp_w(): + jit.set_param(None, "inlining", True) + code_val = jsint.run_src(code) + return code_val.ToNumber() + + assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == expected + def test_simple_loop(self): code = """ var i = 0; @@ -20,12 +31,8 @@ } return i; """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 100) def test_loop_in_func(self): code = """ @@ -38,12 +45,8 @@ } return f(); """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 100) def test_prop_loop_in_func(self): code = """ @@ -56,12 +59,8 @@ } return f(); """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 100) def test_object_alloc_loop_in_func_loop(self): code = """ @@ -74,12 +73,8 @@ } return f(); """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 100) def test_func_call_in_loop(self): code = """ @@ -92,12 +87,98 @@ } return i; """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 100) + + def test_local_func_call_in_loop(self): + code = """ + (function () { + var i = 0; + function f(a) { + return a + 1; + } + while(i < 100) { + i = f(i); + } + return i; + })(); + """ + + self.run(code, 100) + + def test_double_func_call_in_loop(self): + code = """ + (function () { + var i = 0; + function f(a) { + function g(b) { + return b + 1; + } + return g(a); + } + while(i < 100) { + i = f(i); + } + return i; + })(); + """ + + self.run(code, 100) + + def test_double_func_call_in_loop_no_arg(self): + code = """ + (function () { + var i = 0; + function f() { + function g() { + return i + 1; + } + return g(); + } + while(i < 100) { + i = f(); + } + return i; + })(); + """ + + self.run(code, 100) + + def test_recursive_func_call(self): + code = """ + (function () { + var i = 0; + function f(a) { + if (a < 100) { + return f(a+1); + } + return a; + } + return f(0); + })(); + """ + + self.run(code, 100) + + def test_loop_recursive_func_call(self): + code = """ + (function () { + function f(a) { + if (a < 10) { + return f(a+1); + } + return a; + } + + var i = 0; + while(i < 100) { + i = i + f(i); + } + return i; + })(); + """ + + self.run(code, 100) def test_loop_not_escapeing(self): code = """ @@ -109,13 +190,10 @@ return a; } f(); + 1; """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 1) def test_loop_little_escapeing(self): code = """ @@ -128,17 +206,13 @@ } f(); """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 100 + self.run(code, 100) def test_bitwise_and(self): code = """ function f() { - bitwiseAndValue = 4294967296; + var bitwiseAndValue = 4294967296; for (var i = 0; i < 600000; i++) { bitwiseAndValue = bitwiseAndValue & i; } @@ -146,9 +220,5 @@ f(); 1; """ - jsint = interpreter.Interpreter() - def interp_w(): - code_val = jsint.run_src(code) - return code_val.ToNumber() - assert self.meta_interp(interp_w, [], listcomp=True, backendopt=True, listops=True) == 1 + self.run(code, 1) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit