summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-01-10 16:44:15 -0500
committerAdrian Thurston <thurston@complang.org>2015-01-10 16:44:15 -0500
commit4e1057162ebffe53cba311bb27249a0758bf4bba (patch)
treef4f72576ac819aaa9ac8dea70bfed2591fecfd45
parent454646ae6de76b1e01d8ab45339ec58662dbfc9c (diff)
downloadcolm-4e1057162ebffe53cba311bb27249a0758bf4bba.tar.gz
renamed argv0 to arg0, fixed the leak
-rw-r--r--src/bytecode.c27
-rw-r--r--src/bytecode.h4
-rw-r--r--src/compiler.cc4
-rw-r--r--src/compiler.h6
-rw-r--r--src/declare.cc17
-rw-r--r--src/program.c2
-rw-r--r--src/synthesis.cc14
-rw-r--r--test/argv1.lm2
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 ) {