Exemplo n.º 1
0
 def read_boxes(cpu, virtualizable):
     assert lltype.typeOf(virtualizable) == llmemory.GCREF
     virtualizable = cast_gcref_to_vtype(virtualizable)
     boxes = []
     for _, fieldname in unroll_static_fields:
         x = getattr(virtualizable, fieldname)
         boxes.append(wrap(cpu, x))
     for _, fieldname in unroll_array_fields:
         lst = getattr(virtualizable, fieldname)
         for i in range(getlength(lst)):
             boxes.append(wrap(cpu, getarrayitem(lst, i)))
     return boxes
Exemplo n.º 2
0
 def read_boxes(cpu, virtualizable):
     assert lltype.typeOf(virtualizable) == llmemory.GCREF
     virtualizable = cast_gcref_to_vtype(virtualizable)
     boxes = []
     for _, fieldname in unroll_static_fields:
         x = getattr(virtualizable, fieldname)
         boxes.append(wrap(cpu, x))
     for _, fieldname in unroll_array_fields:
         lst = getattr(virtualizable, fieldname)
         for i in range(getlength(lst)):
             boxes.append(wrap(cpu, getarrayitem(lst, i)))
     return boxes
Exemplo n.º 3
0
def test_wrap():
    def _is(box1, box2):
        return (box1.__class__ == box2.__class__ and
                box1.getvalue() == box2.getvalue())
    p = lltype.malloc(lltype.GcStruct('S'))
    po = lltype.cast_opaque_ptr(llmemory.GCREF, p)
    assert _is(wrap(None, 42), InputArgInt(42))
    assert _is(wrap(None, 42.5), boxfloat(42.5))
    assert _is(wrap(None, p), InputArgRef(po))
    assert _is(wrap(None, 42, in_const_box=True), ConstInt(42))
    assert _is(wrap(None, 42.5, in_const_box=True), constfloat(42.5))
    assert _is(wrap(None, p, in_const_box=True), ConstPtr(po))
    if longlong.supports_longlong:
        import sys
        from rpython.rlib.rarithmetic import r_longlong, r_ulonglong
        value = r_longlong(-sys.maxint*17)
        assert _is(wrap(None, value), InputArgFloat(value))
        assert _is(wrap(None, value, in_const_box=True), ConstFloat(value))
        value_unsigned = r_ulonglong(-sys.maxint*17)
        assert _is(wrap(None, value_unsigned), InputArgFloat(value))
    sfval = r_singlefloat(42.5)
    ival = longlong.singlefloat2int(sfval)
    assert _is(wrap(None, sfval), InputArgInt(ival))
    assert _is(wrap(None, sfval, in_const_box=True), ConstInt(ival))
Exemplo n.º 4
0
def test_wrap():
    def _is(box1, box2):
        return (box1.__class__ == box2.__class__ and
                box1.value == box2.value)
    p = lltype.malloc(lltype.GcStruct('S'))
    po = lltype.cast_opaque_ptr(llmemory.GCREF, p)
    assert _is(wrap(None, 42), BoxInt(42))
    assert _is(wrap(None, 42.5), boxfloat(42.5))
    assert _is(wrap(None, p), BoxPtr(po))
    assert _is(wrap(None, 42, in_const_box=True), ConstInt(42))
    assert _is(wrap(None, 42.5, in_const_box=True), constfloat(42.5))
    assert _is(wrap(None, p, in_const_box=True), ConstPtr(po))
    if longlong.supports_longlong:
        import sys
        from rpython.rlib.rarithmetic import r_longlong, r_ulonglong
        value = r_longlong(-sys.maxint*17)
        assert _is(wrap(None, value), BoxFloat(value))
        assert _is(wrap(None, value, in_const_box=True), ConstFloat(value))
        value_unsigned = r_ulonglong(-sys.maxint*17)
        assert _is(wrap(None, value_unsigned), BoxFloat(value))
    sfval = r_singlefloat(42.5)
    ival = longlong.singlefloat2int(sfval)
    assert _is(wrap(None, sfval), BoxInt(ival))
    assert _is(wrap(None, sfval, in_const_box=True), ConstInt(ival))