diff options
author | Adrian Thurston <thurston@complang.org> | 2015-02-15 10:57:08 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-02-15 10:57:08 -0500 |
commit | 2a54c2ef48d7ed512c3a2e38fd85440924960850 (patch) | |
tree | 695aeb7e443fe22fa9dfd2be6f861a2c12161311 | |
parent | a7bf3fea2087b0edf93bae8cc26557d9e6200b2b (diff) | |
download | colm-2a54c2ef48d7ed512c3a2e38fd85440924960850.tar.gz |
cleanup, including removal of map and list element pools
-rw-r--r-- | src/bytecode.c | 14 | ||||
-rw-r--r-- | src/iter.c | 12 | ||||
-rw-r--r-- | src/map.c | 4 | ||||
-rw-r--r-- | src/map.h | 2 | ||||
-rw-r--r-- | src/pool.c | 6 | ||||
-rw-r--r-- | src/program.c | 15 | ||||
-rw-r--r-- | src/program.h | 2 | ||||
-rw-r--r-- | src/struct.c | 2 | ||||
-rw-r--r-- | src/synthesis.cc | 2 | ||||
-rw-r--r-- | src/tree.c | 12 | ||||
-rw-r--r-- | src/tree.h | 12 |
11 files changed, 44 insertions, 39 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 42b2c8b6..80a346e4 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -2051,7 +2051,7 @@ again: Tree **stackRoot = vm_ptop(); long rootSize = vm_ssize(); - colm_init_list_iter( (ListIter*)mem, stackRoot, argSize, + colm_init_list_iter( (GenericIter*)mem, stackRoot, argSize, rootSize, &rootRef, genericId ); break; } @@ -2059,7 +2059,7 @@ again: short field; read_half( field ); - ListIter *iter = (ListIter*) vm_plocal(field); + GenericIter *iter = (GenericIter*) vm_plocal(field); debug( prg, REALM_BYTECODE, "IN_LIST_ITER_DESTROY %d\n", iter->yieldSize ); @@ -2072,7 +2072,7 @@ again: debug( prg, REALM_BYTECODE, "IN_LIST_ITER_ADVANCE\n" ); - ListIter *iter = (ListIter*) vm_plocal(field); + GenericIter *iter = (GenericIter*) vm_plocal(field); Tree *res = colm_list_iter_advance( prg, &sp, iter ); //treeUpref( res ); vm_push( res ); @@ -2084,7 +2084,7 @@ again: debug( prg, REALM_BYTECODE, "IN_MAP_ITER_ADVANCE\n" ); - ListIter *iter = (ListIter*) vm_plocal(field); + GenericIter *iter = (GenericIter*) vm_plocal(field); Tree *res = colm_map_iter_advance( prg, &sp, iter ); //treeUpref( res ); vm_push( res ); @@ -2096,7 +2096,7 @@ again: debug( prg, REALM_BYTECODE, "IN_GEN_ITER_GET_CUR_R\n" ); - ListIter *iter = (ListIter*) vm_plocal(field); + GenericIter *iter = (GenericIter*) vm_plocal(field); Tree *tree = colm_list_iter_deref_cur( prg, iter ); //treeUpref( tree ); vm_push( tree ); @@ -2108,7 +2108,7 @@ again: debug( prg, REALM_BYTECODE, "IN_GEN_VITER_GET_CUR_R\n" ); - ListIter *iter = (ListIter*) vm_plocal(field); + GenericIter *iter = (GenericIter*) vm_plocal(field); Value value = colm_viter_deref_cur( prg, iter ); vm_push_value( value ); break; @@ -3886,8 +3886,10 @@ again: assert( ( key == 0 ) ^ ( val != 0 ) ); Tree *obj = vm_pop(); + #if 0 if ( key != 0 ) mapUnremove( prg, (Map*)obj, key, val ); + #endif treeDownref( prg, sp, obj ); break; @@ -28,7 +28,7 @@ #define true 1 #define false 0 -void colm_init_list_iter( ListIter *listIter, Tree **stackRoot, +void colm_init_list_iter( GenericIter *listIter, Tree **stackRoot, long argSize, long rootSize, const Ref *rootRef, int genericId ) { listIter->type = IT_Tree; @@ -42,7 +42,7 @@ void colm_init_list_iter( ListIter *listIter, Tree **stackRoot, listIter->genericId = genericId; } -void colm_list_iter_destroy( Program *prg, Tree ***psp, ListIter *iter ) +void colm_list_iter_destroy( Program *prg, Tree ***psp, GenericIter *iter ) { if ( (int)iter->type != 0 ) { int i; @@ -57,7 +57,7 @@ void colm_list_iter_destroy( Program *prg, Tree ***psp, ListIter *iter ) } } -Tree *colm_list_iter_advance( Program *prg, Tree ***psp, ListIter *iter ) +Tree *colm_list_iter_advance( Program *prg, Tree ***psp, GenericIter *iter ) { Tree **sp = *psp; assert( iter->yieldSize == (vm_ssize() - iter->rootSize) ); @@ -88,7 +88,7 @@ Tree *colm_list_iter_advance( Program *prg, Tree ***psp, ListIter *iter ) return (iter->ref.kid ? prg->trueVal : prg->falseVal ); } -Tree *colm_map_iter_advance( Program *prg, Tree ***psp, ListIter *iter ) +Tree *colm_map_iter_advance( Program *prg, Tree ***psp, GenericIter *iter ) { Tree **sp = *psp; assert( iter->yieldSize == (vm_ssize() - iter->rootSize) ); @@ -119,7 +119,7 @@ Tree *colm_map_iter_advance( Program *prg, Tree ***psp, ListIter *iter ) return (iter->ref.kid ? prg->trueVal : prg->falseVal ); } -Tree *colm_list_iter_deref_cur( Program *prg, ListIter *iter ) +Tree *colm_list_iter_deref_cur( Program *prg, GenericIter *iter ) { GenericInfo *gi = &prg->rtd->genericInfo[iter->genericId]; ListEl *el = (ListEl*)iter->ref.kid; @@ -128,7 +128,7 @@ Tree *colm_list_iter_deref_cur( Program *prg, ListIter *iter ) return (Tree*)s; } -Value colm_viter_deref_cur( Program *prg, ListIter *iter ) +Value colm_viter_deref_cur( Program *prg, GenericIter *iter ) { GenericInfo *gi = &prg->rtd->genericInfo[iter->genericId]; ListEl *el = (ListEl*)iter->ref.kid; @@ -525,6 +525,7 @@ void mapRemoveEl( Map *map, MapEl *element, MapEl *filler ) return; } +#if 0 /* Recursive worker for tree copying. */ MapEl *mapCopyBranch( Program *prg, Map *map, MapEl *el, Kid *oldNextDown, Kid **newNextDown ) { @@ -552,6 +553,7 @@ MapEl *mapCopyBranch( Program *prg, Map *map, MapEl *el, Kid *oldNextDown, Kid * return newEl; } +#endif static long map_cmp( Program *prg, Map *map, const Tree *tree1, const Tree *tree2 ) { @@ -606,6 +608,7 @@ MapEl *mapInsertEl( Program *prg, Map *map, MapEl *element, MapEl **lastFound ) } } +#if 0 MapEl *mapInsertKey( Program *prg, Map *map, Tree *key, MapEl **lastFound ) { long keyRelation; @@ -646,6 +649,7 @@ MapEl *mapInsertKey( Program *prg, Map *map, Tree *key, MapEl **lastFound ) } } } +#endif MapEl *colm_map_insert( Program *prg, Map *map, MapEl *mapEl ) { @@ -70,7 +70,7 @@ MapEl *colm_map_find( Program *prg, Map *map, Tree *key ); MapEl *colm_vmap_insert( Program *prg, Map *map, Struct *key, Struct *value ); MapEl *colm_vmap_remove( Program *prg, Map *map, Tree *key ); -Tree *colm_map_iter_advance( Program *prg, Tree ***psp, ListIter *iter ); +Tree *colm_map_iter_advance( Program *prg, Tree ***psp, GenericIter *iter ); Tree *colm_vmap_find( Program *prg, Map *map, Tree *key ); #if defined(__cplusplus) @@ -200,6 +200,7 @@ long parseTreeNumLost( Program *prg ) * ListEl */ +#if 0 ListEl *listElAllocate( Program *prg ) { return (ListEl*) poolAllocAllocate( &prg->listElPool ); @@ -219,11 +220,13 @@ long listElNumLost( Program *prg ) { return poolAllocNumLost( &prg->listElPool ); } +#endif /* * MapEl */ +#if 0 MapEl *mapElAllocate( Program *prg ) { return (MapEl*) poolAllocAllocate( &prg->mapElPool ); @@ -243,6 +246,7 @@ long mapElNumLost( Program *prg ) { return poolAllocNumLost( &prg->mapElPool ); } +#endif /* * Head @@ -296,6 +300,7 @@ long locationNumLost( Program *prg ) * Stream */ +#if 0 Stream *streamAllocate( Program *prg ) { return (Stream*)mapElAllocate( prg ); @@ -305,3 +310,4 @@ void streamFree( Program *prg, Stream *stream ) { mapElFree( prg, (MapEl*)stream ); } +#endif diff --git a/src/program.c b/src/program.c index 66fe3509..791e29a8 100644 --- a/src/program.c +++ b/src/program.c @@ -183,8 +183,6 @@ Program *colm_new_program( RuntimeData *rtd ) initPoolAlloc( &prg->kidPool, sizeof(Kid) ); initPoolAlloc( &prg->treePool, sizeof(Tree) ); initPoolAlloc( &prg->parseTreePool, sizeof(ParseTree) ); - initPoolAlloc( &prg->listElPool, sizeof(ListEl) ); - initPoolAlloc( &prg->mapElPool, sizeof(MapEl) ); initPoolAlloc( &prg->headPool, sizeof(Head) ); initPoolAlloc( &prg->locationPool, sizeof(Location) ); @@ -287,17 +285,12 @@ int colm_delete_program( Program *prg ) treeDownref( prg, sp, prg->returnVal ); colm_clear_heap( prg, sp ); -// treeDownref( prg, sp, prg->trueVal ); -// treeDownref( prg, sp, prg->falseVal ); - treeDownref( prg, sp, prg->error ); #if DEBUG long kidLost = kidNumLost( prg ); long treeLost = treeNumLost( prg ); long parseTreeLost = parseTreeNumLost( prg ); - long listLost = listElNumLost( prg ); - long mapLost = mapElNumLost( prg ); long headLost = headNumLost( prg ); long locationLost = locationNumLost( prg ); @@ -310,12 +303,6 @@ int colm_delete_program( Program *prg ) if ( parseTreeLost ) message( "warning: lost parse trees: %ld\n", parseTreeLost ); - if ( listLost ) - message( "warning: lost listEls: %ld\n", listLost ); - - if ( mapLost ) - message( "warning: lost mapEls: %ld\n", mapLost ); - if ( headLost ) message( "warning: lost heads: %ld\n", headLost ); @@ -327,8 +314,6 @@ int colm_delete_program( Program *prg ) treeClear( prg ); headClear( prg ); parseTreeClear( prg ); - listElClear( prg ); - mapElClear( prg ); locationClear( prg ); RunBuf *rb = prg->allocRunBuf; diff --git a/src/program.h b/src/program.h index 94e8bb3c..9c9e2b00 100644 --- a/src/program.h +++ b/src/program.h @@ -124,8 +124,6 @@ struct colm_program PoolAlloc kidPool; PoolAlloc treePool; PoolAlloc parseTreePool; - PoolAlloc listElPool; - PoolAlloc mapElPool; PoolAlloc headPool; PoolAlloc locationPool; diff --git a/src/struct.c b/src/struct.c index 2f037244..a87ad82a 100644 --- a/src/struct.c +++ b/src/struct.c @@ -104,7 +104,7 @@ void colm_map_destroy( Program *prg, Tree **sp, struct colm_struct *s ) while ( el != 0 ) { MapEl *next = el->next; treeDownref( prg, sp, el->key ); - mapElFree( prg, el ); + //mapElFree( prg, el ); el = next; } } diff --git a/src/synthesis.cc b/src/synthesis.cc index 73a0efbf..bfc05370 100644 --- a/src/synthesis.cc +++ b/src/synthesis.cc @@ -294,7 +294,7 @@ long sizeOfField( UniqueType *fieldUT ) case IterDef::Map: case IterDef::List: - size = sizeof(ListIter) / sizeof(Word); + size = sizeof(GenericIter) / sizeof(Word); break; case IterDef::User: @@ -1460,12 +1460,13 @@ TreePair mapRemove( Program *prg, Map *map, Tree *key ) if ( mapEl != 0 ) { mapDetach( prg, map, mapEl ); result.key = mapEl->key; - mapElFree( prg, mapEl ); + //mapElFree( prg, mapEl ); } return result; } +#if 0 Tree *mapUnstore( Program *prg, Map *map, Tree *key, Tree *existing ) { Tree *stored = 0; @@ -1481,6 +1482,7 @@ Tree *mapUnstore( Program *prg, Map *map, Tree *key, Tree *existing ) } return stored; } +#endif Tree *mapFind( Program *prg, Map *map, Tree *key ) { @@ -1569,6 +1571,7 @@ Tree *getListMemSplit( Program *prg, List *list, Word field ) } +#if 0 int mapInsert( Program *prg, Map *map, Tree *key, Tree *element ) { MapEl *mapEl = mapInsertKey( prg, map, key, 0 ); @@ -1580,14 +1583,18 @@ int mapInsert( Program *prg, Map *map, Tree *key, Tree *element ) return false; } +#endif +#if 0 void mapUnremove( Program *prg, Map *map, Tree *key, Tree *element ) { MapEl *mapEl = mapInsertKey( prg, map, key, 0 ); assert( mapEl != 0 ); //mapEl->tree = element; } +#endif +#if 0 Tree *mapUninsert( Program *prg, Map *map, Tree *key ) { MapEl *el = mapDetachByKey( prg, map, key ); @@ -1596,7 +1603,9 @@ Tree *mapUninsert( Program *prg, Map *map, Tree *key ) // return val; return 0; } +#endif +#if 0 Tree *mapStore( Program *prg, Map *map, Tree *key, Tree *element ) { Tree *oldTree = 0; @@ -1613,6 +1622,7 @@ Tree *mapStore( Program *prg, Map *map, Tree *key, Tree *element ) return oldTree; } +#endif static Tree *treeSearchKid( Program *prg, Kid *kid, long id ) { @@ -184,7 +184,7 @@ typedef struct _ListIter long yieldSize; long rootSize; long genericId; -} ListIter; +} GenericIter; /* This must overlay tree iter because some of the same bytecodes are used. */ typedef struct _RevTreeIter @@ -342,18 +342,18 @@ void userIterDestroy2( struct colm_program *prg, Tree ***psp, UserIter *uiter ); Tree *castTree( struct colm_program *prg, int langElId, Tree *tree ); StreamImpl *streamToImpl( Stream *ptr ); -void colm_init_list_iter( ListIter *listIter, Tree **stackRoot, +void colm_init_list_iter( GenericIter *listIter, Tree **stackRoot, long argSize, long rootSize, const Ref *rootRef, int genericId ); -void colm_list_iter_destroy( struct colm_program *prg, Tree ***psp, ListIter *iter ); -Tree *colm_list_iter_advance( struct colm_program *prg, Tree ***psp, ListIter *iter ); -Tree *colm_list_iter_deref_cur( struct colm_program *prg, ListIter *iter ); +void colm_list_iter_destroy( struct colm_program *prg, Tree ***psp, GenericIter *iter ); +Tree *colm_list_iter_advance( struct colm_program *prg, Tree ***psp, GenericIter *iter ); +Tree *colm_list_iter_deref_cur( struct colm_program *prg, GenericIter *iter ); void colm_vlist_append( struct colm_program *prg, List *list, Value value ); void colm_vlist_prepend( struct colm_program *prg, List *list, Value value ); Value colm_vlist_detach_head( struct colm_program *prg, List *list ); Value colm_vlist_detach_tail( struct colm_program *prg, List *list ); -Value colm_viter_deref_cur( struct colm_program *prg, ListIter *iter ); +Value colm_viter_deref_cur( struct colm_program *prg, GenericIter *iter ); #if defined(__cplusplus) } |