Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r70109:1f090ff1b51f
Date: 2014-03-20 11:16 +0100
http://bitbucket.org/pypy/pypy/changeset/1f090ff1b51f/
Log: stm_ptr_eq dies
diff --git a/rpython/jit/backend/llsupport/gc.py
b/rpython/jit/backend/llsupport/gc.py
--- a/rpython/jit/backend/llsupport/gc.py
+++ b/rpython/jit/backend/llsupport/gc.py
@@ -706,21 +706,9 @@
if self.stm:
# XXX remove the indirections in the following calls
from rpython.rlib import rstm
- def stm_allocate_nonmovable_int_adr(obj):
- return llop1.stm_allocate_nonmovable_int_adr(
- lltype.Signed, obj)
- self.generate_function('stm_allocate_nonmovable_int_adr',
- stm_allocate_nonmovable_int_adr,
- [llmemory.GCREF], RESULT=lltype.Signed)
self.generate_function('stm_try_inevitable',
rstm.become_inevitable, [],
RESULT=lltype.Void)
- def ptr_eq(x, y): return x == y
- def ptr_ne(x, y): return x != y
- self.generate_function('stm_ptr_eq', ptr_eq, [llmemory.GCREF] * 2,
- RESULT=lltype.Bool)
- self.generate_function('stm_ptr_ne', ptr_ne, [llmemory.GCREF] * 2,
- RESULT=lltype.Bool)
def _bh_malloc(self, sizedescr):
from rpython.memory.gctypelayout import check_typeid
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -1253,58 +1253,6 @@
self.mc.LEA_rm(result_loc.value, (loc.value, delta))
return genop_binary_or_lea
-
- def genop_ptr_eq(self, op, arglocs, result_loc):
- if not self.cpu.gc_ll_descr.stm:
- self.genop_int_eq(op, arglocs, result_loc)
- return
- assert self.cpu.gc_ll_descr.stm
- rl = result_loc.lowest8bits()
- self._stm_ptr_eq_fastpath(self.mc, arglocs, result_loc)
- self.mc.SET_ir(rx86.Conditions['NZ'], rl.value)
- self.mc.MOVZX8_rr(result_loc.value, rl.value)
-
- def genop_ptr_ne(self, op, arglocs, result_loc):
- if not self.cpu.gc_ll_descr.stm:
- self.genop_int_ne(op, arglocs, result_loc)
- return
- assert self.cpu.gc_ll_descr.stm
- rl = result_loc.lowest8bits()
- self._stm_ptr_eq_fastpath(self.mc, arglocs, result_loc)
- self.mc.SET_ir(rx86.Conditions['Z'], rl.value)
- self.mc.MOVZX8_rr(result_loc.value, rl.value)
-
- def genop_guard_ptr_eq(self, op, guard_op, guard_token,
- arglocs, result_loc):
- if not self.cpu.gc_ll_descr.stm:
- self.genop_guard_int_eq(op, guard_op, guard_token,
- arglocs, result_loc)
- return
- assert self.cpu.gc_ll_descr.stm
- guard_opnum = guard_op.getopnum()
- self._stm_ptr_eq_fastpath(self.mc, arglocs, result_loc)
- # p1==p2 -> NZ
- if guard_opnum == rop.GUARD_FALSE:
- # jump to failure-code if ptrs are equal
- self.implement_guard(guard_token, "NZ")
- else:
- # jump to failure-code if ptrs are not equal
- self.implement_guard(guard_token, "Z")
-
- def genop_guard_ptr_ne(self, op, guard_op, guard_token,
- arglocs, result_loc):
- if not self.cpu.gc_ll_descr.stm:
- self.genop_guard_int_ne(op, guard_op, guard_token,
- arglocs, result_loc)
- return
- assert self.cpu.gc_ll_descr.stm
- guard_opnum = guard_op.getopnum()
- self._stm_ptr_eq_fastpath(self.mc, arglocs, result_loc)
- if guard_opnum == rop.GUARD_FALSE:
- self.implement_guard(guard_token, "Z")
- else:
- self.implement_guard(guard_token, "NZ")
-
def _cmpop(cond, rev_cond):
def genop_cmp(self, op, arglocs, result_loc):
rl = result_loc.lowest8bits()
@@ -1453,8 +1401,8 @@
genop_int_ne = _cmpop("NE", "NE")
genop_int_gt = _cmpop("G", "L")
genop_int_ge = _cmpop("GE", "LE")
- genop_instance_ptr_eq = genop_ptr_eq
- genop_instance_ptr_ne = genop_ptr_ne
+ genop_ptr_eq = genop_instance_ptr_eq = genop_int_eq
+ genop_ptr_ne = genop_instance_ptr_ne = genop_int_ne
genop_float_lt = _cmpop_float('B', 'A')
genop_float_le = _cmpop_float('BE', 'AE')
@@ -1474,8 +1422,8 @@
genop_guard_int_ne = _cmpop_guard("NE", "NE", "E", "E")
genop_guard_int_gt = _cmpop_guard("G", "L", "LE", "GE")
genop_guard_int_ge = _cmpop_guard("GE", "LE", "L", "G")
- genop_guard_instance_ptr_eq = genop_guard_ptr_eq
- genop_guard_instance_ptr_ne = genop_guard_ptr_ne
+ genop_guard_ptr_eq = genop_guard_instance_ptr_eq = genop_guard_int_eq
+ genop_guard_ptr_ne = genop_guard_instance_ptr_ne = genop_guard_int_ne
genop_guard_uint_gt = _cmpop_guard("A", "B", "BE", "AE")
genop_guard_uint_lt = _cmpop_guard("B", "A", "AE", "BE")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit