[pypy-svn] r75318 - in pypy/branch/multijit-4/pypy/jit/backend: test x86
arigo at codespeak.net
arigo at codespeak.net
Sat Jun 12 12:01:44 CEST 2010
Author: arigo
Date: Sat Jun 12 12:01:42 2010
New Revision: 75318
Modified:
pypy/branch/multijit-4/pypy/jit/backend/test/runner_test.py
pypy/branch/multijit-4/pypy/jit/backend/x86/assembler.py
pypy/branch/multijit-4/pypy/jit/backend/x86/regalloc.py
Log:
Fix the x86 backend.
Modified: pypy/branch/multijit-4/pypy/jit/backend/test/runner_test.py
==============================================================================
--- pypy/branch/multijit-4/pypy/jit/backend/test/runner_test.py (original)
+++ pypy/branch/multijit-4/pypy/jit/backend/test/runner_test.py Sat Jun 12 12:01:42 2010
@@ -1703,7 +1703,6 @@
lltype.Signed))
class FakeJitDriverSD:
index_of_virtualizable = -1
- vable_token_descr = None
_assembler_helper_ptr = llhelper(FUNCPTR, assembler_helper)
assembler_helper_adr = llmemory.cast_ptr_to_adr(
_assembler_helper_ptr)
@@ -1751,7 +1750,6 @@
lltype.Float))
class FakeJitDriverSD:
index_of_virtualizable = -1
- vable_token_descr = None
_assembler_helper_ptr = llhelper(FUNCPTR, assembler_helper)
assembler_helper_adr = llmemory.cast_ptr_to_adr(
_assembler_helper_ptr)
Modified: pypy/branch/multijit-4/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/multijit-4/pypy/jit/backend/x86/assembler.py (original)
+++ pypy/branch/multijit-4/pypy/jit/backend/x86/assembler.py Sat Jun 12 12:01:42 2010
@@ -109,7 +109,6 @@
self.malloc_array_func_addr = 0
self.malloc_str_func_addr = 0
self.malloc_unicode_func_addr = 0
- self.assembler_helper_adr = 0
self.fail_boxes_int = values_array(lltype.Signed, failargs_limit)
self.fail_boxes_ptr = values_array(llmemory.GCREF, failargs_limit)
self.fail_boxes_float = values_array(lltype.Float, failargs_limit)
@@ -144,14 +143,6 @@
ll_new_unicode = gc_ll_descr.get_funcptr_for_newunicode()
self.malloc_unicode_func_addr = rffi.cast(lltype.Signed,
ll_new_unicode)
- if we_are_translated():
- self.assembler_helper_adr = self.cpu.cast_ptr_to_int(
- self.cpu.assembler_helper_ptr)
- else:
- if getattr(self.cpu, 'assembler_helper_ptr', None):
- self.assembler_helper_adr = self.cpu.cast_ptr_to_int(
- self.cpu.assembler_helper_ptr)
-
# done
# we generate the loop body in 'mc'
# 'mc2' is for guard recovery code
@@ -1389,7 +1380,10 @@
je_location = mc.get_relative_pos()
#
# Path A: use assembler_helper_adr
- self._emit_call(rel32(self.assembler_helper_adr), [eax, arglocs[1]], 0,
+ jd = descr.outermost_jitdriver_sd
+ assert jd is not None
+ asm_helper_adr = self.cpu.cast_adr_to_int(jd.assembler_helper_adr)
+ self._emit_call(rel32(asm_helper_adr), [eax, arglocs[1]], 0,
tmp=ecx, force_mc=True, mc=mc)
if isinstance(result_loc, MODRM64):
mc.FSTP(result_loc)
@@ -1403,9 +1397,9 @@
mc.overwrite(je_location - 1, [chr(offset)])
#
# Reset the vable token --- XXX really too much special logic here:-(
- if self.cpu.index_of_virtualizable >= 0:
+ if jd.index_of_virtualizable >= 0:
from pypy.jit.backend.llsupport.descr import BaseFieldDescr
- fielddescr = self.cpu.vable_token_descr
+ fielddescr = jd.vable_token_descr
assert isinstance(fielddescr, BaseFieldDescr)
ofs = fielddescr.offset
mc.MOV(eax, arglocs[1])
Modified: pypy/branch/multijit-4/pypy/jit/backend/x86/regalloc.py
==============================================================================
--- pypy/branch/multijit-4/pypy/jit/backend/x86/regalloc.py (original)
+++ pypy/branch/multijit-4/pypy/jit/backend/x86/regalloc.py Sat Jun 12 12:01:42 2010
@@ -636,10 +636,14 @@
self._consider_call(op, guard_op)
def consider_call_assembler(self, op, guard_op):
- descr = op.descr
portal_calldescr = self.assembler.cpu.portal_calldescr
size = portal_calldescr.get_result_size(self.translate_support_code)
- vable_index = self.assembler.cpu.index_of_virtualizable
+ #
+ descr = op.descr
+ assert isinstance(descr, LoopToken)
+ jd = descr.outermost_jitdriver_sd
+ assert jd is not None
+ vable_index = jd.index_of_virtualizable
if vable_index >= 0:
self.rm._sync_var(op.args[vable_index])
vable = self.fm.loc(op.args[vable_index], 1)
More information about the Pypy-commit
mailing list