예제 #1
0
 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())
예제 #2
0
 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())
예제 #3
0
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)
예제 #4
0
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)"
예제 #5
0
파일: test_rtagged.py 프로젝트: njues/Sypy
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)"
예제 #6
0
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)
예제 #7
0
 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)
예제 #8
0
 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)
예제 #9
0
파일: rerased.py 프로젝트: purepython/pypy
 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)
예제 #10
0
def ll_int_to_unboxed(PTRTYPE, value):
    return lltype.cast_int_to_ptr(PTRTYPE, value * 2 + 1)
예제 #11
0
def cast_int_to_adr(int):
    ptr = lltype.cast_int_to_ptr(_NONGCREF, int)
    return cast_ptr_to_adr(ptr)
예제 #12
0
def cast_int_to_adr(int):
    ptr = lltype.cast_int_to_ptr(_NONGCREF, int)
    return cast_ptr_to_adr(ptr)
예제 #13
0
 def op_cast_int_to_ptr(self, RESTYPE, int1):
     return lltype.cast_int_to_ptr(RESTYPE, int1)
예제 #14
0
파일: llinterp.py 프로젝트: chyyuu/pygirl
 def op_cast_int_to_ptr(self, RESTYPE, int1):
     return lltype.cast_int_to_ptr(RESTYPE, int1)
예제 #15
0
파일: rtagged.py 프로젝트: alkorzt/pypy
def ll_int_to_unboxed(PTRTYPE, value):
    return lltype.cast_int_to_ptr(PTRTYPE, value*2+1)