diff options
author | Adrian Thurston <thurston@complang.org> | 2013-12-31 11:43:20 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2013-12-31 11:43:20 -0500 |
commit | 415c21f86d1d0b7ff49932b4b61251870e7400fb (patch) | |
tree | b2bb76e45525bf496084e78be1ae1d3e8d2133a1 /src/loadinit.cc | |
parent | fc1d502d70df74114c8edff5c7ce808895f156f9 (diff) | |
download | colm-415c21f86d1d0b7ff49932b4b61251870e7400fb.tar.gz |
pass the current scope to VarRef cons
This will lets us eliminate the scope walk needed for successful VarRef lookup.
Diffstat (limited to 'src/loadinit.cc')
-rw-r--r-- | src/loadinit.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/loadinit.cc b/src/loadinit.cc index b594fc57..ebc7d41a 100644 --- a/src/loadinit.cc +++ b/src/loadinit.cc @@ -285,7 +285,7 @@ void LoadInit::consParseStmt( StmtList *stmtList ) QualItemVect *popQual = new QualItemVect; popQual->append( QualItem( QualItem::Dot, internal, String( "argv" ) ) ); - LangVarRef *popRef = LangVarRef::cons( internal, popQual, String("pop") ); + LangVarRef *popRef = LangVarRef::cons( internal, pd->curLocalFrame->scope, popQual, String("pop") ); LangExpr *pop = LangExpr::cons( LangTerm::cons( InputLoc(), popRef, popArgs ) ); /* Construct a literal string 'r', for second arg to open. */ @@ -296,7 +296,8 @@ void LoadInit::consParseStmt( StmtList *stmtList ) /* Call open. */ QualItemVect *openQual = new QualItemVect; - LangVarRef *openRef = LangVarRef::cons( internal, openQual, String("open") ); + LangVarRef *openRef = LangVarRef::cons( internal, + pd->curLocalFrame->scope, openQual, String("open") ); CallArgVect *openArgs = new CallArgVect; openArgs->append( new CallArg(pop) ); openArgs->append( new CallArg(modeExpr) ); @@ -318,7 +319,7 @@ void LoadInit::consParseStmt( StmtList *stmtList ) void LoadInit::consExportTree( StmtList *stmtList ) { QualItemVect *qual = new QualItemVect; - LangVarRef *varRef = LangVarRef::cons( internal, qual, String("P") ); + LangVarRef *varRef = LangVarRef::cons( internal, pd->curLocalFrame->scope, qual, String("P") ); LangExpr *expr = LangExpr::cons( LangTerm::cons( internal, LangTerm::VarRefType, varRef ) ); NamespaceQual *nspaceQual = NamespaceQual::cons( namespaceStack.top() ); @@ -331,7 +332,7 @@ void LoadInit::consExportTree( StmtList *stmtList ) void LoadInit::consExportError( StmtList *stmtList ) { QualItemVect *qual = new QualItemVect; - LangVarRef *varRef = LangVarRef::cons( internal, qual, String("error") ); + LangVarRef *varRef = LangVarRef::cons( internal, pd->curLocalFrame->scope, qual, String("error") ); LangExpr *expr = LangExpr::cons( LangTerm::cons( internal, LangTerm::VarRefType, varRef ) ); NamespaceQual *nspaceQual = NamespaceQual::cons( namespaceStack.top() ); |