[pypy-svn] r73789 - in pypy/trunk/pypy/jit/tl: . test
fijal at codespeak.net
fijal at codespeak.net
Thu Apr 15 21:51:27 CEST 2010
Author: fijal
Date: Thu Apr 15 21:51:25 2010
New Revision: 73789
Modified:
pypy/trunk/pypy/jit/tl/test/test_tinyframe.py
pypy/trunk/pypy/jit/tl/tinyframe.py
Log:
Function combination
Modified: pypy/trunk/pypy/jit/tl/test/test_tinyframe.py
==============================================================================
--- pypy/trunk/pypy/jit/tl/test/test_tinyframe.py (original)
+++ pypy/trunk/pypy/jit/tl/test/test_tinyframe.py Thu Apr 15 21:51:25 2010
@@ -57,3 +57,24 @@
''')
ret = interpret(code)
assert ret.val == 1 + 1
+
+ def test_function_combination(self):
+ code = compile('''
+ inner:
+ LOAD 2 => r1
+ ADD r1 r0 => r0
+ RETURN r0
+ outer:
+ LOAD 1 => r1
+ ADD r1 r0 => r2
+ RETURN r2
+ main:
+ LOAD_FUNCTION inner => r0
+ LOAD_FUNCTION outer => r1
+ ADD r1 r0 => r2
+ LOAD 1 => r3
+ CALL r2 r3 => r4
+ RETURN r4
+ ''')
+ ret = interpret(code)
+ assert ret.val == 1 + 1 + 2
Modified: pypy/trunk/pypy/jit/tl/tinyframe.py
==============================================================================
--- pypy/trunk/pypy/jit/tl/tinyframe.py (original)
+++ pypy/trunk/pypy/jit/tl/tinyframe.py Thu Apr 15 21:51:25 2010
@@ -156,6 +156,17 @@
f.registers[0] = arg
return f.interpret()
+ def add(self, other):
+ return CombinedFunc(self, other)
+
+class CombinedFunc(Func):
+ def __init__(self, outer, inner):
+ self.outer = outer
+ self.inner = inner
+
+ def call(self, arg):
+ return self.outer.call(self.inner.call(arg))
+
class Frame(object):
def __init__(self, code):
self.code = code
More information about the Pypy-commit
mailing list