summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-02-15 10:57:08 -0500
committerAdrian Thurston <thurston@complang.org>2015-02-15 10:57:08 -0500
commit2a54c2ef48d7ed512c3a2e38fd85440924960850 (patch)
tree695aeb7e443fe22fa9dfd2be6f861a2c12161311
parenta7bf3fea2087b0edf93bae8cc26557d9e6200b2b (diff)
downloadcolm-2a54c2ef48d7ed512c3a2e38fd85440924960850.tar.gz
cleanup, including removal of map and list element pools
-rw-r--r--src/bytecode.c14
-rw-r--r--src/iter.c12
-rw-r--r--src/map.c4
-rw-r--r--src/map.h2
-rw-r--r--src/pool.c6
-rw-r--r--src/program.c15
-rw-r--r--src/program.h2
-rw-r--r--src/struct.c2
-rw-r--r--src/synthesis.cc2
-rw-r--r--src/tree.c12
-rw-r--r--src/tree.h12
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;
diff --git a/src/iter.c b/src/iter.c
index 58f5bde0..92676119 100644
--- a/src/iter.c
+++ b/src/iter.c
@@ -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;
diff --git a/src/map.c b/src/map.c
index 7739eed5..a4110cca 100644
--- a/src/map.c
+++ b/src/map.c
@@ -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 )
{
diff --git a/src/map.h b/src/map.h
index a63c63c4..c87f006b 100644
--- a/src/map.h
+++ b/src/map.h
@@ -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)
diff --git a/src/pool.c b/src/pool.c
index f5ac6fa9..f08f99b8 100644
--- a/src/pool.c
+++ b/src/pool.c
@@ -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:
diff --git a/src/tree.c b/src/tree.c
index f731211e..e77cac83 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -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 )
{
diff --git a/src/tree.h b/src/tree.h
index 1a206394..7d4fa2f6 100644
--- a/src/tree.h
+++ b/src/tree.h
@@ -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)
}