diff options
author | Adrian Thurston <thurston@complang.org> | 2015-01-10 16:44:15 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-01-10 16:44:15 -0500 |
commit | 4e1057162ebffe53cba311bb27249a0758bf4bba (patch) | |
tree | f4f72576ac819aaa9ac8dea70bfed2591fecfd45 | |
parent | 454646ae6de76b1e01d8ab45339ec58662dbfc9c (diff) | |
download | colm-4e1057162ebffe53cba311bb27249a0758bf4bba.tar.gz |
renamed argv0 to arg0, fixed the leak
-rw-r--r-- | src/bytecode.c | 27 | ||||
-rw-r--r-- | src/bytecode.h | 4 | ||||
-rw-r--r-- | src/compiler.cc | 4 | ||||
-rw-r--r-- | src/compiler.h | 6 | ||||
-rw-r--r-- | src/declare.cc | 17 | ||||
-rw-r--r-- | src/program.c | 2 | ||||
-rw-r--r-- | src/synthesis.cc | 14 | ||||
-rw-r--r-- | test/argv1.lm | 2 |
8 files changed, 36 insertions, 40 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index ae80315a..14f96c43 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -433,18 +433,18 @@ static void downrefLocals( Program *prg, Tree ***psp, } } -Tree *constructArgv0( Program *prg, int argc, const char **argv ) +static Tree *construct_arg0( Program *prg, int argc, const char **argv ) { - Tree *arg = 0; + Tree *arg0 = 0; if ( argc > 0 ) { Head *head = stringAllocPointer( prg, argv[0], strlen(argv[0]) ); - arg = constructString( prg, head ); - treeUpref( arg ); + arg0 = constructString( prg, head ); + treeUpref( arg0 ); } - return arg; + return arg0; } -List *constructArgv( Program *prg, int argc, const char **argv ) +static List *construct_argv( Program *prg, int argc, const char **argv ) { List *list = (List*)constructGeneric( prg, prg->rtd->argvGenericId ); int i; @@ -486,7 +486,7 @@ void rcodeDownrefAll( Program *prg, Tree **sp, RtCodeVect *rev ) } } -void mainExecution( Program *prg, Execution *exec, Code *code ) +void colm_execute( Program *prg, Execution *exec, Code *code ) { Tree **sp = prg->stackRoot; @@ -3736,9 +3736,8 @@ again: Tree *mode = vm_pop(); Tree *name = vm_pop(); - Tree *res = (Tree*)openFile( prg, name, mode ); - treeUpref( res ); - vm_push( res ); + Stream *res = openFile( prg, name, mode ); + vm_push_stream( res ); treeDownref( prg, sp, name ); treeDownref( prg, sp, mode ); break; @@ -3833,13 +3832,13 @@ again: treeDownref( prg, sp, (Tree*)str ); break; } - case IN_LOAD_ARGV0: { + case IN_LOAD_ARG0: { Half field; read_half( field ); - debug( prg, REALM_BYTECODE, "IN_LOAD_ARGV0 %lu\n", field ); + debug( prg, REALM_BYTECODE, "IN_LOAD_ARG0 %lu\n", field ); /* Tree comes back upreffed. */ - Tree *tree = constructArgv0( prg, prg->argc, prg->argv ); + Tree *tree = construct_arg0( prg, prg->argc, prg->argv ); Tree *prev = colm_struct_get_field( prg->global, Tree*, field ); treeDownref( prg, sp, prev ); colm_struct_set_field( prg->global, Tree*, field, tree ); @@ -3850,7 +3849,7 @@ again: read_half( field ); debug( prg, REALM_BYTECODE, "IN_LOAD_ARGV %lu\n", field ); - List *list = constructArgv( prg, prg->argc, prg->argv ); + List *list = construct_argv( prg, prg->argc, prg->argv ); colm_struct_set_field( prg->global, List*, field, list ); break; } diff --git a/src/bytecode.h b/src/bytecode.h index 54087735..5fdc5e55 100644 --- a/src/bytecode.h +++ b/src/bytecode.h @@ -346,7 +346,7 @@ typedef unsigned char uchar; #define IN_STR_UORD32 0x05 #define IN_STR_SORD32 0x06 #define IN_LOAD_ARGV 0x07 -#define IN_LOAD_ARGV0 0x08 +#define IN_LOAD_ARG0 0x08 #define IN_INIT_LOCALS 0x09 #define IN_STOP 0x0a @@ -542,7 +542,7 @@ Head *intToStr( struct colm_program *prg, Word i ); Tree *constructString( struct colm_program *prg, Head *s ); -void mainExecution( struct colm_program *prg, Execution *exec, Code *code ); +void colm_execute( struct colm_program *prg, Execution *exec, Code *code ); void reductionExecution( Execution *exec, Tree **sp ); void generationExecution( Execution *exec, Tree **sp ); void reverseExecution( Execution *exec, Tree **sp, RtCodeVect *allRev ); diff --git a/src/compiler.cc b/src/compiler.cc index 6ab2d93e..a8fc1ede 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -363,8 +363,8 @@ Compiler::Compiler( ) global(0), globalSel(0), globalObjectDef(0), - argv0(0), - argvList(0), + arg0(0), + argv(0), stream(0), streamSel(0), diff --git a/src/compiler.h b/src/compiler.h index e131a421..a545355d 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -754,7 +754,7 @@ struct Compiler void addArgv(); void addError(); int argvOffset(); - int argv0_Offset(); + int arg0Offset(); void makeDefaultIterators(); void addLengthField( ObjectDef *objDef, Code getLength ); ObjectDef *findObject( const String &name ); @@ -871,8 +871,8 @@ struct Compiler StructDef *global; StructEl *globalSel; ObjectDef *globalObjectDef; - ObjectField *argv0; - ObjectField *argvList; + ObjectField *arg0; + ObjectField *argv; StructDef *stream; StructEl *streamSel; diff --git a/src/declare.cc b/src/declare.cc index a4469366..aea5bb1b 100644 --- a/src/declare.cc +++ b/src/declare.cc @@ -879,13 +879,15 @@ void Compiler::addArgv() ObjectField::StructFieldType, argvTypeRef, "argv" ); el->isConst = true; globalObjectDef->rootScope->insertField( el->name, el ); - argvList = el; + argv = el; + + TypeRef *typeRef = TypeRef::cons( internal, uniqueTypeStr ); el = ObjectField::cons( internal, - ObjectField::StructFieldType, argvTypeRef, "argv0" ); + ObjectField::StructFieldType, typeRef, "arg0" ); el->isConst = true; globalObjectDef->rootScope->insertField( el->name, el ); - argv0 = el; + arg0 = el; } void Compiler::addError() @@ -941,17 +943,12 @@ void Compiler::initListFunctions( GenericType *gen ) void Compiler::initListElField( GenericType *gen, const char *name, int offset ) { -// TypeRef *typeRef = TypeRef::cons( -// internal, TypeRef::ListEl, 0, gen->typeArg, 0 ); -// -// typeRef->resolveType( this ); - /* Make the type ref and create the field. */ ObjectField *el = ObjectField::cons( internal, ObjectField::InbuiltOffType, gen->typeArg, name ); - el->inGetR = IN_GET_LIST_EL_MEM_R; - el->inGetValR = IN_GET_LIST_EL_MEM_R; + el->inGetR = IN_GET_LIST_EL_MEM_R; + el->inGetValR = IN_GET_LIST_EL_MEM_R; // el->inGetWC = IN_GET_LIST2EL_MEM_WC; // el->inGetWV = IN_GET_LIST2EL_MEM_WV; // el->inSetWC = IN_SET_LIST2EL_MEM_WC; diff --git a/src/program.c b/src/program.c index d3044faa..b3063b97 100644 --- a/src/program.c +++ b/src/program.c @@ -205,7 +205,7 @@ void colm_run_program( Program *prg, int argc, const char **argv ) memset( &execution, 0, sizeof(execution) ); execution.frameId = prg->rtd->rootFrameId; - mainExecution( prg, &execution, prg->rtd->rootCode ); + colm_execute( prg, &execution, prg->rtd->rootCode ); /* Clear the arg and stack. */ prg->argc = 0; diff --git a/src/synthesis.cc b/src/synthesis.cc index b3369e66..09d1552d 100644 --- a/src/synthesis.cc +++ b/src/synthesis.cc @@ -2646,16 +2646,16 @@ void Compiler::compilePreEof( TokenRegion *region ) findLocals( block->localFrame, block ); } -int Compiler::argv0_Offset() +int Compiler::arg0Offset() { - globalObjectDef->referenceField( this, argv0 ); - return argv0->offset; + globalObjectDef->referenceField( this, arg0 ); + return arg0->offset; } int Compiler::argvOffset() { - globalObjectDef->referenceField( this, argvList ); - return argvList->offset; + globalObjectDef->referenceField( this, argv ); + return argv->offset; } void Compiler::compileRootBlock( ) @@ -2683,8 +2683,8 @@ void Compiler::compileRootBlock( ) code.appendHalf( 0 ); code.append( IN_FN ); - code.append( IN_LOAD_ARGV0 ); - code.appendHalf( argv0_Offset() ); + code.append( IN_LOAD_ARG0 ); + code.appendHalf( arg0Offset() ); code.append( IN_FN ); code.append( IN_LOAD_ARGV ); diff --git a/test/argv1.lm b/test/argv1.lm index 431a7746..0318756c 100644 --- a/test/argv1.lm +++ b/test/argv1.lm @@ -1,4 +1,4 @@ -print_xml( argv0 ) +print_xml( arg0 ) A: argv_el = argv->head while ( A ) { |