Esempio n. 1
0
pch_status PCHWriteTypeSigs( void )
{
    auto carve_walk_base data;

    PCHWriteCVIndex( (cv_index)TypeSigGetIndex( type_sigs ) );
    CarveWalkAllFree( carveTYPE_SIG, markFreeTypeSig );
    CarveWalkAll( carveTYPE_SIG, saveTypeSig, &data );
    PCHWriteCVIndex( CARVE_NULL_INDEX );
    return( PCHCB_OK );
}
Esempio n. 2
0
pch_status PCHInitRewrites( bool writing )
{
    if( writing ) {
        PCHWriteCVIndex( CarveLastValidIndex( carveREWRITE ) );
        PCHWriteCVIndex( CarveLastValidIndex( carveREWRITE_TOKENS ) );
        PCHWriteCVIndex( CarveLastValidIndex( carveSRCFILE_HANDLE ) );
    } else {
        carveREWRITE = CarveRestart( carveREWRITE );
        CarveMapOptimize( carveREWRITE, PCHReadCVIndex() );
        carveREWRITE_TOKENS = CarveRestart( carveREWRITE_TOKENS );
        CarveMapOptimize( carveREWRITE_TOKENS, PCHReadCVIndex() );
        carveSRCFILE_HANDLE = CarveRestart( carveSRCFILE_HANDLE );
        CarveMapOptimize( carveSRCFILE_HANDLE, PCHReadCVIndex() );
    }
    return( PCHCB_OK );
}
Esempio n. 3
0
static void saveRewrite( void *e, carve_walk_base *d )
{
    REWRITE *s = e;
    REWRITE_TOKENS *save_list;
    REWRITE_TOKENS *save_curr;
    SRCFILE_HANDLE *h;
    uint_8 *save_stream;

    if( s->free ) {
        return;
    }
    save_stream = s->stream;
    save_list = s->list;
    save_curr = s->curr;
    s->stream = _TokenPosGetIndex( s );  // must be first
    s->list = RewriteTokensGetIndex( save_list );
    s->curr = RewriteTokensGetIndex( save_curr );
    PCHWriteCVIndex( d->index );
    PCHWriteVar( *s );
    for( h = s->srcfiles_refd; h != NULL; h = h->next ) {
        SrcFilePCHWrite( h->srcfile );
    }
    PCHWriteCVIndexTerm();
    s->list = save_list;
    s->curr = save_curr;
    s->stream = save_stream;
}
Esempio n. 4
0
pch_status PCHInitConstantPool( bool writing )
{
    if( writing ) {
        PCHWriteCVIndex( CarveLastValidIndex( carvePOOL_CON ) );
    } else {
        carvePOOL_CON = CarveRestart( carvePOOL_CON );
        CarveMapOptimize( carvePOOL_CON, PCHReadCVIndex() );
    }
    return( PCHCB_OK );
}
Esempio n. 5
0
pch_status PCHInitTypeSigs( bool writing )
{
    if( writing ) {
        PCHWriteCVIndex( CarveLastValidIndex( carveTYPE_SIG ) );
    } else {
        carveTYPE_SIG = CarveRestart( carveTYPE_SIG );
        CarveMapOptimize( carveTYPE_SIG, PCHReadCVIndex() );
    }
    return( PCHCB_OK );
}
Esempio n. 6
0
pch_status PCHInitTokenLocns( bool writing )
{
    if( writing ) {
        PCHWriteCVIndex( CarveLastValidIndex( carveSYMBOL_LOCN ) );
    } else {
        carveSYMBOL_LOCN = CarveRestart( carveSYMBOL_LOCN );
        CarveMapOptimize( carveSYMBOL_LOCN, PCHReadCVIndex() );
    }
    return( PCHCB_OK );
}
Esempio n. 7
0
static void saveRewriteTokens( void *e, carve_walk_base *d )
{
    REWRITE_TOKENS *s = e;
    REWRITE_TOKENS *save_next;

    if( s->free ) {
        return;
    }
    save_next = s->next;
    s->next = RewriteTokensGetIndex( save_next );
    PCHWriteCVIndex( d->index );
    PCHWriteVar( *s );
    s->next = save_next;
}
Esempio n. 8
0
static void saveConstant( void *e, carve_walk_base *d )
{
    POOL_CON *fcon = e;
    POOL_CON *save_next;

    if( fcon->free ) {
        return;
    }
    save_next = fcon->next;
    fcon->next = ConstantPoolGetIndex( save_next );
    PCHWriteCVIndex( d->index );
    PCHWriteVar( *fcon );
    if( fcon->flt ) {
        PCHWrite( fcon->u.s.fp_constant, fcon->u.s.len );
    }
    fcon->next = save_next;
}
Esempio n. 9
0
static void saveTokenLocn( void *e, carve_walk_base *d )
{
    SYM_TOKEN_LOCN *b = e;
    SRCFILE save_src_file;

    if( b->u.dwh == -1 ) {
        return;
    }
    DbgAssert( b->u.dwh == 0 );
    save_src_file = b->tl.src_file;
    b->tl.src_file = SrcFileGetIndex( save_src_file );
#ifndef NDEBUG
    if( b->u.dwh != 0 ) {
        CFatal( "token locn contains dwarf info!" );
    }
#endif
    PCHWriteCVIndex( d->index );
    PCHWriteVar( *b );
    b->tl.src_file = save_src_file;
}
Esempio n. 10
0
static void saveTypeSig( void *e, carve_walk_base *d )
{
    TYPE_SIG *s = e;
    TYPE_SIG *save_next;
    TYPE_SIG *save_base;
    TYPE save_type;
    SYMBOL save_sym;
    SYMBOL save_dtor;
    SYMBOL save_default_ctor;
    SYMBOL save_copy_ctor;

    if( s->free ) {
        return;
    }
    save_next = s->next;
    s->next = TypeSigGetIndex( save_next );
    save_base = s->base;
    s->base = TypeSigGetIndex( save_base );
    save_type = s->type;
    s->type = TypeGetIndex( save_type );
    save_sym = s->sym;
    s->sym = SymbolGetIndex( save_sym );
    save_dtor = s->dtor;
    s->dtor = SymbolGetIndex( save_dtor );
    save_default_ctor = s->default_ctor;
    s->default_ctor = SymbolGetIndex( save_default_ctor );
    save_copy_ctor = s->copy_ctor;
    s->copy_ctor = SymbolGetIndex( save_copy_ctor );
    PCHWriteCVIndex( d->index );
    PCHWriteVar( *s );
    s->next = save_next;
    s->base = save_base;
    s->type = save_type;
    s->sym = save_sym;
    s->dtor = save_dtor;
    s->default_ctor = save_default_ctor;
    s->copy_ctor = save_copy_ctor;
}