Author: Maciej Fijalkowski <[email protected]>
Branch: arm64
Changeset: r96841:31ae58bae243
Date: 2019-06-22 12:15 +0000
http://bitbucket.org/pypy/pypy/changeset/31ae58bae243/
Log: guard_not_forced_2
diff --git a/rpython/jit/backend/aarch64/opassembler.py
b/rpython/jit/backend/aarch64/opassembler.py
--- a/rpython/jit/backend/aarch64/opassembler.py
+++ b/rpython/jit/backend/aarch64/opassembler.py
@@ -1,5 +1,6 @@
from rpython.rlib.objectmodel import we_are_translated
+from rpython.rlib.rarithmetic import r_uint
from rpython.rtyper.lltypesystem import rffi, lltype
from rpython.jit.metainterp.history import (AbstractFailDescr, ConstInt,
INT, FLOAT, REF)
@@ -823,12 +824,22 @@
self.load_from_gc_table(r.ip0.value, faildescrindex)
self.store_reg(self.mc, r.ip0, r.fp, ofs)
- def emit_op_label(self, op, arglocs):
- pass
+ def emit_op_guard_not_forced_2(self, op, arglocs):
+ self.store_force_descr(op, arglocs[1:], arglocs[0].value)
+
+ def store_force_descr(self, op, fail_locs, frame_depth):
+ pos = self.mc.currpos()
+ guard_token = self.build_guard_token(op, frame_depth, fail_locs, pos,
c.AL)
+ self._finish_gcmap = guard_token.gcmap
+ self._store_force_index(op)
+ self.store_info_on_descr(pos, guard_token)
def emit_op_force_token(self, op, arglocs):
self.mc.MOV_rr(arglocs[0].value, r.fp.value)
+ def emit_op_label(self, op, arglocs):
+ pass
+
def emit_op_jump(self, op, arglocs):
target_token = op.getdescr()
assert isinstance(target_token, TargetToken)
diff --git a/rpython/jit/backend/aarch64/regalloc.py
b/rpython/jit/backend/aarch64/regalloc.py
--- a/rpython/jit/backend/aarch64/regalloc.py
+++ b/rpython/jit/backend/aarch64/regalloc.py
@@ -639,6 +639,12 @@
guard_locs = self._guard_impl(op)
return arglocs + guard_locs, len(arglocs)
+ def prepare_op_guard_not_forced_2(self, op):
+ self.rm.before_call(op.getfailargs(), save_all_regs=True)
+ self.vfprm.before_call(op.getfailargs(), save_all_regs=True)
+ fail_locs = self._guard_impl(op)
+ return fail_locs
+
def prepare_op_label(self, op):
descr = op.getdescr()
assert isinstance(descr, TargetToken)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit