summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-03-21 09:53:49 -0400
committerAdrian Thurston <thurston@complang.org>2015-03-21 09:53:49 -0400
commiteca19ccd635710108180c031f13763a7b6161bd9 (patch)
tree653251a0313fc1bec1796b5325a26409eef67ae4
parentb93bab8efac1147dc28aa85c2285928ead6f137c (diff)
downloadcolm-eca19ccd635710108180c031f13763a7b6161bd9.tar.gz
some cleanup in the type macros
-rw-r--r--src/bytecode.c106
-rw-r--r--src/bytecode.h2
-rw-r--r--src/iter.c12
-rw-r--r--src/pdarun.c4
-rw-r--r--src/tree.c26
5 files changed, 75 insertions, 75 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 0518bbaa..5ba14fc2 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -563,7 +563,7 @@ again:
debug( prg, REALM_BYTECODE, "IN_LOAD_WORD\n" );
Word w;
read_word( w );
- vm_push_tree( (SW)w );
+ vm_push_type( Word, w );
break;
}
case IN_LOAD_TRUE: {
@@ -710,7 +710,7 @@ again:
debug( prg, REALM_BYTECODE, "IN_LOAD_INPUT_R\n" );
assert( exec->parser != 0 );
- vm_push_tree( (Tree*)exec->parser->input );
+ vm_push_stream( exec->parser->input );
break;
}
case IN_LOAD_INPUT_WV: {
@@ -729,7 +729,7 @@ again:
debug( prg, REALM_BYTECODE, "IN_LOAD_INPUT_WC\n" );
assert( exec->parser != 0 );
- vm_push_tree( (Tree*)exec->parser->input );
+ vm_push_stream( exec->parser->input );
break;
}
case IN_LOAD_INPUT_BKT: {
@@ -1411,7 +1411,7 @@ again:
case IN_INT_TO_STR: {
debug( prg, REALM_BYTECODE, "IN_INT_TO_STR\n" );
- Int *i = (Int*)vm_pop_tree();
+ Value i = vm_pop_value();
Head *res = intToStr( prg, (long)i );
Tree *str = constructString( prg, res );
treeUpref( str );
@@ -1451,8 +1451,8 @@ again:
case IN_CONCAT_STR: {
debug( prg, REALM_BYTECODE, "IN_CONCAT_STR\n" );
- Str *s2 = (Str*)vm_pop_tree();
- Str *s1 = (Str*)vm_pop_tree();
+ Str *s2 = vm_pop_string();
+ Str *s1 = vm_pop_string();
Head *res = concatStr( s1->value, s2->value );
Tree *str = constructString( prg, res );
treeUpref( str );
@@ -1465,7 +1465,7 @@ again:
case IN_STR_LENGTH: {
debug( prg, REALM_BYTECODE, "IN_STR_LENGTH\n" );
- Str *str = (Str*)vm_pop_tree();
+ Str *str = vm_pop_string();
long len = stringLength( str->value );
Value res = len;
vm_push_value( res );
@@ -1712,7 +1712,7 @@ again:
case IN_TST_NZ_TREE: {
debug( prg, REALM_BYTECODE, "IN_TST_NZ_TREE\n" );
- Tree *tree = (Tree*)vm_pop_tree();
+ Tree *tree = vm_pop_tree();
long r = !testFalse( prg, tree );
vm_push_value( r );
break;
@@ -1814,8 +1814,8 @@ again:
"%hd %hd %hd\n", field, argSize, searchTypeId );
Ref rootRef;
- rootRef.kid = (Kid*)vm_pop_tree();
- rootRef.next = (Ref*)vm_pop_tree();
+ rootRef.kid = vm_pop_kid();
+ rootRef.next = vm_pop_ref();
void *mem = vm_plocal(field);
Tree **stackRoot = vm_ptop();
@@ -1846,8 +1846,8 @@ again:
"%hd %hd %hd\n", field, argSize, searchTypeId );
Ref rootRef;
- rootRef.kid = (Kid*)vm_pop_tree();
- rootRef.next = (Ref*)vm_pop_tree();
+ rootRef.kid = vm_pop_kid();
+ rootRef.next = vm_pop_ref();
Tree **stackRoot = vm_ptop();
long rootSize = vm_ssize();
@@ -1999,8 +1999,8 @@ again:
"%hd %hd %hd\n", field, argSize, genericId );
Ref rootRef;
- rootRef.kid = (Kid*)vm_pop_tree();
- rootRef.next = (Ref*)vm_pop_tree();
+ rootRef.kid = vm_pop_kid();
+ rootRef.next = vm_pop_ref();
void *mem = vm_plocal(field);
Tree **stackRoot = vm_ptop();
@@ -2211,7 +2211,7 @@ again:
case IN_INPUT_CLOSE_WC: {
debug( prg, REALM_BYTECODE, "IN_INPUT_CLOSE_WC\n" );
- Stream *stream = (Stream*) vm_pop_tree();
+ Stream *stream = vm_pop_stream();
StreamImpl *si = stream->impl;
if ( si->file != 0 ) {
@@ -2322,10 +2322,10 @@ again:
vm_popn( fi->frameSize );
}
- instr = (Code*) vm_pop_tree();
- exec->frameId = ( long ) vm_pop_tree();
- exec->iframePtr = ( Tree ** ) vm_pop_tree();
- exec->framePtr = ( Tree ** ) vm_pop_tree();
+ instr = vm_pop_type(Code*);
+ exec->frameId = vm_pop_type(long);
+ exec->iframePtr = vm_pop_type(Tree**);
+ exec->framePtr = vm_pop_type(Tree**);
if ( instr == 0 ) {
fflush( stdout );
@@ -2361,9 +2361,9 @@ again:
Parser *parser = exec->parser;
- exec->steps = (long)vm_pop_tree();
- exec->pcr = (long)vm_pop_tree();
- exec->parser = (Parser*) vm_pop_tree();
+ exec->steps = vm_pop_type(long);
+ exec->pcr = vm_pop_type(long);
+ exec->parser = vm_pop_parser();
vm_push_parser( parser );
@@ -2395,9 +2395,9 @@ again:
Parser *parser = exec->parser;
long steps = exec->steps;
- exec->steps = (long)vm_pop_tree();
- exec->pcr = (long)vm_pop_tree();
- exec->parser = (Parser*)vm_pop_tree();
+ exec->steps = vm_pop_type(long);
+ exec->pcr = vm_pop_type(long);
+ exec->parser = vm_pop_parser();
vm_push_parser( parser );
@@ -2436,9 +2436,9 @@ again:
Parser *parser = exec->parser;
- exec->steps = (long)vm_pop_tree();
- exec->pcr = (long)vm_pop_tree();
- exec->parser = (Parser*)vm_pop_tree();
+ exec->steps = vm_pop_type(long);
+ exec->pcr = vm_pop_type(long);
+ exec->parser = vm_pop_parser();
break;
}
@@ -2467,9 +2467,9 @@ again:
Parser *parser = exec->parser;
- exec->steps = (long)vm_pop_tree();
- exec->pcr = (long)vm_pop_tree();
- exec->parser = (Parser*)vm_pop_tree();
+ exec->steps = vm_pop_type(long);
+ exec->pcr = vm_pop_type(long);
+ exec->parser = vm_pop_parser();
vm_push_parser( parser );
@@ -2502,9 +2502,9 @@ again:
Parser *parser = exec->parser;
long steps = exec->steps;
- exec->steps = (long)vm_pop_tree();
- exec->pcr = (long)vm_pop_tree();
- exec->parser = (Parser *) vm_pop_tree();
+ exec->steps = vm_pop_type(long);
+ exec->pcr = vm_pop_type(long);
+ exec->parser = vm_pop_parser();
vm_push_parser( parser );
@@ -2544,9 +2544,9 @@ again:
Parser *parser = exec->parser;
- exec->steps = (long)vm_pop_tree();
- exec->pcr = (long)vm_pop_tree();
- exec->parser = (Parser*)vm_pop_tree();
+ exec->steps = vm_pop_type(long);
+ exec->pcr = vm_pop_type(long);
+ exec->parser = vm_pop_parser();
StreamImpl *si = streamToImpl( parser->input );
si->funcs->unsetEof( si );
@@ -2617,7 +2617,7 @@ again:
case IN_INPUT_PUSH_IGNORE_WV: {
debug( prg, REALM_BYTECODE, "IN_INPUT_PUSH_IGNORE_WV\n" );
- Stream *input = (Stream*)vm_pop_tree();
+ Stream *input = vm_pop_stream();
Tree *tree = vm_pop_tree();
long len = stream_push( prg, sp, streamToImpl( input ), tree, true );
vm_push_tree( 0 );
@@ -2716,7 +2716,7 @@ again:
debug( prg, REALM_BYTECODE, "IN_CONSTRUCT_TERM\n" );
/* Pop the string we are constructing the token from. */
- Str *str = (Str*)vm_pop_tree();
+ Str *str = vm_pop_string();
Tree *res = constructTerm( prg, tokenId, str->value );
treeUpref( res );
vm_push_tree( res );
@@ -2908,7 +2908,7 @@ again:
case IN_GET_TOKEN_DATA_R: {
debug( prg, REALM_BYTECODE, "IN_GET_TOKEN_DATA_R\n" );
- Tree *tree = (Tree*) vm_pop_tree();
+ Tree *tree = vm_pop_tree();
Head *data = stringCopy( prg, tree->tokdata );
Tree *str = constructString( prg, data );
treeUpref( str );
@@ -2964,7 +2964,7 @@ again:
case IN_GET_TOKEN_POS_R: {
debug( prg, REALM_BYTECODE, "IN_GET_TOKEN_POS_R\n" );
- Tree *tree = (Tree*) vm_pop_tree();
+ Tree *tree = vm_pop_tree();
Value integer = 0;
if ( tree->tokdata->location )
integer = tree->tokdata->location->byte;
@@ -2975,7 +2975,7 @@ again:
case IN_GET_TOKEN_LINE_R: {
debug( prg, REALM_BYTECODE, "IN_GET_TOKEN_LINE_R\n" );
- Tree *tree = (Tree*) vm_pop_tree();
+ Tree *tree = vm_pop_tree();
Value integer = 0;
if ( tree->tokdata->location )
integer = tree->tokdata->location->line;
@@ -3233,8 +3233,8 @@ again:
case IN_YIELD: {
debug( prg, REALM_BYTECODE, "IN_YIELD\n" );
- Kid *kid = (Kid*)vm_pop_tree();
- Ref *next = (Ref*)vm_pop_tree();
+ Kid *kid = vm_pop_kid();
+ Ref *next = vm_pop_ref();
UserIter *uiter = (UserIter*) vm_plocal_iframe( IFR_AA );
if ( kid == 0 || kid->tree == 0 ||
@@ -3326,9 +3326,9 @@ again:
downref_local_trees( prg, sp, exec->framePtr, fi->locals, fi->localsLen );
vm_popn( fi->frameSize );
- exec->frameId = (long) vm_pop_tree();
- exec->framePtr = (Tree**) vm_pop_tree();
- instr = (Code*) vm_pop_tree();
+ exec->frameId = vm_pop_type(long);
+ exec->framePtr = vm_pop_type(Tree**);
+ instr = vm_pop_type(Code*);
Tree *retVal = vm_pop_tree();
vm_popn( fi->argSize );
vm_push_tree( retVal );
@@ -3414,7 +3414,7 @@ again:
debug( prg, REALM_BYTECODE, "IN_SYSTEM\n" );
vm_pop_tree();
- Str *cmd = (Str*)vm_pop_tree();
+ Str *cmd = vm_pop_string();
char *cmd0 = malloc( cmd->value->length + 1 );
memcpy( cmd0, cmd->value->data, cmd->value->length );
@@ -3979,10 +3979,8 @@ again:
debug( prg, REALM_BYTECODE, "IN_EXIT\n" );
Tree *global = vm_pop_tree();
- Int *status = (Int*)vm_pop_tree();
- prg->exitStatus = (long)status;//->value;
+ prg->exitStatus = vm_pop_type(long);
prg->induceExit = 1;
- //treeDownref( prg, sp, (Tree*)status );
while ( true ) {
FrameInfo *fi = &prg->rtd->frameInfo[exec->frameId];
@@ -3998,9 +3996,9 @@ again:
break;
/* Call layout. */
- exec->frameId = (long) vm_pop_tree();
- exec->framePtr = (Tree**) vm_pop_tree();
- instr = (Code*) vm_pop_tree();
+ exec->frameId = vm_pop_type(long);
+ exec->framePtr = vm_pop_type(Tree**);
+ instr = vm_pop_type(Code*);
Tree *retVal = vm_pop_tree();
vm_popn( fi->argSize );
vm_pop_tree();
diff --git a/src/bytecode.h b/src/bytecode.h
index 1ef16b13..0541d8ff 100644
--- a/src/bytecode.h
+++ b/src/bytecode.h
@@ -532,6 +532,8 @@ enum LEL_ID {
#define vm_pop_map() vm_pop_type(Map*)
#define vm_pop_value() vm_pop_type(Value)
#define vm_pop_string() vm_pop_type(Str*)
+#define vm_pop_kid() vm_pop_type(Kid*)
+#define vm_pop_ref() vm_pop_type(Ref*)
#define vm_pop_ignore() \
({ (sp+1) >= prg->sb_end ? (sp = vm_bs_pop(prg, sp, 1)) : (sp += 1); })
diff --git a/src/iter.c b/src/iter.c
index f61b75f0..16d7c0dd 100644
--- a/src/iter.c
+++ b/src/iter.c
@@ -347,8 +347,8 @@ rec_call:
rec_return:
iter->ref.kid = iter->ref.kid->next;
}
- iter->ref.kid = (Kid*)vm_pop_tree();
- iter->ref.next = (Ref*)vm_pop_tree();
+ iter->ref.kid = vm_pop_kid();
+ iter->ref.next = vm_pop_ref();
}
}
@@ -499,8 +499,8 @@ rec_call:
rec_return:
iter->ref.kid = iter->ref.kid->next;
}
- iter->ref.kid = (Kid*)vm_pop_tree();
- iter->ref.next = (Ref*)vm_pop_tree();
+ iter->ref.kid = vm_pop_kid();
+ iter->ref.next = vm_pop_ref();
}
}
}
@@ -576,8 +576,8 @@ void iterFindRevRepeat( Program *prg, Tree ***psp, TreeIter *iter, int tryFirst
iter->ref.kid = treeChild( prg, ref->kid->tree );
}
else {
- iter->ref.kid = (Kid*)vm_pop_tree();
- iter->ref.next = (Ref*)vm_pop_tree();
+ iter->ref.kid = vm_pop_kid();
+ iter->ref.next = vm_pop_ref();
}
first:
if ( iter->ref.kid->tree->id == iter->searchId || anyTree ) {
diff --git a/src/pdarun.c b/src/pdarun.c
index 039b383a..64a913bd 100644
--- a/src/pdarun.c
+++ b/src/pdarun.c
@@ -1135,7 +1135,7 @@ free_tree:
/* Any trees to downref? */
if ( sp != top ) {
- pt = (ParseTree*)vm_pop_tree();
+ pt = vm_pop_type(ParseTree*);
goto free_tree;
}
}
@@ -1379,7 +1379,7 @@ head:
backup:
if ( sp != root ) {
- ParseTree *next = (ParseTree*)vm_pop_tree();
+ ParseTree *next = vm_pop_type(ParseTree*);
if ( next->next == lel ) {
/* Moving backwards. */
lel = next;
diff --git a/src/tree.c b/src/tree.c
index 2012e9e2..230cda96 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -1837,8 +1837,8 @@ rec_call:
vm_push_tree( (SW) CollectIgnoreLeft );
goto rec_call;
rec_return_ign_left:
- kid = (Kid*)vm_pop_tree();
- parent = (Kid*)vm_pop_tree();
+ kid = vm_pop_kid();
+ parent = vm_pop_kid();
}
if ( kid->tree->id == LEL_ID_IGNORE )
@@ -1919,11 +1919,11 @@ rec_call:
goto rec_call;
rec_return_il:
- kid = (Kid*)vm_pop_tree();
- parent = (Kid*)vm_pop_tree();
- ignore = (Kid*)vm_pop_tree();
- leadingIgnore = (Kid*)vm_pop_tree();
- visitType = (enum VisitType)vm_pop_tree();
+ kid = vm_pop_kid();
+ parent = vm_pop_kid();
+ ignore = vm_pop_kid();
+ leadingIgnore = vm_pop_kid();
+ visitType = vm_pop_type(enum VisitType);
}
ignore = ignore->next;
@@ -1970,9 +1970,9 @@ rec_call:
rec_return:
kid = kid->next;
}
- kid = (Kid*)vm_pop_tree();
- parent = (Kid*)vm_pop_tree();
- visitType = (enum VisitType)vm_pop_tree();
+ kid = vm_pop_kid();
+ parent = vm_pop_kid();
+ visitType = vm_pop_type(enum VisitType);
}
if ( visitType == Term || visitType == NonTerm ) {
@@ -1993,14 +1993,14 @@ skip_node:
vm_push_tree( (SW) CollectIgnoreRight );
goto rec_call;
rec_return_ign_right:
- kid = (Kid*)vm_pop_tree();
- parent = (Kid*)vm_pop_tree();
+ kid = vm_pop_kid();
+ parent = vm_pop_kid();
}
/* For skiping over content on null. */
skip_null:
- rt = (enum ReturnType)vm_pop_tree();
+ rt = vm_pop_type(enum ReturnType);
switch ( rt ) {
case Done:
debug( prg, REALM_PRINT, "return: done\n" );