[pypy-commit] pypy default: a decorator for inlining functions on the rpython level
cfbolz
noreply at buildbot.pypy.org
Wed Nov 5 10:02:26 CET 2014
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch:
Changeset: r74340:a772923edb32
Date: 2014-11-05 10:01 +0100
http://bitbucket.org/pypy/pypy/changeset/a772923edb32/
Log: a decorator for inlining functions on the rpython level
diff --git a/rpython/rlib/objectmodel.py b/rpython/rlib/objectmodel.py
--- a/rpython/rlib/objectmodel.py
+++ b/rpython/rlib/objectmodel.py
@@ -201,6 +201,11 @@
return result
return decorator
+def always_inline(func):
+ """ mark the function as to-be-inlined by the RPython optimizations (not
+ the JIT!), no matter its size."""
+ func._always_inline_ = True
+ return func
# ____________________________________________________________
diff --git a/rpython/rlib/test/test_objectmodel.py b/rpython/rlib/test/test_objectmodel.py
--- a/rpython/rlib/test/test_objectmodel.py
+++ b/rpython/rlib/test/test_objectmodel.py
@@ -438,6 +438,11 @@
assert exc.value.message == "f argument 'b' must be of type <type 'str'>"
py.test.raises(TypeError, "f('hello', 'world', 3)")
+def test_always_inline():
+ @always_inline
+ def f(a, b, c):
+ return a, b, c
+ assert f._always_inline_ == True
def test_enforceargs_defaults():
@enforceargs(int, int)
More information about the pypy-commit
mailing list