[prev in list] [next in list] [prev in thread] [next in thread]
List: pypy-svn
Subject: [pypy-svn] r51160 - pypy/dist/pypy/jit/codegen/test
From: antocuni () codespeak ! net
Date: 2008-01-31 17:02:22
Message-ID: 20080131170222.40A7A16846A () codespeak ! net
[Download RAW message or body]
Author: antocuni
Date: Thu Jan 31 18:02:21 2008
New Revision: 51160
Modified:
pypy/dist/pypy/jit/codegen/test/rgenop_tests.py
Log:
refactor rgenop tests to easily switch to ootype
Modified: pypy/dist/pypy/jit/codegen/test/rgenop_tests.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/test/rgenop_tests.py (original)
+++ pypy/dist/pypy/jit/codegen/test/rgenop_tests.py Thu Jan 31 18:02:21 2008
@@ -10,15 +10,22 @@
rtyper = None
GENOP_POLICY = MixLevelAnnotatorPolicy(PseudoAnnhelper())
-FUNC = lltype.FuncType([lltype.Signed], lltype.Signed)
-FUNC2 = lltype.FuncType([lltype.Signed]*2, lltype.Signed)
-FUNC3 = lltype.FuncType([lltype.Signed]*3, lltype.Signed)
-FUNC5 = lltype.FuncType([lltype.Signed]*5, lltype.Signed)
-FUNC27= lltype.FuncType([lltype.Signed]*27, lltype.Signed)
+class LLType(object):
+ FUNC = lltype.FuncType([lltype.Signed], lltype.Signed)
+ FUNC2 = lltype.FuncType([lltype.Signed]*2, lltype.Signed)
+ FUNC3 = lltype.FuncType([lltype.Signed]*3, lltype.Signed)
+ FUNC5 = lltype.FuncType([lltype.Signed]*5, lltype.Signed)
+ FUNC27= lltype.FuncType([lltype.Signed]*27, lltype.Signed)
+ FUNC100 = lltype.FuncType([lltype.Signed]*100, lltype.Signed)
+
+ @staticmethod
+ def Ptr(FUNC):
+ return lltype.Ptr(FUNC)
+
-def make_adder(rgenop, n):
+def make_adder(T, rgenop, n):
# 'return x+n'
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_add_one, [gv_x] = rgenop.newgraph(sigtoken, "adder")
builder.start_writing()
gv_result = builder.genop2("int_add", gv_x, rgenop.genconst(n))
@@ -26,20 +33,20 @@
builder.end()
return gv_add_one
-def get_adder_runner(RGenOp):
+def get_adder_runner(T, RGenOp):
def runner(x, y):
rgenop = RGenOp()
- gv_add_x = make_adder(rgenop, x)
- add_x = gv_add_x.revealconst(lltype.Ptr(FUNC))
+ gv_add_x = make_adder(T, rgenop, x)
+ add_x = gv_add_x.revealconst(T.Ptr(T.FUNC))
res = add_x(y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return runner
-def make_dummy(rgenop):
+def make_dummy(T, rgenop):
# 'return x - (y - (x-1))'
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(T.FUNC2)
builder, gv_dummyfn, [gv_x, gv_y] = rgenop.newgraph(sigtoken, "dummy")
builder.start_writing()
gv_z = builder.genop2("int_sub", gv_x, rgenop.genconst(1))
@@ -55,18 +62,16 @@
builder.end()
return gv_dummyfn
-def get_dummy_runner(RGenOp):
+def get_dummy_runner(T, RGenOp):
def dummy_runner(x, y):
rgenop = RGenOp()
- gv_dummyfn = make_dummy(rgenop)
- dummyfn = gv_dummyfn.revealconst(lltype.Ptr(FUNC2))
+ gv_dummyfn = make_dummy(T, rgenop)
+ dummyfn = gv_dummyfn.revealconst(T.Ptr(T.FUNC2))
res = dummyfn(x, y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return dummy_runner
-FUNC100 = lltype.FuncType([lltype.Signed]*100, lltype.Signed)
-
def largedummy_example():
args = [random.randrange(-10, 50) for i in range(100)]
total = 0
@@ -74,10 +79,10 @@
total += args[i] - args[i+1]
return args, total
-def make_largedummy(rgenop):
+def make_largedummy(T, rgenop):
# 'return v0-v1+v2-v3+v4-v5...+v98-v99'
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC100)
+ sigtoken = rgenop.sigToken(T.FUNC100)
builder, gv_largedummyfn, gvs = rgenop.newgraph(sigtoken, "largedummy")
builder.start_writing()
@@ -94,7 +99,7 @@
builder.end()
return gv_largedummyfn
-def get_largedummy_runner(RGenOp):
+def get_largedummy_runner(T, RGenOp):
def largedummy_runner(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9,
v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
@@ -106,8 +111,8 @@
v80, v81, v82, v83, v84, v85, v86, v87, v88, v89,
v90, v91, v92, v93, v94, v95, v96, v97, v98, v99):
rgenop = RGenOp()
- gv_largedummyfn = make_largedummy(rgenop)
- largedummyfn = gv_largedummyfn.revealconst(lltype.Ptr(FUNC100))
+ gv_largedummyfn = make_largedummy(T, rgenop)
+ largedummyfn = gv_largedummyfn.revealconst(T.Ptr(T.FUNC100))
res = largedummyfn(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9,
v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
@@ -122,11 +127,11 @@
return res
return largedummy_runner
-def make_branching(rgenop):
+def make_branching(T, rgenop):
# 'if x > 5: return x-1
# else: return y'
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(T.FUNC2)
builder, gv_branchingfn, [gv_x, gv_y] = rgenop.newgraph(sigtoken,
"branching")
builder.start_writing()
@@ -149,11 +154,11 @@
builder.end()
return gv_branchingfn
-def get_branching_runner(RGenOp):
+def get_branching_runner(T, RGenOp):
def branching_runner(x, y):
rgenop = RGenOp()
- gv_branchingfn = make_branching(rgenop)
- branchingfn = gv_branchingfn.revealconst(lltype.Ptr(FUNC2))
+ gv_branchingfn = make_branching(T, rgenop)
+ branchingfn = gv_branchingfn.revealconst(T.Ptr(T.FUNC2))
res = branchingfn(x, y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
@@ -187,7 +192,7 @@
gv_x2 = bodybuilder.genop2("int_sub", gv_x, rgenop.genconst(1))
bodybuilder.finish_and_goto([gv_x2, gv_y2, gv_z2], loopblock)
-def make_goto(rgenop):
+def make_goto(T, rgenop):
# z = 1
# while x > 0:
# z = x * z
@@ -196,7 +201,7 @@
# y += z
# return y
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(T.FUNC2)
builder, gv_gotofn, [gv_x, gv_y] = rgenop.newgraph(sigtoken, "goto")
builder.start_writing()
@@ -211,23 +216,23 @@
builder.end()
return gv_gotofn
-def get_goto_runner(RGenOp):
+def get_goto_runner(T, RGenOp):
def goto_runner(x, y):
rgenop = RGenOp()
- gv_gotofn = make_goto(rgenop)
- gotofn = gv_gotofn.revealconst(lltype.Ptr(FUNC2))
+ gv_gotofn = make_goto(T, rgenop)
+ gotofn = gv_gotofn.revealconst(T.Ptr(T.FUNC2))
res = gotofn(x, y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return goto_runner
-def make_if(rgenop):
+def make_if(T, rgenop):
# a = x
# if x > 5:
# x //= 2
# return x + a
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(T.FUNC2)
builder, gv_gotofn, [gv_x1, gv_unused] = rgenop.newgraph(sigtoken, "if")
builder.start_writing()
@@ -257,17 +262,17 @@
builder.end()
return gv_gotofn
-def get_if_runner(RGenOp):
+def get_if_runner(T, RGenOp):
def if_runner(x, y):
rgenop = RGenOp()
- gv_iffn = make_if(rgenop)
- iffn = gv_iffn.revealconst(lltype.Ptr(FUNC2))
+ gv_iffn = make_if(T, rgenop)
+ iffn = gv_iffn.revealconst(T.Ptr(T.FUNC2))
res = iffn(x, y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return if_runner
-def make_switch(rgenop):
+def make_switch(T, rgenop):
"""
def f(v0, v1):
if v0 == 0: # switch
@@ -278,7 +283,7 @@
return v1
"""
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(T.FUNC2)
builder, gv_switch, [gv0, gv1] = rgenop.newgraph(sigtoken, "switch")
builder.start_writing()
@@ -301,17 +306,17 @@
builder.end()
return gv_switch
-def get_switch_runner(RGenOp):
+def get_switch_runner(T, RGenOp):
def switch_runner(x, y):
rgenop = RGenOp()
- gv_switchfn = make_switch(rgenop)
- switchfn = gv_switchfn.revealconst(lltype.Ptr(FUNC2))
+ gv_switchfn = make_switch(T, rgenop)
+ switchfn = gv_switchfn.revealconst(T.Ptr(T.FUNC2))
res = switchfn(x, y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return switch_runner
-def make_large_switch(rgenop):
+def make_large_switch(T, rgenop):
"""
def f(v0, v1):
if v0 == 0: # switch
@@ -327,7 +332,7 @@
return v1
"""
signed_tok = rgenop.kindToken(lltype.Signed)
- f2_token = rgenop.sigToken(FUNC2)
+ f2_token = rgenop.sigToken(T.FUNC2)
builder, gv_switch, (gv0, gv1) = rgenop.newgraph(f2_token, "large_switch")
builder.start_writing()
@@ -352,17 +357,17 @@
builder.end()
return gv_switch
-def get_large_switch_runner(RGenOp):
+def get_large_switch_runner(T, RGenOp):
def large_switch_runner(x, y):
rgenop = RGenOp()
- gv_large_switchfn = make_large_switch(rgenop)
- largeswitchfn = gv_large_switchfn.revealconst(lltype.Ptr(FUNC2))
+ gv_large_switchfn = make_large_switch(T, rgenop)
+ largeswitchfn = gv_large_switchfn.revealconst(T.Ptr(T.FUNC2))
res = largeswitchfn(x, y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return large_switch_runner
-def make_fact(rgenop):
+def make_fact(T, rgenop):
# def fact(x):
# if x:
# y = x-1
@@ -371,7 +376,7 @@
# return w
# return 1
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_fact, [gv_x] = rgenop.newgraph(sigtoken, "fact")
builder.start_writing()
@@ -391,24 +396,24 @@
builder.end()
return gv_fact
-def get_fact_runner(RGenOp):
+def get_fact_runner(T, RGenOp):
def fact_runner(x):
rgenop = RGenOp()
- gv_large_switchfn = make_fact(rgenop)
- largeswitchfn = gv_large_switchfn.revealconst(lltype.Ptr(FUNC))
+ gv_large_switchfn = make_fact(T, rgenop)
+ largeswitchfn = gv_large_switchfn.revealconst(T.Ptr(T.FUNC))
res = largeswitchfn(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return fact_runner
-def make_func_calling_pause(rgenop):
+def make_func_calling_pause(T, rgenop):
# def f(x):
# if x > 0:
# return x
# else:
# return -x
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_f, [gv_x] = rgenop.newgraph(sigtoken, "abs")
builder.start_writing()
@@ -429,17 +434,17 @@
builder.end()
return gv_f
-def get_func_calling_pause_runner(RGenOp):
+def get_func_calling_pause_runner(T, RGenOp):
def runner(x):
rgenop = RGenOp()
- gv_abs = make_func_calling_pause(rgenop)
- myabs = gv_abs.revealconst(lltype.Ptr(FUNC))
+ gv_abs = make_func_calling_pause(T, rgenop)
+ myabs = gv_abs.revealconst(T.Ptr(T.FUNC))
res = myabs(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return runner
-def make_longwinded_and(rgenop):
+def make_longwinded_and(T, rgenop):
# def f(y): return 2 <= y <= 4
# but more like this:
# def f(y)
@@ -452,7 +457,7 @@
# return 0
bool_kind = rgenop.kindToken(lltype.Bool)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_f, [gv_y] = rgenop.newgraph(sigtoken, "abs")
builder.start_writing()
@@ -479,10 +484,10 @@
builder.end()
return gv_f
-def make_condition_result_cross_link(rgenop):
+def make_condition_result_cross_link(T, rgenop):
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_f, [gv_y] = rgenop.newgraph(sigtoken, "foo")
builder.start_writing()
@@ -503,7 +508,7 @@
builder.end()
return gv_f
-def make_pause_and_resume(rgenop):
+def make_pause_and_resume(T, rgenop):
# def f(x):
# y = x + 1
# # pause/resume here
@@ -511,7 +516,7 @@
# w = y*z
# return w
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken, "f")
builder.start_writing()
@@ -531,17 +536,17 @@
return gv_callable
-def get_pause_and_resume_runner(RGenOp):
+def get_pause_and_resume_runner(T, RGenOp):
def runner(x):
rgenop = RGenOp()
- gv_f = make_pause_and_resume(rgenop)
- f = gv_f.revealconst(lltype.Ptr(FUNC))
+ gv_f = make_pause_and_resume(T, rgenop)
+ f = gv_f.revealconst(T.Ptr(T.FUNC))
res = f(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return runner
-def make_something_a_bit_like_residual_red_call_with_exc(rgenop):
+def make_something_a_bit_like_residual_red_call_with_exc(T, rgenop):
# def f(x, y):
# if x:
# z = 1
@@ -561,9 +566,9 @@
# u = add1(z2)
# v = u * z
# return add1(u)
- gv_add1 = make_adder(rgenop, 1)
+ gv_add1 = make_adder(T, rgenop, 1)
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(T.FUNC2)
builder, gv_f, [gv_x, gv_y] = rgenop.newgraph(sigtoken, "f")
builder.start_writing()
@@ -571,7 +576,7 @@
true_builder = builder.jump_if_true(gv_c, [])
- gv_y2 = builder.genop_call(rgenop.sigToken(FUNC), gv_add1, [gv_y])
+ gv_y2 = builder.genop_call(rgenop.sigToken(T.FUNC), gv_add1, [gv_y])
args_gv = [gv_y2, gv_y]
label = builder.enter_next_block([signed_kind, signed_kind], args_gv)
@@ -582,11 +587,11 @@
gv_z2 = builder.genop2("int_mul", gv_z, gv_w)
- gv_u = builder.genop_call(rgenop.sigToken(FUNC), gv_add1, [gv_z2])
+ gv_u = builder.genop_call(rgenop.sigToken(T.FUNC), gv_add1, [gv_z2])
gv_v = builder.genop2("int_mul", gv_u, gv_z)
- gv_result = builder.genop_call(rgenop.sigToken(FUNC), gv_add1, [gv_u])
+ gv_result = builder.genop_call(rgenop.sigToken(T.FUNC), gv_add1, [gv_u])
builder.finish_and_return(sigtoken, gv_result)
@@ -596,7 +601,7 @@
builder.end()
return gv_f
-def make_call_functions_with_different_signatures(rgenop):
+def make_call_functions_with_different_signatures(T, rgenop):
# this also tests calling functions with enormous numbers of
# parameters, something not tested yet.
# def f(x, y):
@@ -604,12 +609,12 @@
# w = add1(x)
# return z+w
- gv_largedummy = make_largedummy(rgenop)
- gv_add1 = make_adder(rgenop, 1)
+ gv_largedummy = make_largedummy(T, rgenop)
+ gv_add1 = make_adder(T, rgenop, 1)
- sig2token = rgenop.sigToken(FUNC2)
- sig1token = rgenop.sigToken(FUNC)
- sig100token = rgenop.sigToken(FUNC100)
+ sig2token = rgenop.sigToken(T.FUNC2)
+ sig1token = rgenop.sigToken(T.FUNC)
+ sig100token = rgenop.sigToken(T.FUNC100)
builder, gv_callable, [gv_x, gv_y] = rgenop.newgraph(sig2token, "f")
builder.start_writing()
@@ -632,9 +637,9 @@
self.frameinfo = info
return llhelper(self.FUNC, self.reader)
-def make_read_frame_var(rgenop, get_reader):
+def make_read_frame_var(T, rgenop, get_reader):
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
readertoken = rgenop.sigToken(FrameVarReader.FUNC.TO)
builder, gv_f, [gv_x] = rgenop.newgraph(sigtoken, "f")
@@ -654,13 +659,13 @@
return gv_f
-def get_read_frame_var_runner(RGenOp):
+def get_read_frame_var_runner(T, RGenOp):
fvr = FrameVarReader(RGenOp)
def read_frame_var_runner(x):
rgenop = RGenOp()
- gv_f = make_read_frame_var(rgenop, fvr.get_reader)
- fn = gv_f.revealconst(lltype.Ptr(FUNC))
+ gv_f = make_read_frame_var(T, rgenop, fvr.get_reader)
+ fn = gv_f.revealconst(T.Ptr(T.FUNC))
res = fn(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
@@ -682,9 +687,9 @@
self.place2 = place2
return llhelper(self.FUNC, self.writer)
-def make_write_frame_place(rgenop, get_writer):
+def make_write_frame_place(T, rgenop, get_writer):
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
writertoken = rgenop.sigToken(FramePlaceWriter.FUNC.TO)
builder, gv_f, [gv_x] = rgenop.newgraph(sigtoken, "f")
@@ -704,13 +709,13 @@
return gv_f
-def get_write_frame_place_runner(RGenOp):
+def get_write_frame_place_runner(T, RGenOp):
fvw = FramePlaceWriter(RGenOp)
def write_frame_place_runner(x):
rgenop = RGenOp()
- gv_f = make_write_frame_place(rgenop, fvw.get_writer)
- fn = gv_f.revealconst(lltype.Ptr(FUNC))
+ gv_f = make_write_frame_place(T, rgenop, fvw.get_writer)
+ fn = gv_f.revealconst(T.Ptr(T.FUNC))
res = fn(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
@@ -733,9 +738,9 @@
self.places = places
return llhelper(self.FUNC, self.writer)
-def make_write_lots_of_frame_places(rgenop, get_writer):
+def make_write_lots_of_frame_places(T, rgenop, get_writer):
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
writertoken = rgenop.sigToken(FramePlaceWriter.FUNC.TO)
builder, gv_f, [gv_x] = rgenop.newgraph(sigtoken, "f")
@@ -755,13 +760,13 @@
return gv_f
-def get_write_lots_of_frame_places_runner(RGenOp):
+def get_write_lots_of_frame_places_runner(T, RGenOp):
fvw = ManyFramePlaceWriter(RGenOp)
def write_lots_of_frame_places_runner(x):
rgenop = RGenOp()
- gv_f = make_write_lots_of_frame_places(rgenop, fvw.get_writer)
- fn = gv_f.revealconst(lltype.Ptr(FUNC))
+ gv_f = make_write_lots_of_frame_places(T, rgenop, fvw.get_writer)
+ fn = gv_f.revealconst(T.Ptr(T.FUNC))
res = fn(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
@@ -779,9 +784,9 @@
self.place = place
return llhelper(self.FUNC, self.reader)
-def make_read_frame_place(rgenop, get_reader):
+def make_read_frame_place(T, rgenop, get_reader):
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(T.FUNC)
readertoken = rgenop.sigToken(FramePlaceReader.FUNC.TO)
builder, gv_f, [gv_x] = rgenop.newgraph(sigtoken, "f")
@@ -798,20 +803,20 @@
return gv_f
-def get_read_frame_place_runner(RGenOp):
+def get_read_frame_place_runner(T, RGenOp):
fpr = FramePlaceReader(RGenOp)
def read_frame_place_runner(x):
rgenop = RGenOp()
- gv_f = make_read_frame_place(rgenop, fpr.get_reader)
- fn = gv_f.revealconst(lltype.Ptr(FUNC))
+ gv_f = make_read_frame_place(T, rgenop, fpr.get_reader)
+ fn = gv_f.revealconst(T.Ptr(T.FUNC))
res = fn(x)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
return read_frame_place_runner
-def make_ovfcheck_adder(rgenop, n):
- sigtoken = rgenop.sigToken(FUNC)
+def make_ovfcheck_adder(T, rgenop, n):
+ sigtoken = rgenop.sigToken(T.FUNC)
builder, gv_fn, [gv_x] = rgenop.newgraph(sigtoken, "ovfcheck_adder")
builder.start_writing()
gv_result, gv_flag = builder.genraisingop2("int_add_ovf", gv_x,
@@ -823,11 +828,11 @@
builder.end()
return gv_fn
-def get_ovfcheck_adder_runner(RGenOp):
+def get_ovfcheck_adder_runner(T, RGenOp):
def runner(x, y):
rgenop = RGenOp()
- gv_add_x = make_ovfcheck_adder(rgenop, x)
- add_x = gv_add_x.revealconst(lltype.Ptr(FUNC))
+ gv_add_x = make_ovfcheck_adder(T, rgenop, x)
+ add_x = gv_add_x.revealconst(T.Ptr(T.FUNC))
res = add_x(y)
keepalive_until_here(rgenop) # to keep the code blocks alive
return res
@@ -837,6 +842,7 @@
class AbstractRGenOpTests(test_boehm.AbstractGCTestClass):
RGenOp = None
RGenOpPacked = None
+ T = LLType
def compile(self, runner, argtypes):
return self.getcompiled(runner, argtypes,
@@ -860,15 +866,16 @@
# def callable(x, y):
# return f(x) + x + y
rgenop = self.RGenOp()
+ T = self.T
def f(x):
return x + 1
- gv_f = rgenop.genconst(self.directtesthelper(lltype.Ptr(FUNC), f))
+ gv_f = rgenop.genconst(self.directtesthelper(T.Ptr(T.FUNC), f))
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken1 = rgenop.sigToken(FUNC)
- sigtoken2 = rgenop.sigToken(FUNC2)
+ sigtoken1 = rgenop.sigToken(T.FUNC)
+ sigtoken2 = rgenop.sigToken(T.FUNC2)
builder, gv_callable, [gv_x, gv_y] = rgenop.newgraph(sigtoken2, "callable")
builder.start_writing()
@@ -885,25 +892,25 @@
def test_adder_direct(self):
rgenop = self.RGenOp()
- gv_add_5 = make_adder(rgenop, 5)
+ gv_add_5 = make_adder(self.T, rgenop, 5)
fnptr = self.cast(gv_add_5, 1)
res = fnptr(37)
assert res == 42
def test_adder_compile(self):
- fn = self.compile(get_adder_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_adder_runner(self.T, self.RGenOp), [int, int])
res = fn(9080983, -9080941)
assert res == 42
def test_dummy_direct(self):
rgenop = self.RGenOp()
- gv_dummyfn = make_dummy(rgenop)
+ gv_dummyfn = make_dummy(self.T, rgenop)
fnptr = self.cast(gv_dummyfn, 2)
res = fnptr(30, 17)
assert res == 42
def test_dummy_compile(self):
- fn = self.compile(get_dummy_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_dummy_runner(self.T, self.RGenOp), [int, int])
res = fn(40, 37)
assert res == 42
@@ -924,7 +931,7 @@
def test_hide_and_reveal_p(self):
RGenOp = self.RGenOp
S = lltype.GcStruct('s', ('x', lltype.Signed))
- S_PTR = lltype.Ptr(S)
+ S_PTR = self.T.Ptr(S)
s1 = lltype.malloc(S)
s1.x = 8111
s2 = lltype.malloc(S)
@@ -951,21 +958,21 @@
def test_largedummy_direct(self):
rgenop = self.RGenOp()
- gv_largedummyfn = make_largedummy(rgenop)
+ gv_largedummyfn = make_largedummy(self.T, rgenop)
fnptr = self.cast(gv_largedummyfn, 100)
args, expected = largedummy_example()
res = fnptr(*args)
assert res == expected
def test_largedummy_compile(self):
- fn = self.compile(get_largedummy_runner(self.RGenOp), [int] * 100)
+ fn = self.compile(get_largedummy_runner(self.T, self.RGenOp), [int] * 100)
args, expected = largedummy_example()
res = fn(*args)
assert res == expected
def test_branching_direct(self):
rgenop = self.RGenOp()
- gv_branchingfn = make_branching(rgenop)
+ gv_branchingfn = make_branching(self.T, rgenop)
fnptr = self.cast(gv_branchingfn, 2)
res = fnptr(30, 17)
assert res == 29
@@ -973,7 +980,7 @@
assert res == 17
def test_branching_compile(self):
- fn = self.compile(get_branching_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_branching_runner(self.T, self.RGenOp), [int, int])
res = fn(30, 17)
assert res == 29
res = fn(3, 17)
@@ -981,7 +988,7 @@
def test_goto_direct(self):
rgenop = self.RGenOp()
- gv_gotofn = make_goto(rgenop)
+ gv_gotofn = make_goto(self.T, rgenop)
fnptr = self.cast(gv_gotofn, 2)
res = fnptr(10, 17) # <== the segfault is here
assert res == 3628872
@@ -989,7 +996,7 @@
assert res == 29
def test_goto_compile(self):
- fn = self.compile(get_goto_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_goto_runner(self.T, self.RGenOp), [int, int])
res = fn(10, 17)
assert res == 3628872
res = fn(3, 17)
@@ -997,7 +1004,7 @@
def test_if_direct(self):
rgenop = self.RGenOp()
- gv_iffn = make_if(rgenop)
+ gv_iffn = make_if(self.T, rgenop)
fnptr = self.cast(gv_iffn, 2)
res = fnptr(30, 0)
assert res == 45
@@ -1005,7 +1012,7 @@
assert res == 6
def test_if_compile(self):
- fn = self.compile(get_if_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_if_runner(self.T, self.RGenOp), [int, int])
res = fn(30, 0)
assert res == 45
res = fn(3, 0)
@@ -1013,7 +1020,7 @@
def test_switch_direct(self):
rgenop = self.RGenOp()
- gv_switchfn = make_switch(rgenop)
+ gv_switchfn = make_switch(self.T, rgenop)
fnptr = self.cast(gv_switchfn, 2)
res = fnptr(0, 2)
assert res == 42
@@ -1023,7 +1030,7 @@
assert res == 16
def test_switch_compile(self):
- fn = self.compile(get_switch_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_switch_runner(self.T, self.RGenOp), [int, int])
res = fn(0, 2)
assert res == 42
res = fn(1, 17)
@@ -1033,7 +1040,7 @@
def test_large_switch_direct(self):
rgenop = self.RGenOp()
- gv_switchfn = make_large_switch(rgenop)
+ gv_switchfn = make_large_switch(self.T, rgenop)
fnptr = self.cast(gv_switchfn, 2)
res = fnptr(0, 2)
assert res == 42
@@ -1044,7 +1051,7 @@
assert res == 16
def test_large_switch_compile(self):
- fn = self.compile(get_large_switch_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_large_switch_runner(self.T, self.RGenOp), [int, int])
res = fn(0, 2)
assert res == 42
for x in range(1,11):
@@ -1055,7 +1062,7 @@
def test_fact_direct(self):
rgenop = self.RGenOp()
- gv_fact = make_fact(rgenop)
+ gv_fact = make_fact(self.T, rgenop)
fnptr = self.cast(gv_fact, 1)
res = fnptr(2)
assert res == 2
@@ -1063,7 +1070,7 @@
assert res == 3628800
def test_fact_compile(self):
- fn = self.compile(get_fact_runner(self.RGenOp), [int])
+ fn = self.compile(get_fact_runner(self.T, self.RGenOp), [int])
res = fn(2)
assert res == 2
res = fn(11)
@@ -1071,7 +1078,7 @@
def test_calling_pause_direct(self):
rgenop = self.RGenOp()
- gv_abs = make_func_calling_pause(rgenop)
+ gv_abs = make_func_calling_pause(self.T, rgenop)
fnptr = self.cast(gv_abs, 1)
res = fnptr(2)
assert res == 2
@@ -1079,7 +1086,7 @@
assert res == 42
def test_calling_pause_compile(self):
- fn = self.compile(get_func_calling_pause_runner(self.RGenOp), [int])
+ fn = self.compile(get_func_calling_pause_runner(self.T, self.RGenOp), [int])
res = fn(2)
assert res == 2
res = fn(-72)
@@ -1087,7 +1094,7 @@
def test_longwinded_and_direct(self):
rgenop = self.RGenOp()
- gv_fn = make_longwinded_and(rgenop)
+ gv_fn = make_longwinded_and(self.T, rgenop)
fnptr = self.cast(gv_fn, 1)
res = fnptr(1)
@@ -1107,7 +1114,7 @@
def test_condition_result_cross_link_direct(self):
rgenop = self.RGenOp()
- gv_fn = make_condition_result_cross_link(rgenop)
+ gv_fn = make_condition_result_cross_link(self.T, rgenop)
fnptr = self.cast(gv_fn, 1)
res = fnptr(-1)
@@ -1124,7 +1131,7 @@
# return x>y + 10*x<y + 100*x<=y + 1000*x>=y + 10000*x==y + 100000*x!=y
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(self.T.FUNC2)
builder, gv_callable, [gv_x, gv_y] = rgenop.newgraph(sigtoken,
"multicmp")
builder.start_writing()
@@ -1176,7 +1183,7 @@
# 1>x + 10*(1<x) + 100*(1>=x) + 1000*(1<=x) + 10000*(1==x) + 100000*(1!=x)
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken,
"multicmp")
builder.start_writing()
@@ -1231,7 +1238,7 @@
# return x
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken,
"tightloop")
builder.start_writing()
@@ -1258,7 +1265,7 @@
def test_jump_to_block_with_many_vars(self):
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_verysmall_callable, [gv_x] = rgenop.newgraph(sigtoken,
"verysmall")
builder.start_writing()
@@ -1300,7 +1307,7 @@
def test_same_as(self):
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken, "sameas")
builder.start_writing()
gv_nineteen = builder.genop_same_as(signed_kind, rgenop.genconst(19))
@@ -1315,7 +1322,7 @@
def test_pause_and_resume_direct(self):
rgenop = self.RGenOp()
- gv_callable = make_pause_and_resume(rgenop)
+ gv_callable = make_pause_and_resume(self.T, rgenop)
fnptr = self.cast(gv_callable, 1)
res = fnptr(1)
@@ -1328,7 +1335,7 @@
assert res == 8
def test_pause_and_resume_compile(self):
- fn = self.compile(get_pause_and_resume_runner(self.RGenOp), [int])
+ fn = self.compile(get_pause_and_resume_runner(self.T, self.RGenOp), [int])
res = fn(1)
assert res == 0
@@ -1341,7 +1348,7 @@
def test_like_residual_red_call_with_exc_direct(self):
rgenop = self.RGenOp()
- gv_callable = make_something_a_bit_like_residual_red_call_with_exc(rgenop)
+ gv_callable = make_something_a_bit_like_residual_red_call_with_exc(self.T, \
rgenop) fnptr = self.cast(gv_callable, 2)
res = fnptr(1, 3)
@@ -1352,7 +1359,7 @@
def test_call_functions_with_different_signatures_direct(self):
rgenop = self.RGenOp()
- gv_callable = make_call_functions_with_different_signatures(rgenop)
+ gv_callable = make_call_functions_with_different_signatures(self.T, rgenop)
fnptr = self.cast(gv_callable, 2)
res = fnptr(1, 3)
@@ -1364,7 +1371,7 @@
def test_defaultonly_switch(self):
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken, "defaultonly")
builder.start_writing()
flexswitch, default_builder = builder.flexswitch(gv_x, [gv_x])
@@ -1380,7 +1387,7 @@
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
bool_kind = rgenop.kindToken(lltype.Bool)
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken, "bool_not")
builder.start_writing()
gv_cond = builder.genop2("int_lt", gv_x, rgenop.genconst(10))
@@ -1407,13 +1414,13 @@
return reader_ptr
rgenop = self.RGenOp()
- gv_callable = make_read_frame_var(rgenop, get_reader)
+ gv_callable = make_read_frame_var(self.T, rgenop, get_reader)
fnptr = self.cast(gv_callable, 1)
res = fnptr(20)
assert res == 40
def test_read_frame_var_compile(self):
- fn = self.compile(get_read_frame_var_runner(self.RGenOp), [int])
+ fn = self.compile(get_read_frame_var_runner(self.T, self.RGenOp), [int])
res = fn(30)
assert res == 60
@@ -1426,7 +1433,7 @@
return writer_ptr
rgenop = self.RGenOp()
- gv_callable = make_write_frame_place(rgenop, get_writer)
+ gv_callable = make_write_frame_place(self.T, rgenop, get_writer)
fnptr = self.cast(gv_callable, 1)
res = fnptr(3)
assert res == -100 - 30
@@ -1434,7 +1441,7 @@
assert res == 42 - 60
def test_write_frame_place_compile(self):
- fn = self.compile(get_write_frame_place_runner(self.RGenOp), [int])
+ fn = self.compile(get_write_frame_place_runner(self.T, self.RGenOp), [int])
res = fn(-42)
assert res == -100 - (-420)
res = fn(606)
@@ -1448,7 +1455,7 @@
return writer_ptr
rgenop = self.RGenOp()
- gv_callable = make_write_lots_of_frame_places(rgenop, get_writer)
+ gv_callable = make_write_lots_of_frame_places(self.T, rgenop, get_writer)
fnptr = self.cast(gv_callable, 1)
res = fnptr(3)
assert res == sum(range(3, 103))
@@ -1463,19 +1470,19 @@
return reader_ptr
rgenop = self.RGenOp()
- gv_callable = make_read_frame_place(rgenop, get_reader)
+ gv_callable = make_read_frame_place(self.T, rgenop, get_reader)
fnptr = self.cast(gv_callable, 1)
res = fnptr(-1)
assert res == 42
def test_read_frame_place_compile(self):
- fn = self.compile(get_read_frame_place_runner(self.RGenOp), [int])
+ fn = self.compile(get_read_frame_place_runner(self.T, self.RGenOp), [int])
res = fn(-1)
assert res == 42
def test_frame_vars_like_the_frontend_direct(self):
rgenop = self.RGenOp()
- sigtoken = rgenop.sigToken(FUNC3)
+ sigtoken = rgenop.sigToken(self.T.FUNC3)
signed_kind = rgenop.kindToken(lltype.Signed)
# ------------------------------------------
builder0, gv_callable, [v0, v1, v2] = rgenop.newgraph(sigtoken,
@@ -1518,7 +1525,7 @@
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(self.T.FUNC2)
builder, gv_callable, [gv_x, gv_y] = rgenop.newgraph(sigtoken, "f")
builder.start_writing()
@@ -1565,7 +1572,7 @@
signed_kind = rgenop.kindToken(lltype.Signed)
bool_kind = rgenop.kindToken(lltype.Bool)
- builder0, gv_callable, [v0, v1, v2] = \
rgenop.newgraph(rgenop.sigToken(FUNC3), 'compiled_dummyfn') + builder0, \
gv_callable, [v0, v1, v2] = rgenop.newgraph(rgenop.sigToken(self.T.FUNC3), \
'compiled_dummyfn')
builder0.start_writing()
args_gv = [v0, v1]
@@ -1597,7 +1604,7 @@
v17 = builder3.genop1('cast_bool_to_int', v14)
v18 = builder3.genop2('int_mul', v17, rgenop.genconst(-340864157))
v19 = builder3.genop2('int_add', v16, v18)
- builder3.finish_and_return(rgenop.sigToken(FUNC3), v19)
+ builder3.finish_and_return(rgenop.sigToken(self.T.FUNC3), v19)
builder1.start_writing()
builder1.finish_and_goto([v3, v4, rgenop.genconst(False)], label1)
@@ -1624,7 +1631,7 @@
signed_kind = rgenop.kindToken(lltype.Signed)
bool_kind = rgenop.kindToken(lltype.Bool)
- builder0, gv_callable, [v0, v1, v2] = \
rgenop.newgraph(rgenop.sigToken(FUNC3), 'compiled_dummyfn') + builder0, \
gv_callable, [v0, v1, v2] = rgenop.newgraph(rgenop.sigToken(self.T.FUNC3), \
'compiled_dummyfn') builder0.start_writing()
v3 = builder0.genop1('int_is_true', v1)
@@ -1653,7 +1660,7 @@
builder3.finish_and_goto([v14, v6, v7, v4], label1)
builder2.start_writing()
- builder2.finish_and_return(rgenop.sigToken(FUNC3), v5)
+ builder2.finish_and_return(rgenop.sigToken(self.T.FUNC3), v5)
builder2.end()
fnptr = self.cast(gv_callable, 3)
@@ -1679,11 +1686,11 @@
signed_kind = rgenop.kindToken(lltype.Signed)
bool_kind = rgenop.kindToken(lltype.Bool)
- builder0, gv_callable, [v0, v1, v2, v3, v4] = \
rgenop.newgraph(rgenop.sigToken(FUNC5), 'compiled_dummyfn') + builder0, \
gv_callable, [v0, v1, v2, v3, v4] = rgenop.newgraph(rgenop.sigToken(self.T.FUNC5), \
'compiled_dummyfn') builder0.start_writing()
v5 = builder0.genop1('int_is_true', v0)
builder1 = builder0.jump_if_true(v5, [v0, v1, v3, v2])
- builder0.finish_and_return(rgenop.sigToken(FUNC5), rgenop.genconst(0))
+ builder0.finish_and_return(rgenop.sigToken(self.T.FUNC5), \
rgenop.genconst(0))
builder1.start_writing()
@@ -1734,7 +1741,7 @@
v32 = builder5.genop1('cast_bool_to_int', v26)
v33 = builder5.genop2('int_mul', rgenop.genconst(2), v32)
v34 = builder5.genop2('int_add', v31, v33)
- builder5.finish_and_return(rgenop.sigToken(FUNC5), v34)
+ builder5.finish_and_return(rgenop.sigToken(self.T.FUNC5), v34)
builder5.end()
fnptr = self.cast(gv_callable, 5)
@@ -1748,7 +1755,7 @@
bool_kind = rgenop.kindToken(lltype.Bool)
builder0, gv_callable, [v0, v1, v2] = rgenop.newgraph(
- rgenop.sigToken(FUNC3), 'compiled_dummyfn')
+ rgenop.sigToken(self.T.FUNC3), 'compiled_dummyfn')
builder0.start_writing()
@@ -1778,7 +1785,7 @@
label4 = builder1.enter_next_block([signed_kind, signed_kind, signed_kind], \
args_gv) [v26, v27, v28] = args_gv
- builder1.finish_and_return(rgenop.sigToken(FUNC3), v27)
+ builder1.finish_and_return(rgenop.sigToken(self.T.FUNC3), v27)
builder2.start_writing()
v33 = builder2.genop2('int_sub', v8, rgenop.genconst(1))
@@ -1828,7 +1835,7 @@
signed_kind = rgenop.kindToken(lltype.Signed)
bool_kind = rgenop.kindToken(lltype.Bool)
- builder0, gv_callable, [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, \
v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26] = \
rgenop.newgraph(rgenop.sigToken(FUNC27), 'compiled_dummyfn') + builder0, \
gv_callable, [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, \
v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26] = \
rgenop.newgraph(rgenop.sigToken(self.T.FUNC27), 'compiled_dummyfn') \
builder0.start_writing()
args_gv = [v0, v1, v2, v3, v6, v8, v9, v10, v11, v12, v13, v14, v16, v17, \
v18, v19, v20, v21, v22, v23, v24, v25, v26] label0 = \
builder0.enter_next_block([signed_kind, signed_kind, signed_kind, signed_kind, \
signed_kind, signed_kind, signed_kind, signed_kind, signed_kind, signed_kind, \
signed_kind, signed_kind, signed_kind, signed_kind, signed_kind, signed_kind, \
signed_kind, signed_kind, signed_kind, signed_kind, signed_kind, signed_kind, \
signed_kind], args_gv) @@ -1916,7 +1923,7 @@
v235 = builder0.genop2('int_add', v233, v234)
v236 = builder0.genop2('int_mul', v181, rgenop.genconst(-1563822213))
v237 = builder0.genop2('int_add', v235, v236)
- builder0.finish_and_return(rgenop.sigToken(FUNC27), v237)
+ builder0.finish_and_return(rgenop.sigToken(self.T.FUNC27), v237)
builder2.start_writing()
builder2.finish_and_goto([v51, v52, v53, v54, v55, v58, v56, v57, v58, v59, \
v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73], label2) \
builder4.start_writing() @@ -1941,13 +1948,13 @@
RGenOp = self.RGenOp
gv = RGenOp.genzeroconst(RGenOp.kindToken(lltype.Signed))
assert gv.revealconst(lltype.Signed) == 0
- P = lltype.Ptr(lltype.Struct('S'))
+ P = self.T.Ptr(lltype.Struct('S'))
gv = RGenOp.genzeroconst(RGenOp.kindToken(P))
assert gv.revealconst(llmemory.Address) == llmemory.NULL
def test_ovfcheck_adder_direct(self):
rgenop = self.RGenOp()
- gv_add_5 = make_ovfcheck_adder(rgenop, 5)
+ gv_add_5 = make_ovfcheck_adder(self.T, rgenop, 5)
fnptr = self.cast(gv_add_5, 1)
res = fnptr(37)
assert res == (42 << 1) | 0
@@ -1955,7 +1962,7 @@
assert (res & 1) == 1
def test_ovfcheck_adder_compile(self):
- fn = self.compile(get_ovfcheck_adder_runner(self.RGenOp), [int, int])
+ fn = self.compile(get_ovfcheck_adder_runner(self.T, self.RGenOp), [int, \
int]) res = fn(9080983, -9080941)
assert res == (42 << 1) | 0
res = fn(-sys.maxint, -10)
@@ -1975,7 +1982,7 @@
def ovfcheck1_direct(self, opname, testcases):
rgenop = self.RGenOp()
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_fn, [gv_x] = rgenop.newgraph(sigtoken, "ovfcheck1")
builder.start_writing()
gv_result, gv_flag = builder.genraisingop1(opname, gv_x)
@@ -2022,7 +2029,7 @@
def ovfcheck2_direct(self, opname, testcases):
rgenop = self.RGenOp()
- sigtoken = rgenop.sigToken(FUNC2)
+ sigtoken = rgenop.sigToken(self.T.FUNC2)
builder, gv_fn, [gv_x, gv_y] = rgenop.newgraph(sigtoken, "ovfcheck2")
builder.start_writing()
gv_result, gv_flag = builder.genraisingop2(opname, gv_x, gv_y)
@@ -2055,13 +2062,13 @@
def cast_direct(self, operations, expected, max=r_uint(-1)):
need_odd_integer = False
rgenop = self.RGenOp()
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_fn, [gv_x] = rgenop.newgraph(sigtoken, "cast")
builder.start_writing()
for opname in operations:
if opname == "cast_int_to_ptr":
S = lltype.GcStruct('s', ('x', lltype.Signed))
- ptrkind = rgenop.kindToken(lltype.Ptr(S))
+ ptrkind = rgenop.kindToken(self.T.Ptr(S))
gv_x = builder.genop_cast_int_to_ptr(ptrkind, gv_x)
need_odd_integer = True
else:
@@ -2082,13 +2089,12 @@
py.test.skip("requires RGenOpPacked")
rgenop = self.RGenOpPacked()
A = lltype.GcArray(lltype.Signed)
- FUNC3 = lltype.FuncType([lltype.Signed]*3, lltype.Signed)
varsizealloctoken = rgenop.varsizeAllocToken(A)
arraytoken = rgenop.arrayToken(A)
signed_kind = rgenop.kindToken(lltype.Signed)
# ------------------------------------------------------------
builder0, gv_callable, [v0, v1, v2] = rgenop.newgraph(
- rgenop.sigToken(FUNC3), 'generated')
+ rgenop.sigToken(self.T.FUNC3), 'generated')
builder0.start_writing()
v3 = builder0.genop_malloc_varsize(varsizealloctoken,
rgenop.genconst(2))
@@ -2113,7 +2119,7 @@
args_gv = [v8]
label1 = builder4.enter_next_block([signed_kind], args_gv)
[v9] = args_gv
- builder4.finish_and_return(rgenop.sigToken(FUNC3), v9)
+ builder4.finish_and_return(rgenop.sigToken(self.T.FUNC3), v9)
builder0.end()
fnptr = self.cast(gv_callable, 3)
@@ -2128,11 +2134,11 @@
# lloperation in the llgraphs.
if self.RGenOpPacked is None:
py.test.skip("requires RGenOpPacked")
- T = lltype.Struct('T', ('x', lltype.Signed))
- A = lltype.Array(T)
+ X = lltype.Struct('X', ('x', lltype.Signed))
+ A = lltype.Array(X)
S = lltype.GcStruct('S', ('a', A))
rgenop = self.RGenOpPacked()
- sigtoken = rgenop.sigToken(FUNC)
+ sigtoken = rgenop.sigToken(self.T.FUNC)
builder, gv_fn, [gv_x] = rgenop.newgraph(sigtoken, "interior_access")
builder.start_writing()
gv_s = builder.genop_malloc_varsize(rgenop.varsizeAllocToken(S),
@@ -2141,12 +2147,12 @@
gv_a1 = builder.genop_getsubstruct(rgenop.fieldToken(S, 'a'), gv_s)
gv_t1 = builder.genop_getarraysubstruct(rgenop.arrayToken(A),
gv_a1, rgenop.genconst(3))
- builder.genop_setfield(rgenop.fieldToken(T, 'x'), gv_t1, gv_x)
+ builder.genop_setfield(rgenop.fieldToken(X, 'x'), gv_t1, gv_x)
# generate an expanded 'getinteriorfield'
gv_a1 = builder.genop_getsubstruct(rgenop.fieldToken(S, 'a'), gv_s)
gv_t1 = builder.genop_getarraysubstruct(rgenop.arrayToken(A),
gv_a1, rgenop.genconst(3))
- gv_y = builder.genop_getfield(rgenop.fieldToken(T, 'x'), gv_t1)
+ gv_y = builder.genop_getfield(rgenop.fieldToken(X, 'x'), gv_t1)
# generate an expanded 'getinteriorarraysize'
gv_a1 = builder.genop_getsubstruct(rgenop.fieldToken(S, 'a'), gv_s)
gv_z = builder.genop_getarraysize(rgenop.arrayToken(A), gv_a1)
_______________________________________________
pypy-svn mailing list
pypy-svn@codespeak.net
http://codespeak.net/mailman/listinfo/pypy-svn
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic