Changeset 570 in dev for trunk/ab5.0/abdev/BasicCompiler_Common/src/Variable.cpp
- Timestamp:
- May 6, 2008, 8:31:52 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/BasicCompiler_Common/src/Variable.cpp
r523 r570 43 43 44 44 45 bool Variables::DuplicateCheck( const Symbol &symbol ) const45 bool Variables::DuplicateCheck( const Symbol &symbol, int nowScopeLevel ) const 46 46 { 47 47 //レキシカルスコープを考慮して重複判定 48 48 for( int i=(int)this->size()-1; i>=0 ; i-- ){ 49 49 const Variable *pVar = (*this)[i]; 50 if( pVar->isLiving 51 && pVar->GetScopeLevel() == compiler.codeGenerator.lexicalScopes.GetNowLevel()//現在のスコープと同一レベル50 if( pVar->isLiving //現在のスコープで有効なもの 51 && pVar->GetScopeLevel() == nowScopeLevel //現在のスコープと同一レベル 52 52 ) 53 53 { … … 60 60 } 61 61 62 const Variable *Variables::BackSearch( const Symbol &symbol ) const62 const Variable *Variables::BackSearch( const Symbol &symbol, int nowScopeLevel ) const 63 63 { 64 64 //レキシカルスコープを考慮してバックサーチ 65 65 for( int i=(int)this->size()-1; i>=0 ; i-- ){ 66 66 const Variable *pVar = (*this)[i]; 67 if( pVar->isLiving 68 && pVar->GetScopeLevel() <= compiler.codeGenerator.lexicalScopes.GetNowLevel()//現在のスコープレベルを超さないもの(Returnによる解放処理中を考慮)67 if( pVar->isLiving //現在のスコープで有効なもの 68 && pVar->GetScopeLevel() <= nowScopeLevel //現在のスコープレベルを超さないもの(Returnによる解放処理中を考慮) 69 69 ){ 70 70 if( pVar->IsEqualSymbol( symbol ) ){
Note:
See TracChangeset
for help on using the changeset viewer.