[pypy-svn] r67958 - pypy/trunk/pypy/jit/backend/x86/test
fijal at codespeak.net
fijal at codespeak.net
Tue Sep 29 09:21:06 CEST 2009
Author: fijal
Date: Tue Sep 29 09:21:05 2009
New Revision: 67958
Modified:
pypy/trunk/pypy/jit/backend/x86/test/test_gc_integration.py
pypy/trunk/pypy/jit/backend/x86/test/test_regalloc.py
Log:
Refactor test a bit and also underlaying mockery
Modified: pypy/trunk/pypy/jit/backend/x86/test/test_gc_integration.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/x86/test/test_gc_integration.py (original)
+++ pypy/trunk/pypy/jit/backend/x86/test/test_gc_integration.py Tue Sep 29 09:21:05 2009
@@ -17,7 +17,8 @@
from pypy.jit.backend.llsupport.gc import GcLLDescr_framework, GcRefList, GcPtrFieldDescr
from pypy.jit.backend.x86.test.test_regalloc import MockAssembler
-from pypy.jit.backend.x86.test.test_regalloc import fill_regs, BaseTestRegalloc
+from pypy.jit.backend.x86.test.test_regalloc import BaseTestRegalloc
+from pypy.jit.backend.x86.regalloc import X86RegisterManager, X86StackManager
class MockGcRootMap(object):
def get_basic_shape(self):
@@ -56,17 +57,24 @@
def test_mark_gc_roots(self):
cpu = CPU(None, None)
regalloc = RegAlloc(MockAssembler(cpu, MockGcDescr(False)))
+ boxes = [BoxPtr() for i in range(len(X86RegisterManager.all_regs))]
+ longevity = {}
+ for box in boxes:
+ longevity[box] = (0, 1)
+ regalloc.sm = X86StackManager()
+ regalloc.rm = X86RegisterManager(longevity, regalloc.sm,
+ assembler=regalloc.assembler)
cpu = regalloc.assembler.cpu
- boxes = fill_regs(regalloc, cls=BoxPtr)
+ for box in boxes:
+ regalloc.rm.try_allocate_reg(box)
TP = lltype.FuncType([], lltype.Signed)
calldescr = cpu.calldescrof(TP, TP.ARGS, TP.RESULT)
- regalloc._check_invariants()
- regalloc.longevity = dict.fromkeys(boxes, (0, 1))
+ regalloc.rm._check_invariants()
box = boxes[0]
regalloc.position = 0
regalloc.consider_call(ResOperation(rop.CALL, [box], BoxInt(),
calldescr), None)
- assert len(regalloc.assembler.stores) == 3
+ assert len(regalloc.assembler.movs) == 3
#
mark = regalloc.get_mark_gc_roots(cpu.gc_ll_descr.gcrootmap)
assert mark[0] == 'compressed'
Modified: pypy/trunk/pypy/jit/backend/x86/test/test_regalloc.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/x86/test/test_regalloc.py (original)
+++ pypy/trunk/pypy/jit/backend/x86/test/test_regalloc.py Tue Sep 29 09:21:05 2009
@@ -29,8 +29,7 @@
gcrefs = None
def __init__(self, cpu=None, gc_ll_descr=None):
- self.loads = []
- self.stores = []
+ self.movs = []
self.performs = []
self.lea = []
self.cpu = cpu or CPU(None, None)
@@ -41,11 +40,8 @@
def dump(self, *args):
pass
- def regalloc_load(self, from_loc, to_loc):
- self.loads.append((from_loc, to_loc))
-
- def regalloc_store(self, from_loc, to_loc):
- self.stores.append((from_loc, to_loc))
+ def regalloc_mov(self, from_loc, to_loc):
+ self.movs.append((from_loc, to_loc))
def regalloc_perform(self, op, arglocs, resloc):
self.performs.append((op, arglocs, resloc))
@@ -61,8 +57,7 @@
for reg in X86RegisterManager.all_regs:
box = cls()
allboxes.append(box)
- regalloc.reg_bindings[box] = reg
- regalloc.free_regs = []
+ regalloc.rm.try_allocate_reg()
return allboxes
class RegAllocForTests(RegAlloc):
More information about the Pypy-commit
mailing list