Author: Ronan Lamy <[email protected]>
Branch: llconst
Changeset: r80100:3b4b18239cb8
Date: 2015-10-10 02:09 +0100
http://bitbucket.org/pypy/pypy/changeset/3b4b18239cb8/
Log: create ll_const()
diff --git a/rpython/rtyper/annlowlevel.py b/rpython/rtyper/annlowlevel.py
--- a/rpython/rtyper/annlowlevel.py
+++ b/rpython/rtyper/annlowlevel.py
@@ -13,7 +13,7 @@
from rpython.rtyper.lltypesystem import lltype, llmemory
from rpython.rlib.objectmodel import specialize
from rpython.rtyper import extregistry
-from rpython.rtyper.rmodel import warning, LLConstant
+from rpython.rtyper.rmodel import warning, LLConstant, ll_const
class KeyComp(object):
@@ -161,7 +161,7 @@
def constfunc(self, ll_function, args_s, s_result):
p = self.delayedfunction(ll_function, args_s, s_result)
- return LLConstant(p, lltype.typeOf(p))
+ return ll_const(p)
def graph2delayed(self, graph, FUNCTYPE=None):
if FUNCTYPE is None:
@@ -176,7 +176,7 @@
def graph2const(self, graph):
p = self.graph2delayed(graph)
- return LLConstant(p, lltype.typeOf(p))
+ return ll_const(p)
def getdelayedrepr(self, s_value, check_never_seen=True):
"""Like rtyper.getrepr(), but the resulting repr will not be setup() at
diff --git a/rpython/rtyper/controllerentry.py
b/rpython/rtyper/controllerentry.py
--- a/rpython/rtyper/controllerentry.py
+++ b/rpython/rtyper/controllerentry.py
@@ -201,7 +201,7 @@
from rpython.rtyper.lltypesystem import lltype
assert hop.s_result.is_constant()
hop.exception_cannot_occur()
- return hop.inputconst(lltype.Bool, hop.s_result.const)
+ return hop.inputconst(hop.s_result.const)
# ____________________________________________________________
diff --git a/rpython/rtyper/extfunc.py b/rpython/rtyper/extfunc.py
--- a/rpython/rtyper/extfunc.py
+++ b/rpython/rtyper/extfunc.py
@@ -1,6 +1,7 @@
from rpython.rtyper import extregistry
from rpython.rtyper.extregistry import ExtRegistryEntry
-from rpython.rtyper.lltypesystem.lltype import typeOf, FuncType, functionptr
+from rpython.rtyper.lltypesystem.lltype import FuncType, functionptr
+from rpython.rtyper.rmodel import ll_const
from rpython.annotator import model as annmodel
from rpython.annotator.signature import annotation
@@ -204,7 +205,7 @@
obj = functionptr(FT, name, _external_name=self.name,
_callable=fakeimpl,
_safe_not_sandboxed=self.safe_not_sandboxed)
- vlist = [hop.inputconst(typeOf(obj), obj)] + hop.inputargs(*args_r)
+ vlist = [ll_const(obj)] + hop.inputargs(*args_r)
hop.exception_is_here()
return hop.genop('direct_call', vlist, r_result)
diff --git a/rpython/rtyper/lltypesystem/lloperation.py
b/rpython/rtyper/lltypesystem/lloperation.py
--- a/rpython/rtyper/lltypesystem/lloperation.py
+++ b/rpython/rtyper/lltypesystem/lloperation.py
@@ -3,6 +3,7 @@
"""
from rpython.rtyper.extregistry import ExtRegistryEntry
+from rpython.rtyper.rmodel import ll_const
class LLOp(object):
@@ -118,7 +119,7 @@
def specialize_call(self, hop):
from rpython.rtyper.lltypesystem import lltype
hop.exception_cannot_occur()
- return hop.inputconst(lltype.Void, None)
+ return ll_const(None)
def enum_ops_without_sideeffects(raising_is_ok=False):
"""Enumerate operations that have no side-effects
diff --git a/rpython/rtyper/lltypesystem/rstr.py
b/rpython/rtyper/lltypesystem/rstr.py
--- a/rpython/rtyper/lltypesystem/rstr.py
+++ b/rpython/rtyper/lltypesystem/rstr.py
@@ -12,7 +12,7 @@
from rpython.rtyper.lltypesystem.lltype import (GcStruct, Signed, Array, Char,
UniChar, Ptr, malloc, Bool, Void, GcArray, nullptr, cast_primitive,
typeOf, staticAdtMethod, GcForwardReference)
-from rpython.rtyper.rmodel import inputconst, Repr
+from rpython.rtyper.rmodel import inputconst, Repr, ll_const
from rpython.rtyper.rint import IntegerRepr
from rpython.rtyper.rstr import (AbstractStringRepr, AbstractCharRepr,
AbstractUniCharRepr, AbstractStringIteratorRepr, AbstractLLHelpers,
@@ -1179,11 +1179,11 @@
elif code == 'x':
assert isinstance(r_arg, IntegerRepr)
vchunk = hop.gendirectcall(ll_str.ll_int2hex, vitem,
- inputconst(Bool, False))
+ ll_const(False))
elif code == 'o':
assert isinstance(r_arg, IntegerRepr)
vchunk = hop.gendirectcall(ll_str.ll_int2oct, vitem,
- inputconst(Bool, False))
+ ll_const(False))
else:
raise TyperError("%%%s is not RPython" % (code,))
else:
diff --git a/rpython/rtyper/rint.py b/rpython/rtyper/rint.py
--- a/rpython/rtyper/rint.py
+++ b/rpython/rtyper/rint.py
@@ -9,7 +9,7 @@
Char, UniChar, UnsignedLongLong, SignedLongLong, build_number, Number,
cast_primitive, typeOf, SignedLongLongLong)
from rpython.rtyper.rfloat import FloatRepr
-from rpython.rtyper.rmodel import inputconst, log
+from rpython.rtyper.rmodel import inputconst, log, ll_const
from rpython.tool.pairtype import pairtype
class IntegerRepr(FloatRepr):
@@ -158,15 +158,13 @@
from rpython.rtyper.lltypesystem.ll_str import ll_int2hex
self = self.as_int
varg = hop.inputarg(self, 0)
- true = inputconst(Bool, True)
- return hop.gendirectcall(ll_int2hex, varg, true)
+ return hop.gendirectcall(ll_int2hex, varg, ll_const(True))
def rtype_oct(self, hop):
from rpython.rtyper.lltypesystem.ll_str import ll_int2oct
self = self.as_int
varg = hop.inputarg(self, 0)
- true = inputconst(Bool, True)
- return hop.gendirectcall(ll_int2oct, varg, true)
+ return hop.gendirectcall(ll_int2oct, varg, ll_const(True))
_integer_reprs = {}
diff --git a/rpython/rtyper/rmodel.py b/rpython/rtyper/rmodel.py
--- a/rpython/rtyper/rmodel.py
+++ b/rpython/rtyper/rmodel.py
@@ -2,7 +2,8 @@
from rpython.flowspace.model import Constant
from rpython.rtyper.error import TyperError, MissingRTypeOperation
from rpython.rtyper.lltypesystem import lltype
-from rpython.rtyper.lltypesystem.lltype import Void, Bool, LowLevelType, Ptr
+from rpython.rtyper.lltypesystem.lltype import (
+ Void, Bool, LowLevelType, Ptr, typeOf)
from rpython.tool.pairtype import pairtype, extendabletype, pair
@@ -356,11 +357,15 @@
# ____________________________________________________________
class LLConstant(Constant):
+ """Low-level constant"""
__slots__ = ["concretetype"]
def __init__(self, value, concretetype):
Constant.__init__(self, value)
self.concretetype = concretetype
+def ll_const(obj):
+ """Convert an object into a LLConstant"""
+ return LLConstant(obj, typeOf(obj))
def inputconst(reqtype, value):
"""Return a LLConstant with the given value, of the requested type,
diff --git a/rpython/rtyper/rnone.py b/rpython/rtyper/rnone.py
--- a/rpython/rtyper/rnone.py
+++ b/rpython/rtyper/rnone.py
@@ -1,5 +1,6 @@
from rpython.annotator.model import SomeNone
-from rpython.rtyper.rmodel import Repr, TyperError, inputconst, LLConstant
+from rpython.rtyper.rmodel import (
+ Repr, TyperError, inputconst, LLConstant, ll_const)
from rpython.rtyper.lltypesystem.lltype import Void, Bool, Ptr, Char
from rpython.rtyper.lltypesystem.llmemory import Address
from rpython.rtyper.rpbc import SmallFunctionSetPBCRepr
@@ -43,7 +44,7 @@
class __extend__(pairtype(Repr, NoneRepr)):
def convert_from_to((r_from, _), v, llops):
- return inputconst(Void, None)
+ return ll_const(None)
def rtype_is_((robj1, rnone2), hop):
if hop.s_result.is_constant():
@@ -69,13 +70,13 @@
cnull = hop.inputconst(Address, robj1.null_instance())
return hop.genop('adr_eq', [v1, cnull], resulttype=Bool)
elif robj1 == none_repr:
- return hop.inputconst(Bool, True)
+ return ll_const(True)
elif isinstance(robj1, SmallFunctionSetPBCRepr):
if robj1.s_pbc.can_be_None:
v1 = hop.inputarg(robj1, pos)
return hop.genop('char_eq', [v1, inputconst(Char, '\000')],
resulttype=Bool)
else:
- return inputconst(Bool, False)
+ return ll_const(False)
else:
raise TyperError('rtype_is_None of %r' % (robj1))
diff --git a/rpython/rtyper/rpbc.py b/rpython/rtyper/rpbc.py
--- a/rpython/rtyper/rpbc.py
+++ b/rpython/rtyper/rpbc.py
@@ -16,8 +16,9 @@
from rpython.rtyper.lltypesystem.lltype import (
typeOf, Void, ForwardReference, Struct, Bool, Char, Ptr, malloc, nullptr,
Array, Signed, cast_pointer, getfunctionptr)
-from rpython.rtyper.rmodel import (Repr, inputconst, CanBeNull, mangle,
- warning, impossible_repr, LLConstant)
+from rpython.rtyper.rmodel import (
+ Repr, inputconst, CanBeNull, mangle, warning, impossible_repr,
+ LLConstant, ll_const)
from rpython.tool.pairtype import pair, pairtype
from rpython.translator.unsimplify import varoftype
@@ -332,7 +333,7 @@
row_of_one_graph = self.callfamily.calltables[shape][index]
graph = row_of_one_graph[funcdesc]
llfn = self.rtyper.getcallable(graph)
- return inputconst(typeOf(llfn), llfn)
+ return ll_const(llfn)
def get_unique_llfn(self):
# try to build a unique low-level function. Avoid to use
@@ -356,7 +357,7 @@
if graphs != [graph] * len(graphs):
raise TyperError("cannot pass a specialized function here")
llfn = self.rtyper.getcallable(graph)
- return inputconst(typeOf(llfn), llfn)
+ return ll_const(llfn)
def get_concrete_llfn(self, s_pbc, args_s, op):
bk = self.rtyper.annotator.bookkeeper
@@ -365,8 +366,7 @@
with bk.at_position(None):
graph = funcdesc.get_graph(args, op)
llfn = self.rtyper.getcallable(graph)
- return inputconst(typeOf(llfn), llfn)
-
+ return ll_const(llfn)
class __extend__(pairtype(FunctionRepr, FunctionRepr)):
@@ -379,7 +379,7 @@
class __extend__(pairtype(FunctionsPBCRepr, FunctionRepr)):
def convert_from_to((r_fpbc1, r_fpbc2), v, llops):
- return inputconst(Void, None)
+ return ll_const(None)
class __extend__(pairtype(FunctionsPBCRepr, FunctionsPBCRepr)):
def convert_from_to((r_fpbc1, r_fpbc2), v, llops):
@@ -421,7 +421,7 @@
pointer_table[i] = self.pointer_repr.convert_desc(desc)
else:
pointer_table[i] = self.pointer_repr.convert_const(None)
- self.c_pointer_table = inputconst(Ptr(POINTER_TABLE), pointer_table)
+ self.c_pointer_table = ll_const(pointer_table)
def convert_desc(self, funcdesc):
return chr(self.descriptions.index(funcdesc))
@@ -441,7 +441,7 @@
graph = self.make_dispatcher(shape, index, argtypes, resulttype)
self.rtyper.annotator.translator.graphs.append(graph)
ll_ret = getfunctionptr(graph)
- c_ret = self._dispatch_cache[key] = inputconst(typeOf(ll_ret), ll_ret)
+ c_ret = self._dispatch_cache[key] = ll_const(ll_ret)
return c_ret
def make_dispatcher(self, shape, index, argtypes, resulttype):
@@ -460,7 +460,7 @@
args_v = [varoftype(t) for t in argtypes]
b = Block(args_v)
llfn = self.rtyper.getcallable(row_of_graphs[desc])
- v_fn = inputconst(typeOf(llfn), llfn)
+ v_fn = ll_const(llfn)
v_result = varoftype(resulttype)
b.operations.append(
SpaceOperation("direct_call", [v_fn] + args_v, v_result))
@@ -491,7 +491,7 @@
def rtype_bool(self, hop):
if not self.s_pbc.can_be_None:
- return inputconst(Bool, True)
+ return ll_const(True)
else:
v1, = hop.inputargs(self)
return hop.genop('char_ne', [v1, inputconst(Char, '\000')],
@@ -500,7 +500,7 @@
class __extend__(pairtype(SmallFunctionSetPBCRepr, FunctionRepr)):
def convert_from_to((r_set, r_ptr), v, llops):
- return inputconst(Void, None)
+ return ll_const(None)
class __extend__(pairtype(SmallFunctionSetPBCRepr, FunctionsPBCRepr)):
def convert_from_to((r_set, r_ptr), v, llops):
diff --git a/rpython/rtyper/rptr.py b/rpython/rtyper/rptr.py
--- a/rpython/rtyper/rptr.py
+++ b/rpython/rtyper/rptr.py
@@ -4,7 +4,7 @@
from rpython.rlib.rarithmetic import r_uint
from rpython.rtyper.error import TyperError
from rpython.rtyper.lltypesystem import lltype
-from rpython.rtyper.rmodel import Repr, inputconst
+from rpython.rtyper.rmodel import Repr, inputconst, ll_const
from rpython.rtyper.rint import IntegerRepr
from rpython.tool.pairtype import pairtype
@@ -100,7 +100,7 @@
opname = 'direct_call'
else:
opname = 'indirect_call'
- vlist.append(inputconst(lltype.Void, None))
+ vlist.append(ll_const(None))
hop.exception_is_here()
return hop.genop(opname, vlist,
resulttype = self.lowleveltype.TO.RESULT)
diff --git a/rpython/rtyper/rrange.py b/rpython/rtyper/rrange.py
--- a/rpython/rtyper/rrange.py
+++ b/rpython/rtyper/rrange.py
@@ -2,7 +2,7 @@
from rpython.rtyper.error import TyperError
from rpython.rtyper.lltypesystem.lltype import Signed, Void, Ptr
from rpython.rtyper.rlist import dum_nocheck, dum_checkidx
-from rpython.rtyper.rmodel import Repr, IteratorRepr
+from rpython.rtyper.rmodel import Repr, IteratorRepr, ll_const
from rpython.rtyper.rint import IntegerRepr
from rpython.tool.pairtype import pairtype
@@ -94,9 +94,9 @@
# Irregular operations.
def rtype_builtin_range(hop):
- vstep = hop.inputconst(Signed, 1)
+ vstep = ll_const(1)
if hop.nb_args == 1:
- vstart = hop.inputconst(Signed, 0)
+ vstart = ll_const(0)
vstop, = hop.inputargs(Signed)
elif hop.nb_args == 2:
vstart, vstop = hop.inputargs(Signed, Signed)
diff --git a/rpython/rtyper/rtyper.py b/rpython/rtyper/rtyper.py
--- a/rpython/rtyper/rtyper.py
+++ b/rpython/rtyper/rtyper.py
@@ -24,7 +24,8 @@
from rpython.rtyper.lltypesystem.lltype import (Signed, Void, LowLevelType,
Ptr, ContainerType, FuncType, functionptr, typeOf, RuntimeTypeInfo,
attachRuntimeTypeInfo, Primitive, getfunctionptr)
-from rpython.rtyper.rmodel import Repr, inputconst, BrokenReprTyperError
+from rpython.rtyper.rmodel import (
+ Repr, inputconst, BrokenReprTyperError, ll_const)
from rpython.rtyper import rclass
from rpython.rtyper.rclass import RootClassRepr
from rpython.tool.pairtype import pair
@@ -871,7 +872,7 @@
# build the 'direct_call' operation
f = self.rtyper.getcallable(graph)
- c = inputconst(typeOf(f), f)
+ c = ll_const(f)
fobj = f._obj
return self.genop('direct_call', [c]+newargs_v,
resulttype = typeOf(fobj).RESULT)
@@ -882,14 +883,14 @@
argtypes = [v.concretetype for v in args_v]
FUNCTYPE = FuncType(argtypes, resulttype or Void)
f = functionptr(FUNCTYPE, fnname, **flags)
- cf = inputconst(typeOf(f), f)
+ cf = ll_const(f)
return self.genop('direct_call', [cf]+list(args_v), resulttype)
def gencapicall(self, cfnname, args_v, resulttype=None, **flags):
return self.genexternalcall(cfnname, args_v, resulttype=resulttype,
external="CPython", **flags)
def genconst(self, ll_value):
- return inputconst(typeOf(ll_value), ll_value)
+ return ll_const(ll_value)
def genvoidconst(self, placeholder):
return inputconst(Void, placeholder)
diff --git a/rpython/rtyper/rvirtualizable.py b/rpython/rtyper/rvirtualizable.py
--- a/rpython/rtyper/rvirtualizable.py
+++ b/rpython/rtyper/rvirtualizable.py
@@ -1,4 +1,4 @@
-from rpython.rtyper.rmodel import inputconst, log
+from rpython.rtyper.rmodel import inputconst, log, ll_const
from rpython.rtyper.lltypesystem import lltype, llmemory
from rpython.rtyper.rclass import (FieldListAccessor, InstanceRepr)
@@ -55,7 +55,7 @@
def replace_force_virtualizable_with_call(graphs, VTYPEPTR, funcptr):
# funcptr should be a function pointer with a VTYPEPTR argument
- c_funcptr = inputconst(lltype.typeOf(funcptr), funcptr)
+ c_funcptr = ll_const(funcptr)
count = 0
for graph in graphs:
for block in graph.iterblocks():
diff --git a/rpython/translator/backendopt/constfold.py
b/rpython/translator/backendopt/constfold.py
--- a/rpython/translator/backendopt/constfold.py
+++ b/rpython/translator/backendopt/constfold.py
@@ -1,6 +1,6 @@
from rpython.flowspace.model import (Variable, SpaceOperation,
mkentrymap)
-from rpython.rtyper.rmodel import LLConstant
+from rpython.rtyper.rmodel import LLConstant, ll_const
from rpython.rtyper.lltypesystem import lltype
from rpython.rtyper.lltypesystem.lloperation import llop
from rpython.translator.unsimplify import insert_empty_block, split_block
diff --git a/rpython/translator/backendopt/inline.py
b/rpython/translator/backendopt/inline.py
--- a/rpython/translator/backendopt/inline.py
+++ b/rpython/translator/backendopt/inline.py
@@ -2,7 +2,7 @@
from rpython.flowspace.model import (Variable, Constant, Block, Link,
SpaceOperation, FunctionGraph, mkentrymap)
-from rpython.rtyper.rmodel import LLConstant, inputconst
+from rpython.rtyper.rmodel import LLConstant, ll_const
from rpython.rtyper.lltypesystem.lltype import Bool, Signed, typeOf, Void,
Ptr, normalizeptr
from rpython.tool.algo import sparsemat
from rpython.translator.backendopt import removenoops
@@ -357,7 +357,7 @@
#XXXXX don't look: insert blocks that do exception matching
#for the cases where direct matching did not work
ll_exc_match = self.translator.rtyper.exceptiondata.fn_exception_match
- exc_match = inputconst(typeOf(ll_exc_match), ll_exc_match)
+ exc_match = ll_const(ll_exc_match)
blocks = []
for i, link in enumerate(afterblock.exits[1:]):
etype = copiedexceptblock.inputargs[0].copy()
@@ -366,8 +366,7 @@
block = Block([etype, evalue] + passon_vars)
res = Variable()
res.concretetype = Bool
- exitcase = link.llexitcase
- cexitcase = LLConstant(exitcase, typeOf(exitcase))
+ cexitcase = ll_const(link.llexitcase)
args = [exc_match, etype, cexitcase]
block.operations.append(SpaceOperation("direct_call", args, res))
block.exitswitch = res
diff --git a/rpython/translator/backendopt/malloc.py
b/rpython/translator/backendopt/malloc.py
--- a/rpython/translator/backendopt/malloc.py
+++ b/rpython/translator/backendopt/malloc.py
@@ -1,7 +1,7 @@
from rpython.flowspace.model import Variable, Constant, SpaceOperation
from rpython.tool.algo.unionfind import UnionFind
from rpython.rtyper.lltypesystem import lltype
-from rpython.rtyper.rmodel import LLConstant
+from rpython.rtyper.rmodel import LLConstant, ll_const
from rpython.translator import simplify
from rpython.translator.backendopt import removenoops
from rpython.translator.backendopt.support import log
@@ -456,7 +456,7 @@
from rpython.rtyper.lltypesystem.rstr import string_repr
msg = "unreachable operation (from malloc.py)"
ll_msg = string_repr.convert_const(msg)
- c_msg = LLConstant(ll_msg, lltype.typeOf(ll_msg))
+ c_msg = ll_const(ll_msg)
return SpaceOperation("debug_fatalerror", [c_msg], v_result)
def flowin_op(self, op, vars, newvarsmap):
diff --git a/rpython/translator/backendopt/mallocv.py
b/rpython/translator/backendopt/mallocv.py
--- a/rpython/translator/backendopt/mallocv.py
+++ b/rpython/translator/backendopt/mallocv.py
@@ -7,7 +7,7 @@
from rpython.rtyper.lltypesystem.lltype import getfunctionptr
from rpython.rtyper.lltypesystem import lltype
from rpython.rtyper.lltypesystem.lloperation import llop
-from rpython.rtyper.rmodel import LLConstant
+from rpython.rtyper.rmodel import LLConstant, ll_const
def virtualize_mallocs(translator, graphs, verbose=False):
@@ -792,7 +792,7 @@
from rpython.rtyper.lltypesystem.rstr import string_repr
msg = 'unreachable: %s' % (op,)
ll_msg = string_repr.convert_const(msg)
- c_msg = LLConstant(ll_msg, lltype.typeOf(ll_msg))
+ c_msg = ll_const(ll_msg)
newresult = self.make_rt_result(op.result)
return [SpaceOperation('debug_fatalerror', [c_msg], newresult)]
@@ -937,7 +937,7 @@
def handle_residual_call(self, op, newgraph, newnodes):
fspecptr = getfunctionptr(newgraph)
- newargs = [LLConstant(fspecptr, concretetype=lltype.typeOf(fspecptr))]
+ newargs = [ll_const(fspecptr)]
newargs += self.expand_nodes(newnodes)
newresult = self.make_rt_result(op.result)
newop = SpaceOperation('direct_call', newargs, newresult)
diff --git a/rpython/translator/backendopt/support.py
b/rpython/translator/backendopt/support.py
--- a/rpython/translator/backendopt/support.py
+++ b/rpython/translator/backendopt/support.py
@@ -1,7 +1,7 @@
import py
from rpython.rtyper.lltypesystem import lltype
-from rpython.rtyper.rmodel import inputconst
+from rpython.rtyper.rmodel import ll_const
from rpython.tool.ansi_print import ansi_log
from rpython.translator.simplify import get_graph
@@ -22,10 +22,11 @@
yield op
def annotate(translator, func, result, args):
- args = [arg.concretetype for arg in args]
- graph = translator.rtyper.annotate_helper(func, args)
- fptr = lltype.functionptr(lltype.FuncType(args, result.concretetype),
func.func_name, graph=graph)
- c = inputconst(lltype.typeOf(fptr), fptr)
+ args = [arg.concretetype for arg in args]
+ graph = translator.rtyper.annotate_helper(func, args)
+ fptr = lltype.functionptr(lltype.FuncType(args, result.concretetype),
+ func.func_name, graph=graph)
+ c = ll_const(fptr)
return c
def var_needsgc(var):
diff --git a/rpython/translator/exceptiontransform.py
b/rpython/translator/exceptiontransform.py
--- a/rpython/translator/exceptiontransform.py
+++ b/rpython/translator/exceptiontransform.py
@@ -8,7 +8,7 @@
from rpython.rtyper.lltypesystem import lloperation
from rpython.rtyper.rclass import ll_inst_type
from rpython.rtyper import rtyper
-from rpython.rtyper.rmodel import inputconst, LLConstant
+from rpython.rtyper.rmodel import inputconst, LLConstant, ll_const
from rpython.rlib.rarithmetic import r_uint, r_longlong, r_ulonglong
from rpython.rlib.rarithmetic import r_singlefloat, r_longfloat
from rpython.rlib.debug import ll_assert
@@ -43,9 +43,6 @@
def error_constant(T):
return LLConstant(error_value(T), T)
-def constant_value(llvalue):
- return LLConstant(llvalue, lltype.typeOf(llvalue))
-
class ExceptionTransformer(object):
def __init__(self, translator):
@@ -62,9 +59,9 @@
(n_i_error_ll_exc_type,
n_i_error_ll_exc) = self.get_builtin_exception(NotImplementedError)
- self.c_assertion_error_ll_exc_type = constant_value(
+ self.c_assertion_error_ll_exc_type = ll_const(
assertion_error_ll_exc_type)
- self.c_n_i_error_ll_exc_type = constant_value(n_i_error_ll_exc_type)
+ self.c_n_i_error_ll_exc_type = ll_const(n_i_error_ll_exc_type)
def rpyexc_occured():
exc_type = exc_data.exc_type
@@ -469,7 +466,7 @@
def constant_func(self, name, inputtypes, rettype, graph, **kwds):
FUNC_TYPE = lltype.FuncType(inputtypes, rettype)
fn_ptr = lltype.functionptr(FUNC_TYPE, name, graph=graph, **kwds)
- return LLConstant(fn_ptr, lltype.Ptr(FUNC_TYPE))
+ return ll_const(fn_ptr)
def gen_getfield(self, name, llops):
c_name = inputconst(lltype.Void, name)
diff --git a/rpython/translator/transform.py b/rpython/translator/transform.py
--- a/rpython/translator/transform.py
+++ b/rpython/translator/transform.py
@@ -9,7 +9,7 @@
SpaceOperation, Variable, Constant, Link, checkgraph)
from rpython.annotator import model as annmodel
from rpython.rtyper.lltypesystem import lltype
-from rpython.rtyper.rmodel import inputconst
+from rpython.rtyper.rmodel import ll_const
def checkgraphs(self, blocks):
seen = set()
@@ -206,8 +206,7 @@
graph = rtyper.annotate_helper(stack_check, [])
rtyper.specialize_more_blocks()
stack_check_ptr = rtyper.getcallable(graph)
- stack_check_ptr_const = inputconst(lltype.typeOf(stack_check_ptr),
- stack_check_ptr)
+ stack_check_ptr_const = ll_const(stack_check_ptr)
edges = set()
insert_in = set()
block2graph = {}
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit