def revealconst(self, T): if isinstance(T, lltype.Ptr): return lltype.cast_int_to_ptr(T, self.get_integer_value()) elif T is llmemory.Address: return llmemory.cast_int_to_adr(self.get_integer_value()) else: return lltype.cast_primitive(T, self.get_integer_value())
def cast_int_to_whatever(T, value): if isinstance(T, lltype.Ptr): return lltype.cast_int_to_ptr(T, value) elif T is llmemory.Address: return llmemory.cast_int_to_adr(value) else: return lltype.cast_primitive(T, value)
def test_name_gcref(): from pypy.rpython.lltypesystem import lltype, llmemory, rclass from pypy.translator.c import primitive from pypy.translator.c.database import LowLevelDatabase x = lltype.cast_int_to_ptr(rclass.OBJECTPTR, 19) y = lltype.cast_opaque_ptr(llmemory.GCREF, x) db = LowLevelDatabase() assert primitive.name_gcref(y, db) == "((void*) 19)"
def cast_int_to_adr(int): if isinstance(int, AddressAsInt): return int.adr try: ptr = lltype.cast_int_to_ptr(_NONGCREF, int) except ValueError: from pypy.rpython.lltypesystem import ll2ctypes ptr = ll2ctypes._int2obj[int]._as_ptr() return cast_ptr_to_adr(ptr)
def convert_const(self, value): if value._identity is _identity_for_ints: return lltype.cast_int_to_ptr(self.lowleveltype, value._x * 2 + 1) bk = self.rtyper.annotator.bookkeeper s_obj = value._identity.get_input_annotation(bk) r_obj = self.rtyper.getrepr(s_obj) if r_obj.lowleveltype is lltype.Void: return lltype.nullptr(self.lowleveltype.TO) v = r_obj.convert_const(value._x) return lltype.cast_opaque_ptr(self.lowleveltype, v)
def convert_const(self, value): if value._identity is _identity_for_ints: config = self.rtyper.annotator.translator.config assert config.translation.taggedpointers, "need to enable tagged pointers to use erase_int" return lltype.cast_int_to_ptr(self.lowleveltype, value._x * 2 + 1) bk = self.rtyper.annotator.bookkeeper s_obj = value._identity.get_input_annotation(bk) r_obj = self.rtyper.getrepr(s_obj) if r_obj.lowleveltype is lltype.Void: return lltype.nullptr(self.lowleveltype.TO) v = r_obj.convert_const(value._x) return lltype.cast_opaque_ptr(self.lowleveltype, v)
def ll_int_to_unboxed(PTRTYPE, value): return lltype.cast_int_to_ptr(PTRTYPE, value * 2 + 1)
def cast_int_to_adr(int): ptr = lltype.cast_int_to_ptr(_NONGCREF, int) return cast_ptr_to_adr(ptr)
def op_cast_int_to_ptr(self, RESTYPE, int1): return lltype.cast_int_to_ptr(RESTYPE, int1)
def ll_int_to_unboxed(PTRTYPE, value): return lltype.cast_int_to_ptr(PTRTYPE, value*2+1)