Example #1
0
void dumpJstring(O obj)
{
    Assert_ASSERT(obj);
    Assert_ASSERT(value_offset);

    O c = OBJECT_DATA(obj, value_offset - 1, O);

    dumpChar(c);
}
void dumpPtd( __bytefield__ *f, __WORD__ pos ) {
    __WORD__ addr = (__WORD__)f->field + pos;
    __BWORD__ bptd = __boxptd(_A1_, addr);
    __WORD__ nextpos = pos;
    __WORD__ slen;
    __WORD__ stail;
    __WORD__ spad;

    switch (__boxsubtype(_A1_, bptd)) {
    case __VEC_TYPE__:
        dumpVec(f, pos);

        nextpos += (__unboxint(_A1_, __vectorLength(_A1_, bptd)) * __WORDSIZE__) + sizeof(__vector__);
        break;

    case __STR_TYPE__:
        dumpStr(f, pos);

        slen = __unboxint(_A1_, __stringLength(_A1_, bptd)) + 1;
        stail = (slen % __WORDSIZE__);
        spad = 0;
        if (stail != 0)
            spad = __WORDSIZE__ - stail;
        nextpos +=  slen + spad + sizeof(__string__);
        break;

    case __CHAR_TYPE__:
        dumpChar(f, pos);

        nextpos += sizeof(__char__);
        break;

    default:
        printf("Unrecognized object type.");
        exit(__FAIL__);
    }

    dumpObject(f, nextpos);
}