[pypy-svn] r38080 - in pypy/branch/new-jit-codegen: dump test
arigo at codespeak.net
arigo at codespeak.net
Wed Feb 7 17:09:13 CET 2007
Author: arigo
Date: Wed Feb 7 17:09:11 2007
New Revision: 38080
Modified:
pypy/branch/new-jit-codegen/dump/rgenop.py
pypy/branch/new-jit-codegen/test/rgenop_tests.py
Log:
Fixes, and a new test, for places with no initial value.
Modified: pypy/branch/new-jit-codegen/dump/rgenop.py
==============================================================================
--- pypy/branch/new-jit-codegen/dump/rgenop.py (original)
+++ pypy/branch/new-jit-codegen/dump/rgenop.py Wed Feb 7 17:09:11 2007
@@ -295,11 +295,15 @@
def alloc_frame_place(self, kind, gv_initial_value=None):
place = self.llbuilder.alloc_frame_place(kind, gv_initial_value)
+ if gv_initial_value is None:
+ s = 'None'
+ else:
+ s = self.rgenop.vname(gv_initial_value)
self.dump("%s = %s.alloc_frame_place(%s, %s)" % (
place,
self.name,
self.rgenop.kindtokenname(kind),
- gv_initial_value and self.rgenop.vname(gv_initial_value)))
+ s))
return place
def genop_absorb_place(self, kind, place):
Modified: pypy/branch/new-jit-codegen/test/rgenop_tests.py
==============================================================================
--- pypy/branch/new-jit-codegen/test/rgenop_tests.py (original)
+++ pypy/branch/new-jit-codegen/test/rgenop_tests.py Wed Feb 7 17:09:11 2007
@@ -671,10 +671,13 @@
def writer(base, value):
if value > 5:
RGenOp.write_frame_place(lltype.Signed, base,
- self.place, value * 7)
+ self.place1, value * 7)
+ RGenOp.write_frame_place(lltype.Signed, base,
+ self.place2, value * 10)
self.writer = writer
- def get_writer(self, place):
- self.place = place
+ def get_writer(self, place1, place2):
+ self.place1 = place1
+ self.place2 = place2
return llhelper(self.FUNC, self.writer)
def make_write_frame_place(rgenop, get_writer):
@@ -687,11 +690,14 @@
gv_base = builder.genop_get_frame_base()
gv_k = rgenop.genconst(-100)
- place = builder.alloc_frame_place(signed_kind, gv_initial_value=gv_k)
- gv_writer = rgenop.constPrebuiltGlobal(get_writer(place))
+ place1 = builder.alloc_frame_place(signed_kind, gv_initial_value=gv_k)
+ place2 = builder.alloc_frame_place(signed_kind)
+ gv_writer = rgenop.constPrebuiltGlobal(get_writer(place1, place2))
builder.genop_call(writertoken, gv_writer, [gv_base, gv_x])
- gv_y = builder.genop_absorb_place(signed_kind, place)
- builder.finish_and_return(sigtoken, gv_y)
+ gv_y = builder.genop_absorb_place(signed_kind, place1)
+ gv_z = builder.genop_absorb_place(signed_kind, place2)
+ gv_diff = builder.genop2("int_sub", gv_y, gv_z)
+ builder.finish_and_return(sigtoken, gv_diff)
builder.end()
return gv_f
@@ -1307,9 +1313,10 @@
assert res == 60
def test_write_frame_place_direct(self):
- def get_writer(place):
+ def get_writer(place1, place2):
fvw = FramePlaceWriter(self.RGenOp)
- fvw.place = place
+ fvw.place1 = place1
+ fvw.place2 = place2
writer_ptr = self.directtesthelper(fvw.FUNC, fvw.writer)
return writer_ptr
@@ -1317,16 +1324,16 @@
gv_callable = make_write_frame_place(rgenop, get_writer)
fnptr = self.cast(gv_callable, 1)
res = fnptr(3)
- assert res == -100
+ assert res == -100 - 30
res = fnptr(6)
- assert res == 42
+ assert res == 42 - 60
def test_write_frame_place_compile(self):
fn = self.compile(get_write_frame_place_runner(self.RGenOp), [int])
res = fn(-42)
- assert res == -100
+ assert res == -100 - (-420)
res = fn(606)
- assert res == 4242
+ assert res == 4242 - 6060
def test_read_frame_place_direct(self):
def get_reader(place):
More information about the Pypy-commit
mailing list