[pypy-commit] pypy gc-incminimark-pinning: introduce pin()/unpin() to the JIT
groggi
noreply at buildbot.pypy.org
Wed Jun 25 18:32:03 CEST 2014
Author: Gregor Wegberg <code at gregorwegberg.com>
Branch: gc-incminimark-pinning
Changeset: r72219:cfd8cfed9b5c
Date: 2014-06-24 17:01 +0200
http://bitbucket.org/pypy/pypy/changeset/cfd8cfed9b5c/
Log: introduce pin()/unpin() to the JIT
diff --git a/rpython/jit/codewriter/jtransform.py b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -493,30 +493,32 @@
# XXX some of the following functions should not become residual calls
# but be really compiled
- rewrite_op_int_floordiv_ovf_zer = _do_builtin_call
- rewrite_op_int_floordiv_ovf = _do_builtin_call
- rewrite_op_int_floordiv_zer = _do_builtin_call
- rewrite_op_int_mod_ovf_zer = _do_builtin_call
- rewrite_op_int_mod_ovf = _do_builtin_call
- rewrite_op_int_mod_zer = _do_builtin_call
- rewrite_op_int_lshift_ovf = _do_builtin_call
- rewrite_op_int_abs = _do_builtin_call
- rewrite_op_llong_abs = _do_builtin_call
- rewrite_op_llong_floordiv = _do_builtin_call
- rewrite_op_llong_floordiv_zer = _do_builtin_call
- rewrite_op_llong_mod = _do_builtin_call
- rewrite_op_llong_mod_zer = _do_builtin_call
- rewrite_op_ullong_floordiv = _do_builtin_call
- rewrite_op_ullong_floordiv_zer = _do_builtin_call
- rewrite_op_ullong_mod = _do_builtin_call
- rewrite_op_ullong_mod_zer = _do_builtin_call
- rewrite_op_gc_identityhash = _do_builtin_call
- rewrite_op_gc_id = _do_builtin_call
- rewrite_op_uint_mod = _do_builtin_call
- rewrite_op_cast_float_to_uint = _do_builtin_call
- rewrite_op_cast_uint_to_float = _do_builtin_call
- rewrite_op_weakref_create = _do_builtin_call
- rewrite_op_weakref_deref = _do_builtin_call
+ rewrite_op_int_floordiv_ovf_zer = _do_builtin_call
+ rewrite_op_int_floordiv_ovf = _do_builtin_call
+ rewrite_op_int_floordiv_zer = _do_builtin_call
+ rewrite_op_int_mod_ovf_zer = _do_builtin_call
+ rewrite_op_int_mod_ovf = _do_builtin_call
+ rewrite_op_int_mod_zer = _do_builtin_call
+ rewrite_op_int_lshift_ovf = _do_builtin_call
+ rewrite_op_int_abs = _do_builtin_call
+ rewrite_op_llong_abs = _do_builtin_call
+ rewrite_op_llong_floordiv = _do_builtin_call
+ rewrite_op_llong_floordiv_zer = _do_builtin_call
+ rewrite_op_llong_mod = _do_builtin_call
+ rewrite_op_llong_mod_zer = _do_builtin_call
+ rewrite_op_ullong_floordiv = _do_builtin_call
+ rewrite_op_ullong_floordiv_zer = _do_builtin_call
+ rewrite_op_ullong_mod = _do_builtin_call
+ rewrite_op_ullong_mod_zer = _do_builtin_call
+ rewrite_op_gc_identityhash = _do_builtin_call
+ rewrite_op_gc_id = _do_builtin_call
+ rewrite_op_gc_pin = _do_builtin_call
+ rewrite_op_gc_unpin = _do_builtin_call
+ rewrite_op_uint_mod = _do_builtin_call
+ rewrite_op_cast_float_to_uint = _do_builtin_call
+ rewrite_op_cast_uint_to_float = _do_builtin_call
+ rewrite_op_weakref_create = _do_builtin_call
+ rewrite_op_weakref_deref = _do_builtin_call
rewrite_op_gc_add_memory_pressure = _do_builtin_call
# ----------
diff --git a/rpython/jit/codewriter/support.py b/rpython/jit/codewriter/support.py
--- a/rpython/jit/codewriter/support.py
+++ b/rpython/jit/codewriter/support.py
@@ -229,6 +229,13 @@
return llop.gc_id(lltype.Signed, ptr)
+def _ll_1_gc_pin(ptr):
+ return llop.gc_pin(lltype.Bool, ptr)
+
+def _ll_1_gc_unpin(ptr):
+ llop.gc_unpin(lltype.Void, ptr)
+
+
@oopspec("jit.force_virtual(inst)")
def _ll_1_jit_force_virtual(inst):
return llop.jit_force_virtual(lltype.typeOf(inst), inst)
More information about the pypy-commit
mailing list