Author: Armin Rigo <[email protected]>
Branch: stm
Changeset: r48700:e6d9748a9589
Date: 2011-11-03 15:11 +0100
http://bitbucket.org/pypy/pypy/changeset/e6d9748a9589/
Log: A few extra operations that are always allowed.
diff --git a/pypy/rpython/lltypesystem/lloperation.py
b/pypy/rpython/lltypesystem/lloperation.py
--- a/pypy/rpython/lltypesystem/lloperation.py
+++ b/pypy/rpython/lltypesystem/lloperation.py
@@ -147,6 +147,12 @@
assert not opdesc.canraise
yield opname
+def enum_tryfold_ops():
+ """Enumerate operations that can be constant-folded."""
+ for opname, opdesc in LL_OPERATIONS.iteritems():
+ if opdesc.tryfold:
+ yield opname
+
class Entry(ExtRegistryEntry):
"Annotation and rtyping of LLOp instances, which are callable."
diff --git a/pypy/translator/stm/transform.py b/pypy/translator/stm/transform.py
--- a/pypy/translator/stm/transform.py
+++ b/pypy/translator/stm/transform.py
@@ -7,10 +7,10 @@
ALWAYS_ALLOW_OPERATIONS = set([
- 'direct_call', 'force_cast',
+ 'direct_call', 'force_cast', 'keepalive', 'cast_ptr_to_adr',
'debug_print', 'debug_assert',
])
-ALWAYS_ALLOW_OPERATIONS |= set(lloperation.enum_foldable_ops())
+ALWAYS_ALLOW_OPERATIONS |= set(lloperation.enum_tryfold_ops())
def op_in_set(opname, set):
return opname in set
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit