本文整理汇总了Python中pypy.translator.translator.graphof函数的典型用法代码示例。如果您正苦于以下问题:Python graphof函数的具体用法?Python graphof怎么用?Python graphof使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了graphof函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_normalize_f2_as_taking_string_argument
def test_normalize_f2_as_taking_string_argument(self):
def f1(l1):
pass
def f2(l2):
pass
def g(n):
if n > 0:
f1("123")
f = f1
else:
f2("b")
f = f2
f("a")
# The call table looks like:
#
# FuncDesc(f1) FuncDesc(f2)
# --------------------------------------------
# line g+2: graph1
# line g+5: graph2
# line g+7: graph1 graph2
#
# But all lines get compressed to a single line.
translator = self.rtype(g, [int], annmodel.s_None)
f1graph = graphof(translator, f1)
f2graph = graphof(translator, f2)
s_l1 = translator.annotator.binding(f1graph.getargs()[0])
s_l2 = translator.annotator.binding(f2graph.getargs()[0])
assert s_l1.__class__ == annmodel.SomeString # and not SomeChar
assert s_l2.__class__ == annmodel.SomeString # and not SomeChar
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:31,代码来源:test_normalizecalls.py
示例2: test_llexternal
def test_llexternal(self):
from pypy.rpython.lltypesystem.rffi import llexternal
from pypy.rpython.lltypesystem import lltype
z = llexternal('z', [lltype.Signed], lltype.Signed)
def f(x):
return z(x)
t, ra = self.translate(f, [int])
fgraph = graphof(t, f)
backend_optimizations(t)
assert fgraph.startblock.operations[0].opname == 'direct_call'
result = ra.can_raise(fgraph.startblock.operations[0])
assert not result
z = lltype.functionptr(lltype.FuncType([lltype.Signed], lltype.Signed),
'foobar')
def g(x):
return z(x)
t, ra = self.translate(g, [int])
ggraph = graphof(t, g)
assert ggraph.startblock.operations[0].opname == 'direct_call'
result = ra.can_raise(ggraph.startblock.operations[0])
assert result
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:25,代码来源:test_canraise.py
示例3: test_cancollect_external
def test_cancollect_external():
fext1 = rffi.llexternal('fext1', [], lltype.Void, threadsafe=False)
def g():
fext1()
t = rtype(g, [])
gg = graphof(t, g)
assert not CollectAnalyzer(t).analyze_direct_call(gg)
fext2 = rffi.llexternal('fext2', [], lltype.Void, threadsafe=True)
def g():
fext2()
t = rtype(g, [])
gg = graphof(t, g)
assert CollectAnalyzer(t).analyze_direct_call(gg)
S = lltype.GcStruct('S', ('x', lltype.Signed))
FUNC = lltype.Ptr(lltype.FuncType([lltype.Signed], lltype.Void))
fext3 = rffi.llexternal('fext3', [FUNC], lltype.Void, threadsafe=False)
def h(x):
lltype.malloc(S, zero=True)
def g():
fext3(h)
t = rtype(g, [])
gg = graphof(t, g)
assert CollectAnalyzer(t).analyze_direct_call(gg)
开发者ID:alkorzt,项目名称:pypy,代码行数:25,代码来源:test_framework.py
示例4: check_inline
def check_inline(self, func, in_func, sig, entry=None,
inline_guarded_calls=False,
graph=False):
if entry is None:
entry = in_func
t = self.translate(entry, sig)
# inline!
sanity_check(t) # also check before inlining (so we don't blame it)
if option.view:
t.view()
raise_analyzer = canraise.RaiseAnalyzer(t)
inliner = Inliner(t, graphof(t, in_func), func,
t.rtyper.lltype_to_classdef_mapping(),
inline_guarded_calls,
raise_analyzer=raise_analyzer)
inliner.inline_all()
if option.view:
t.view()
sanity_check(t)
interp = LLInterpreter(t.rtyper)
def eval_func(args):
return interp.eval_graph(graphof(t, entry), args)
if graph:
return eval_func, graphof(t, func)
return eval_func
开发者ID:alkorzt,项目名称:pypy,代码行数:25,代码来源:test_inline.py
示例5: test_normalize_abstract_method
def test_normalize_abstract_method(self):
class Base:
def fn(self):
raise NotImplementedError
class Sub1(Base):
def fn(self):
return 1
class Sub2(Base):
def fn(self):
return -2
def dummyfn(n):
if n == 1:
x = Sub1()
else:
x = Sub2()
return x.fn()
translator = self.rtype(dummyfn, [int], int)
base_graph = graphof(translator, Base.fn.im_func)
sub1_graph = graphof(translator, Sub1.fn.im_func)
sub2_graph = graphof(translator, Sub2.fn.im_func)
assert base_graph.getreturnvar().concretetype == lltype.Signed
assert sub1_graph.getreturnvar().concretetype == lltype.Signed
assert sub2_graph.getreturnvar().concretetype == lltype.Signed
llinterp = LLInterpreter(translator.rtyper)
res = llinterp.eval_graph(graphof(translator, dummyfn), [1])
assert res == 1
res = llinterp.eval_graph(graphof(translator, dummyfn), [2])
assert res == -2
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:30,代码来源:test_normalizecalls.py
示例6: rtype
def rtype(self, fn, argtypes, resulttype, checkfunction=None):
t = TranslationContext()
a = t.buildannotator()
a.build_types(prefn, [int])
typer = t.buildrtyper()
typer.specialize()
#t.view()
s_result = a.typeannotation(resulttype)
from pypy.rpython import annlowlevel
# annotate, normalize and rtype fn after the fact
annhelper = annlowlevel.MixLevelHelperAnnotator(typer)
graph = annhelper.getgraph(fn, [a.typeannotation(argtype) for argtype in argtypes],
s_result)
annhelper.finish()
t.checkgraphs()
if checkfunction is not None:
checkfunction(t)
# sanity check prefn
llinterp = LLInterpreter(typer)
res = llinterp.eval_graph(graphof(t, prefn), [1])
assert res == 100
res = llinterp.eval_graph(graphof(t, prefn), [2])
assert res == 201
return t
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:29,代码来源:test_normalizecalls.py
示例7: test_multiple_calls
def test_multiple_calls():
class A:
pass
class B(A):
pass
def g2(b, i):
b.i = h(i)
def g1(a, b, i):
a.b = b
g2(b, h(i))
return a.b.i
def h(x):
return x + 42
def fn(i):
a = A()
b = B()
x = h(i)
return g1(a, b, x)
t, graph = rtype(fn, [int])
callgraph, caller_candidates = check_inlining(t, graph, [0], 3 * 42)
print callgraph
assert caller_candidates == {graph: True}
assert len(callgraph) == 1
g1graph = graphof(t, g1)
g2graph = graphof(t, g2)
assert callgraph == {graph: {g1graph: True}}
callgraph, caller_candidates = check_inlining(t, graph, [0], 3 * 42)
assert callgraph == {graph: {g2graph: True}}
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:28,代码来源:test_mallocprediction.py
示例8: test_add_more_subclasses
def test_add_more_subclasses(self):
from pypy.rpython import rclass
from pypy.rpython.lltypesystem.rclass import ll_issubclass
from pypy.rpython.lltypesystem.rclass import CLASSTYPE
class Sub3(PBase):
def newmethod(self):
return 3
def dummyfn(n):
x = Sub3()
return x.newmethod()
def checkfunction(translator):
# make sure that there is a sensible comparison defined on the
# symbolics
bk = translator.annotator.bookkeeper
rtyper = translator.rtyper
base_classdef = bk.getuniqueclassdef(PBase)
base_vtable = rclass.getclassrepr(rtyper, base_classdef).getruntime(CLASSTYPE)
sub3_classdef = bk.getuniqueclassdef(Sub3)
sub3_vtable = rclass.getclassrepr(rtyper, sub3_classdef).getruntime(CLASSTYPE)
assert ll_issubclass(sub3_vtable, base_vtable)
assert not ll_issubclass(base_vtable, sub3_vtable)
translator = self.rtype(dummyfn, [int], int, checkfunction)
base_graph = graphof(translator, PBase.fn.im_func)
sub1_graph = graphof(translator, PSub1.fn.im_func)
sub2_graph = graphof(translator, PSub2.fn.im_func)
sub3_graph = graphof(translator, Sub3.fn.im_func)
dummyfn_graph = graphof(translator, dummyfn)
assert base_graph.getreturnvar().concretetype == lltype.Signed
assert sub1_graph.getreturnvar().concretetype == lltype.Signed
assert sub2_graph.getreturnvar().concretetype == lltype.Signed
assert sub3_graph.getreturnvar().concretetype == lltype.Signed
assert dummyfn_graph.getreturnvar().concretetype == lltype.Signed
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:34,代码来源:test_normalizecalls.py
示例9: test_half_exceptiontransformed_graphs
def test_half_exceptiontransformed_graphs():
from pypy.translator import exceptiontransform
def f1(x):
if x < 0:
raise ValueError
return 754
def g1(x):
try:
return f1(x)
except ValueError:
return 5
def f2(x):
if x < 0:
raise ValueError
return 21
def g2(x):
try:
return f2(x)
except ValueError:
return 6
f3 = lltype.functionptr(lltype.FuncType([lltype.Signed], lltype.Signed), "f3", _callable=f1)
def g3(x):
try:
return f3(x)
except ValueError:
return 7
def f(flag, x):
if flag == 1:
return g1(x)
elif flag == 2:
return g2(x)
else:
return g3(x)
t = TranslationContext()
t.buildannotator().build_types(f, [int, int])
t.buildrtyper().specialize()
etrafo = exceptiontransform.ExceptionTransformer(t)
etrafo.create_exception_handling(graphof(t, f1))
etrafo.create_exception_handling(graphof(t, g2))
etrafo.create_exception_handling(graphof(t, g3))
graph = graphof(t, f)
interp = LLInterpreter(t.rtyper)
res = interp.eval_graph(graph, [1, -64])
assert res == 5
res = interp.eval_graph(graph, [2, -897])
assert res == 6
res = interp.eval_graph(graph, [3, -9831])
assert res == 7
开发者ID:are-prabhu,项目名称:pypy,代码行数:56,代码来源:test_llinterp.py
示例10: test_annotate_r_dict
def test_annotate_r_dict():
t = TranslationContext()
a = t.buildannotator()
a.build_types(test_r_dict, [])
#t.view()
graph = graphof(t, strange_key_eq)
assert a.binding(graph.getargs()[0]).knowntype == str
assert a.binding(graph.getargs()[1]).knowntype == str
graph = graphof(t, strange_key_hash)
assert a.binding(graph.getargs()[0]).knowntype == str
开发者ID:gorakhargosh,项目名称:pypy,代码行数:10,代码来源:test_objectmodel.py
示例11: test_cancollect
def test_cancollect():
S = lltype.GcStruct('S', ('x', lltype.Signed))
def g():
lltype.malloc(S, zero=True)
t = rtype(g, [])
gg = graphof(t, g)
assert CollectAnalyzer(t).analyze_direct_call(gg)
def g(x):
return -x
t = rtype(g, [int])
gg = graphof(t, g)
assert not CollectAnalyzer(t).analyze_direct_call(gg)
开发者ID:AishwaryaKM,项目名称:python-tutorial,代码行数:13,代码来源:test_framework.py
示例12: hannotate
def hannotate(func, argtypes, policy=P_DEFAULT, annotator=False, inline=None,
backendoptimize=False):
# build the normal ll graphs for ll_function
t = TranslationContext()
a = t.buildannotator()
a.build_types(func, argtypes)
rtyper = t.buildrtyper()
rtyper.specialize()
if inline:
auto_inlining(t, threshold=inline)
if backendoptimize:
from pypy.translator.backendopt.all import backend_optimizations
backend_optimizations(t)
graph1 = graphof(t, func)
# build hint annotator types
hannotator = HintAnnotator(base_translator=t, policy=policy)
hs = hannotator.build_types(graph1, [SomeLLAbstractConstant(v.concretetype,
{OriginFlags(): True})
for v in graph1.getargs()])
hannotator.simplify()
t = hannotator.translator
if conftest.option.view:
t.view()
if annotator:
return hs, hannotator
else:
return hs
开发者ID:TheDunn,项目名称:flex-pypy,代码行数:28,代码来源:test_annotator.py
示例13: test_list
def test_list(self):
def g(x, y, z):
return f(x, y, z)
def f(x, y, z):
l = [0] * x
l.append(y)
return len(l) + z
t, wa = self.translate(g, [int, int, int])
ggraph = graphof(t, g)
assert ggraph.startblock.operations[0].opname == 'direct_call'
result = sorted(wa.analyze(ggraph.startblock.operations[0]))
array, A = result[0]
assert array == "array"
assert A.TO.OF == lltype.Signed
struct, S1, name = result[1]
assert struct == "struct"
assert S1.TO.items == A
assert S1.TO.length == lltype.Signed
assert name == "items"
struct, S2, name = result[2]
assert struct == "struct"
assert name == "length"
assert S1 is S2
开发者ID:alkorzt,项目名称:pypy,代码行数:28,代码来源:test_writeanalyze.py
示例14: test_remove_same_as
def test_remove_same_as():
def nothing(x):
return x
def f():
nothing(False)
if nothing(True):
return 42
else:
return 666
t = TranslationContext()
t.buildannotator().build_types(f, [])
t.buildrtyper().specialize()
# now we make the 'if True' appear
f_graph = graphof(t, f)
simple_inline_function(t, nothing, f_graph)
# here, the graph looks like v21=same_as(True); exitswitch: v21
remove_same_as(f_graph)
t.checkgraphs()
# only one path should be left
for block in f_graph.iterblocks():
assert len(block.exits) <= 1
interp = LLInterpreter(t.rtyper)
result = interp.eval_graph(f_graph, [])
assert result == 42
开发者ID:AishwaryaKM,项目名称:python-tutorial,代码行数:25,代码来源:test_removenoops.py
示例15: test_llexternal_with_callback
def test_llexternal_with_callback(self):
from pypy.rpython.lltypesystem.rffi import llexternal
from pypy.rpython.lltypesystem import lltype
class Abc:
pass
abc = Abc()
FUNC = lltype.FuncType([lltype.Signed], lltype.Signed)
z = llexternal('z', [lltype.Ptr(FUNC)], lltype.Signed)
def g(n):
abc.foobar = n
return n + 1
def f(x):
return z(g)
t, wa = self.translate(f, [int])
fgraph = graphof(t, f)
backend_optimizations(t)
assert fgraph.startblock.operations[0].opname == 'direct_call'
result = wa.analyze(fgraph.startblock.operations[0])
assert len(result) == 1
(struct, T, name), = result
assert struct == "struct"
assert name.endswith("foobar")
开发者ID:alkorzt,项目名称:pypy,代码行数:25,代码来源:test_writeanalyze.py
示例16: test_lookup_graphs_abstract
def test_lookup_graphs_abstract():
from pypy.translator.translator import TranslationContext, graphof
class A:
pass
class B(A):
def foo(self):
pass
class C(A):
def foo(self):
pass
def fn(flag):
obj = flag and B() or C()
obj.foo()
return obj
t = TranslationContext()
t.buildannotator().build_types(fn, [int])
t.buildrtyper(type_system='ootype').specialize()
graph = graphof(t, fn)
TYPE_A = graph.getreturnvar().concretetype
TYPE_B = TYPE_A._subclasses[0]
TYPE_C = TYPE_A._subclasses[1]
assert len(TYPE_A._lookup_graphs('ofoo')) == 2
assert len(TYPE_B._lookup_graphs('ofoo')) == 1
assert len(TYPE_C._lookup_graphs('ofoo')) == 1
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:26,代码来源:test_ootype.py
示例17: test_auto_inlining_small_call_big_call_count
def test_auto_inlining_small_call_big_call_count(self):
def leaf(n):
total = 0
i = 0
while i < n:
total += i
if total > 100:
raise OverflowError
i += 1
return total
def g(n):
return leaf(n)
def f(n):
try:
return g(n)
except OverflowError:
return -1
eval_func, t = self.check_auto_inlining(f, [int], multiplier=10,
call_count_check=True)
f_graph = graphof(t, f)
assert len(collect_called_graphs(f_graph, t)) == 0
result = eval_func([10])
assert result == 45
result = eval_func([15])
assert result == -1
开发者ID:TheDunn,项目名称:flex-pypy,代码行数:26,代码来源:test_inline.py
示例18: enum_direct_calls
def enum_direct_calls(translator, func):
blocks = []
graph = graphof(translator, func)
for block in graph.iterblocks():
for op in block.operations:
if op.opname == 'direct_call':
yield op
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:7,代码来源:test_rbuiltin.py
示例19: test_read_really
def test_read_really(self):
class A(object):
def __init__(self, y):
self.y = y
def f(self):
self.x = 1
return self.y
def h(flag):
obj = A(flag)
return obj.f()
t, wa = self.translate(h, [int])
hgraph = graphof(t, h)
op_call_f = hgraph.startblock.operations[-1]
# check that we fished the expected ops
assert op_call_f.opname == "direct_call"
assert get_funcobj(op_call_f.args[0].value)._name == 'A.f'
result = wa.analyze(op_call_f)
assert len(result) == 2
result = list(result)
result.sort()
[(struct1, T1, name1), (struct2, T2, name2)] = result
assert struct1 == "readstruct"
assert name1.endswith("y")
assert struct2 == "struct"
assert name2.endswith("x")
assert T1 == T2
开发者ID:alkorzt,项目名称:pypy,代码行数:29,代码来源:test_writeanalyze.py
示例20: test_dont_remove_with__del__
def test_dont_remove_with__del__(self):
import os
delcalls = [0]
class A(object):
nextid = 0
def __init__(self):
self.id = self.nextid
self.nextid += 1
def __del__(self):
delcalls[0] += 1
os.write(1, "__del__\n")
def f(x=int):
a = A()
i = 0
while i < x:
a = A()
os.write(1, str(delcalls[0]) + "\n")
i += 1
return 1
t = TranslationContext()
t.buildannotator().build_types(f, [int])
t.buildrtyper().specialize()
graph = graphof(t, f)
backend_optimizations(t)
op = graph.startblock.exits[0].target.exits[1].target.operations[0]
assert op.opname == "malloc"
开发者ID:antoine1fr,项目名称:pygirl,代码行数:28,代码来源:test_malloc.py
注:本文中的pypy.translator.translator.graphof函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论