Author: Armin Rigo <[email protected]>
Branch: jit-targets
Changeset: r48992:5477569cf46c
Date: 2011-11-09 13:43 +0100
http://bitbucket.org/pypy/pypy/changeset/5477569cf46c/
Log: Fix.
diff --git a/pypy/jit/backend/x86/assembler.py
b/pypy/jit/backend/x86/assembler.py
--- a/pypy/jit/backend/x86/assembler.py
+++ b/pypy/jit/backend/x86/assembler.py
@@ -2,8 +2,8 @@
from pypy.jit.backend.llsupport import symbolic
from pypy.jit.backend.llsupport.asmmemmgr import MachineDataBlockWrapper
from pypy.jit.metainterp.history import Const, Box, BoxInt, ConstInt
-from pypy.jit.metainterp.history import (AbstractFailDescr, INT, REF, FLOAT,
- LoopToken)
+from pypy.jit.metainterp.history import AbstractFailDescr, INT, REF, FLOAT
+from pypy.jit.metainterp.history import JitCellToken
from pypy.rpython.lltypesystem import lltype, rffi, rstr, llmemory
from pypy.rpython.lltypesystem.lloperation import llop
from pypy.rpython.annlowlevel import llhelper
@@ -424,8 +424,6 @@
_x86_loop_code (an integer giving an address)
_x86_bootstrap_code (an integer giving an address)
_x86_direct_bootstrap_code ( " " " " )
- _x86_frame_depth
- _x86_param_depth
_x86_arglocs
_x86_debug_checksum
'''
@@ -455,12 +453,11 @@
stackadjustpos = self._assemble_bootstrap_code(inputargs, arglocs)
looppos = self.mc.get_relative_pos()
looptoken._x86_loop_code = looppos
- self.target_tokens_currently_compiling[looptoken] = None
- looptoken._x86_frame_depth = -1 # temporarily
- looptoken._x86_param_depth = -1 # temporarily
+ clt.frame_depth = -1 # temporarily
+ clt.param_depth = -1 # temporarily
frame_depth, param_depth = self._assemble(regalloc, operations)
- looptoken._x86_frame_depth = frame_depth
- looptoken._x86_param_depth = param_depth
+ clt.frame_depth = frame_depth
+ clt.param_depth = param_depth
directbootstrappos = self.mc.get_relative_pos()
self._assemble_bootstrap_direct_call(arglocs, looppos,
@@ -670,8 +667,8 @@
faildescr._x86_adr_jump_offset = 0 # means "patched"
def fixup_target_tokens(self, rawstart):
- for looptoken in self.target_tokens_currently_compiling:
- looptoken._x86_loop_code += rawstart
+ for targettoken in self.target_tokens_currently_compiling:
+ targettoken._x86_loop_code += rawstart
self.target_tokens_currently_compiling = None
@specialize.argtype(1)
@@ -703,8 +700,8 @@
param_depth = regalloc.param_depth
jump_target_descr = regalloc.jump_target_descr
if jump_target_descr is not None:
- target_frame_depth = jump_target_descr._x86_frame_depth
- target_param_depth = jump_target_descr._x86_param_depth
+ target_frame_depth = jump_target_descr._x86_clt.frame_depth
+ target_param_depth = jump_target_descr._x86_clt.param_depth
frame_depth = max(frame_depth, target_frame_depth)
param_depth = max(param_depth, target_param_depth)
return frame_depth, param_depth
@@ -2344,7 +2341,7 @@
fail_index = self.cpu.get_fail_descr_number(faildescr)
self.mc.MOV_bi(FORCE_INDEX_OFS, fail_index)
descr = op.getdescr()
- assert isinstance(descr, LoopToken)
+ assert isinstance(descr, JitCellToken)
assert len(arglocs) - 2 == len(descr._x86_arglocs[0])
#
# Write a call to the direct_bootstrap_code of the target assembler
@@ -2578,12 +2575,9 @@
gcrootmap.put(self.gcrootmap_retaddr_forced, mark)
self.gcrootmap_retaddr_forced = -1
- def target_arglocs(self, loop_token):
- return loop_token._x86_arglocs
-
- def closing_jump(self, loop_token):
- target = loop_token._x86_loop_code
- if loop_token in self.target_tokens_currently_compiling:
+ def closing_jump(self, target_token):
+ target = target_token._x86_loop_code
+ if target_token in self.target_tokens_currently_compiling:
curpos = self.mc.get_relative_pos() + 5
self.mc.JMP_l(target - curpos)
else:
diff --git a/pypy/jit/backend/x86/regalloc.py b/pypy/jit/backend/x86/regalloc.py
--- a/pypy/jit/backend/x86/regalloc.py
+++ b/pypy/jit/backend/x86/regalloc.py
@@ -5,8 +5,8 @@
import os
from pypy.jit.metainterp.history import (Box, Const, ConstInt, ConstPtr,
ResOperation, BoxPtr, ConstFloat,
- BoxFloat, LoopToken, INT, REF, FLOAT,
- TargetToken)
+ BoxFloat, INT, REF, FLOAT,
+ TargetToken, JitCellToken)
from pypy.jit.backend.x86.regloc import *
from pypy.rpython.lltypesystem import lltype, rffi, rstr
from pypy.rlib.objectmodel import we_are_translated
@@ -884,7 +884,7 @@
def consider_call_assembler(self, op, guard_op):
descr = op.getdescr()
- assert isinstance(descr, LoopToken)
+ assert isinstance(descr, JitCellToken)
jd = descr.outermost_jitdriver_sd
assert jd is not None
size = jd.portal_calldescr.get_result_size(self.translate_support_code)
@@ -1314,8 +1314,8 @@
assembler = self.assembler
assert self.jump_target_descr is None
descr = op.getdescr()
- assert isinstance(descr, (LoopToken, TargetToken)) # XXX refactor!
- nonfloatlocs, floatlocs = assembler.target_arglocs(descr)
+ assert isinstance(descr, TargetToken)
+ nonfloatlocs, floatlocs = descr._x86_arglocs
self.jump_target_descr = descr
# compute 'tmploc' to be all_regs[0] by spilling what is there
box = TempBox()
@@ -1406,8 +1406,7 @@
nonfloatlocs[i] = loc
descr._x86_arglocs = nonfloatlocs, floatlocs
descr._x86_loop_code = self.assembler.mc.get_relative_pos()
- descr._x86_frame_depth = self.fm.frame_depth
- descr._x86_param_depth = self.param_depth
+ descr._x86_clt = self.assembler.current_clt
self.assembler.target_tokens_currently_compiling[descr] = None
def not_implemented_op(self, op):
diff --git a/pypy/jit/backend/x86/runner.py b/pypy/jit/backend/x86/runner.py
--- a/pypy/jit/backend/x86/runner.py
+++ b/pypy/jit/backend/x86/runner.py
@@ -215,14 +215,3 @@
super(CPU_X86_64, self).__init__(*args, **kwargs)
CPU = CPU386
-
-# silence warnings
-##history.LoopToken._x86_param_depth = 0
-##history.LoopToken._x86_arglocs = (None, None)
-##history.LoopToken._x86_frame_depth = 0
-##history.LoopToken._x86_bootstrap_code = 0
-##history.LoopToken._x86_direct_bootstrap_code = 0
-##history.LoopToken._x86_loop_code = 0
-##history.LoopToken._x86_debug_checksum = 0
-##compile.AbstractFailDescr._x86_current_depths = (0, 0)
-##compile.AbstractFailDescr._x86_adr_jump_offset = 0
diff --git a/pypy/jit/backend/x86/test/test_runner.py
b/pypy/jit/backend/x86/test/test_runner.py
--- a/pypy/jit/backend/x86/test/test_runner.py
+++ b/pypy/jit/backend/x86/test/test_runner.py
@@ -1,7 +1,7 @@
import py
from pypy.rpython.lltypesystem import lltype, llmemory, rffi, rstr, rclass
from pypy.rpython.annlowlevel import llhelper
-from pypy.jit.metainterp.history import ResOperation, LoopToken
+from pypy.jit.metainterp.history import ResOperation, JitCellToken
from pypy.jit.metainterp.history import (BoxInt, BoxPtr, ConstInt, ConstFloat,
ConstPtr, Box, BoxFloat,
BasicFailDescr)
from pypy.jit.backend.detect_cpu import getcpuclass
@@ -279,7 +279,7 @@
descr=BasicFailDescr()),
]
ops[-2].setfailargs([i1])
- looptoken = LoopToken()
+ looptoken = JitCellToken()
self.cpu.compile_loop([b], ops, looptoken)
if op == rop.INT_IS_TRUE:
self.cpu.set_future_value_int(0, b.value)
@@ -329,7 +329,7 @@
]
ops[-2].setfailargs([i1])
inputargs = [i for i in (a, b) if isinstance(i, Box)]
- looptoken = LoopToken()
+ looptoken = JitCellToken()
self.cpu.compile_loop(inputargs, ops, looptoken)
for i, box in enumerate(inputargs):
self.cpu.set_future_value_int(i, box.value)
@@ -353,9 +353,10 @@
i0 = BoxInt()
i1 = BoxInt()
i2 = BoxInt()
+ targettoken = TargetToken()
faildescr1 = BasicFailDescr(1)
faildescr2 = BasicFailDescr(2)
- looptoken = LoopToken()
+ looptoken = JitCellToken()
looptoken.number = 17
class FakeString(object):
def __init__(self, val):
@@ -365,14 +366,15 @@
return self.val
operations = [
+ ResOperation(rop.LABEL, [i0], None, descr=targettoken),
ResOperation(rop.DEBUG_MERGE_POINT, [FakeString("hello"), 0],
None),
ResOperation(rop.INT_ADD, [i0, ConstInt(1)], i1),
ResOperation(rop.INT_LE, [i1, ConstInt(9)], i2),
ResOperation(rop.GUARD_TRUE, [i2], None, descr=faildescr1),
- ResOperation(rop.JUMP, [i1], None, descr=looptoken),
+ ResOperation(rop.JUMP, [i1], None, descr=targettoken),
]
inputargs = [i0]
- operations[3].setfailargs([i1])
+ operations[-2].setfailargs([i1])
self.cpu.compile_loop(inputargs, operations, looptoken)
name, loopaddress, loopsize = agent.functions[0]
assert name == "Loop # 17: hello (loop counter 0)"
@@ -385,7 +387,7 @@
ResOperation(rop.INT_LE, [i1b, ConstInt(19)], i3),
ResOperation(rop.GUARD_TRUE, [i3], None, descr=faildescr2),
ResOperation(rop.DEBUG_MERGE_POINT, [FakeString("bye"), 0], None),
- ResOperation(rop.JUMP, [i1b], None, descr=looptoken),
+ ResOperation(rop.JUMP, [i1b], None, descr=targettoken),
]
bridge[1].setfailargs([i1b])
@@ -408,11 +410,13 @@
i0 = BoxInt()
i1 = BoxInt()
i2 = BoxInt()
- looptoken = LoopToken()
+ looptoken = JitCellToken()
+ targettoken = TargetToken()
operations = [
+ ResOperation(rop.LABEL, [i0], None, descr=targettoken),
ResOperation(rop.INT_ADD, [i0, ConstInt(1)], i1),
ResOperation(rop.INT_LE, [i1, ConstInt(9)], i2),
- ResOperation(rop.JUMP, [i1], None, descr=looptoken),
+ ResOperation(rop.JUMP, [i1], None, descr=targettoken),
]
inputargs = [i0]
debug._log = dlog = debug.DebugLog()
@@ -496,7 +500,7 @@
ops[3].setfailargs([])
ops[5].setfailargs([])
ops[7].setfailargs([])
- looptoken = LoopToken()
+ looptoken = JitCellToken()
self.cpu.compile_loop([i1, i2], ops, looptoken)
self.cpu.set_future_value_int(0, 123450)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit