Author: Maciej Fijalkowski <[email protected]>
Branch: kill-gen-store-back-in
Changeset: r64508:bfc2ad83198e
Date: 2013-05-23 13:16 +0200
http://bitbucket.org/pypy/pypy/changeset/bfc2ad83198e/
Log: reseting token on call_assembler is no longer legal - it can be
whatever really
diff --git a/rpython/jit/backend/arm/opassembler.py
b/rpython/jit/backend/arm/opassembler.py
--- a/rpython/jit/backend/arm/opassembler.py
+++ b/rpython/jit/backend/arm/opassembler.py
@@ -1156,16 +1156,6 @@
pmc.B_offs(self.mc.currpos(), c.EQ)
return pos
- def _call_assembler_reset_vtoken(self, jd, vloc):
- from rpython.jit.backend.llsupport.descr import FieldDescr
- fielddescr = jd.vable_token_descr
- assert isinstance(fielddescr, FieldDescr)
- ofs = fielddescr.offset
- tmploc = self._regalloc.get_scratch_reg(INT)
- self.mov_loc_loc(vloc, r.ip)
- self.mc.MOV_ri(tmploc.value, 0)
- self.mc.STR_ri(tmploc.value, r.ip.value, ofs)
-
def _call_assembler_load_result(self, op, result_loc):
if op.result is not None:
# load the return value from (tmploc, 0)
diff --git a/rpython/jit/backend/llgraph/runner.py
b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -902,7 +902,6 @@
# res = CALL assembler_call_helper(pframe)
# jmp @done
# @fastpath:
- # RESET_VABLE
# res = GETFIELD(pframe, 'result')
# @done:
#
@@ -922,24 +921,6 @@
vable = lltype.nullptr(llmemory.GCREF.TO)
#
# Emulate the fast path
- def reset_vable(jd, vable):
- if jd.index_of_virtualizable != -1:
- fielddescr = jd.vable_token_descr
- NULL = lltype.nullptr(llmemory.GCREF.TO)
- self.cpu.bh_setfield_gc(vable, NULL, fielddescr)
- faildescr = self.cpu.get_latest_descr(pframe)
- if faildescr == self.cpu.done_with_this_frame_descr_int:
- reset_vable(jd, vable)
- return self.cpu.get_int_value(pframe, 0)
- elif faildescr == self.cpu.done_with_this_frame_descr_ref:
- reset_vable(jd, vable)
- return self.cpu.get_ref_value(pframe, 0)
- elif faildescr == self.cpu.done_with_this_frame_descr_float:
- reset_vable(jd, vable)
- return self.cpu.get_float_value(pframe, 0)
- elif faildescr == self.cpu.done_with_this_frame_descr_void:
- reset_vable(jd, vable)
- return None
#
assembler_helper_ptr = jd.assembler_helper_adr.ptr # fish
try:
diff --git a/rpython/jit/backend/llsupport/assembler.py
b/rpython/jit/backend/llsupport/assembler.py
--- a/rpython/jit/backend/llsupport/assembler.py
+++ b/rpython/jit/backend/llsupport/assembler.py
@@ -228,11 +228,8 @@
jmp_location = self._call_assembler_patch_je(result_loc, je_location)
- # Path B: fast path. Must load the return value, and reset the token
+ # Path B: fast path. Must load the return value
- # Reset the vable token --- XXX really too much special logic here:-(
- if jd.index_of_virtualizable >= 0:
- self._call_assembler_reset_vtoken(jd, vloc)
#
self._call_assembler_load_result(op, result_loc)
#
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
@@ -1951,15 +1951,6 @@
#
return jmp_location
- def _call_assembler_reset_vtoken(self, jd, vloc):
- from rpython.jit.backend.llsupport.descr import FieldDescr
- fielddescr = jd.vable_token_descr
- assert isinstance(fielddescr, FieldDescr)
- vtoken_ofs = fielddescr.offset
- self.mc.MOV(edx, vloc) # we know vloc is on the current frame
- self.mc.MOV_mi((edx.value, vtoken_ofs), 0)
- # in the line above, TOKEN_NONE = 0
-
def _call_assembler_load_result(self, op, result_loc):
if op.result is not None:
# load the return value from the dead frame's value index 0
diff --git a/rpython/jit/metainterp/warmspot.py
b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -857,10 +857,6 @@
def assembler_call_helper(deadframe, virtualizableref):
fail_descr = self.cpu.get_latest_descr(deadframe)
- if vinfo is not None:
- virtualizable = lltype.cast_opaque_ptr(
- vinfo.VTYPEPTR, virtualizableref)
- vinfo.reset_vable_token(virtualizable)
try:
fail_descr.handle_fail(deadframe, self.metainterp_sd, jd)
except jitexc.JitException, e:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit