Show
Ignore:
Timestamp:
07/24/08 17:04:30 (2 years ago)
Author:
hak
Message:

- Added CCilVm::reset()
- Fixed VM status management (ticket #5)
- Fixed API names not to have upper case as 1st letter.
- Fixed sample build break
- Added new sample, "vm_contol" to demonstrate VM status control API

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/VM/cil/cilVMEvalStack.cpp

    r110 r138  
    3737//Write allocate, pointer based implementation 
    3838 
    39 void CCilVm::PushEvalStack( const CVariable& operand ) 
     39/*************************************************************************** 
     40 *      pushEvalStack 
     41 ***************************************************************************/ 
     42void CCilVm::pushEvalStack( const CVariable& operand ) 
    4043{ 
    4144        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    4952        var.iOperandFlag = OPERAND_FLAG_NONE; 
    5053#endif 
    51         UpdateEvalStackIndex(); 
    52 
    53  
    54 void CCilVm::PushEvalStackString( const wchar_t* pStr ) 
     54        updateEvalStackIndex(); 
     55
     56 
     57/*************************************************************************** 
     58 *      pushEvalStackString 
     59 ***************************************************************************/ 
     60void CCilVm::pushEvalStackString( const wchar_t* pStr ) 
    5561{ 
    5662        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    6268        var = CVariable( pStr ); 
    6369#endif 
    64         UpdateEvalStackIndex(); 
    65 
    66  
    67 void CCilVm::PushEvalStackString( const wstring* str ) 
     70        updateEvalStackIndex(); 
     71
     72 
     73/*************************************************************************** 
     74 *      pushEvalStackString( wstring * version ) 
     75 ***************************************************************************/ 
     76void CCilVm::pushEvalStackString( const wstring* str ) 
    6877{ 
    6978        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    7887        var.pString = new wstring( *str ); 
    7988#endif 
    80         UpdateEvalStackIndex(); 
    81 
    82  
    83 void CCilVm::PushEvalStackStringPointer( wstring* pstr ) 
     89        updateEvalStackIndex(); 
     90
     91 
     92/*************************************************************************** 
     93 *      pushEvalStackStringPointer 
     94 ***************************************************************************/ 
     95void CCilVm::pushEvalStackStringPointer( wstring* pstr ) 
    8496{ 
    8597        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    94106        var.pString = pstr; 
    95107#endif 
    96         UpdateEvalStackIndex(); 
    97 
    98  
    99 void CCilVm::PushEvalStack( const int32_t i ) 
     108        updateEvalStackIndex(); 
     109
     110 
     111/*************************************************************************** 
     112 *      pushEvalStack( int32_t version ) 
     113 ***************************************************************************/ 
     114void CCilVm::pushEvalStack( const int32_t i ) 
    100115{ 
    101116        CVariable& var = *m_pCurrentEvalStack; 
     
    106121        var = CVariable( i ); 
    107122#endif 
    108         UpdateEvalStackIndex(); 
    109 
    110  
    111 void CCilVm::PushEvalStack( const int64_t i ) 
     123        updateEvalStackIndex(); 
     124
     125 
     126/*************************************************************************** 
     127 *      pushEvalStack( int64_t version ) 
     128 ***************************************************************************/ 
     129void CCilVm::pushEvalStack( const int64_t i ) 
    112130{ 
    113131        CVariable& var = *m_pCurrentEvalStack; 
     
    118136        var = CVariable( i ); 
    119137#endif 
    120         UpdateEvalStackIndex(); 
    121 
    122  
    123 void CCilVm::PushEvalStack( const bool b ) 
     138        updateEvalStackIndex(); 
     139
     140 
     141/*************************************************************************** 
     142 *      pushEvalStack ( boolean ) 
     143 ***************************************************************************/ 
     144void CCilVm::pushEvalStack( const bool b ) 
    124145{ 
    125146        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    131152        var = CVariable( b ); 
    132153#endif 
    133         UpdateEvalStackIndex(); 
    134 
    135  
    136 void CCilVm::PushEvalStack( const float f ) 
     154        updateEvalStackIndex(); 
     155
     156 
     157/*************************************************************************** 
     158 *      pushEvalStack( float ) 
     159 ***************************************************************************/ 
     160void CCilVm::pushEvalStack( const float f ) 
    137161{ 
    138162        CVariable& var = *m_pCurrentEvalStack; 
     
    143167        var = CVariable( f ); 
    144168#endif 
    145         UpdateEvalStackIndex(); 
    146 
    147  
    148 void CCilVm::PushEvalStack( const double d ) 
     169        updateEvalStackIndex(); 
     170
     171 
     172/*************************************************************************** 
     173 *      pushEvalStack( double ) 
     174 ***************************************************************************/ 
     175void CCilVm::pushEvalStack( const double d ) 
    149176{ 
    150177        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    156183        var = CVariable( d ); 
    157184#endif 
    158         UpdateEvalStackIndex(); 
    159 
    160  
    161 void CCilVm::PushEvalStackNull() 
     185        updateEvalStackIndex(); 
     186
     187 
     188/*************************************************************************** 
     189 *      pushEvalStackNull 
     190 ***************************************************************************/ 
     191void CCilVm::pushEvalStackNull() 
    162192{ 
    163193        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    171201        var = operand; 
    172202#endif 
    173         UpdateEvalStackIndex(); 
    174 
    175  
    176 void CCilVm::PushEvalStackUndefined() 
     203        updateEvalStackIndex(); 
     204
     205 
     206/*************************************************************************** 
     207 *      pushEvalStackUndefined 
     208 ***************************************************************************/ 
     209void CCilVm::pushEvalStackUndefined() 
    177210{ 
    178211        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    186219        var = operand; 
    187220#endif 
    188         UpdateEvalStackIndex(); 
    189 
    190  
    191 void CCilVm::PushEvalStackNaN() 
     221        updateEvalStackIndex(); 
     222
     223 
     224/*************************************************************************** 
     225 *       
     226 ***************************************************************************/ 
     227void CCilVm::pushEvalStackNaN() 
    192228{ 
    193229        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    201237        var = operand; 
    202238#endif 
    203         UpdateEvalStackIndex(); 
    204 
    205  
    206 void CCilVm::PushEvalStackInfinity() 
     239        updateEvalStackIndex(); 
     240
     241 
     242/*************************************************************************** 
     243 *      pushEvalStackInfinity 
     244 ***************************************************************************/ 
     245void CCilVm::pushEvalStackInfinity() 
    207246{ 
    208247        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    217256        var = operand; 
    218257#endif 
    219         UpdateEvalStackIndex(); 
    220 
    221  
    222 void CCilVm::PushEvalStackObjectRef( VMOBJECTREF refObject ) 
     258        updateEvalStackIndex(); 
     259
     260 
     261/*************************************************************************** 
     262 *       
     263 ***************************************************************************/ 
     264void CCilVm::pushEvalStackObjectRef( VMOBJECTREF refObject ) 
    223265{ 
    224266        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    228270        var.refObject = refObject; 
    229271        if( refObject ) 
    230                 refObject->AddRef(); 
     272                refObject->addRef(); 
    231273#else 
    232274        CVariable operand; 
     
    235277        var = operand; 
    236278#endif 
    237         UpdateEvalStackIndex(); 
    238 
    239  
    240 void CCilVm::PushEvalStackVariable( const CVariable& varSrc ) 
     279        updateEvalStackIndex(); 
     280
     281 
     282/*************************************************************************** 
     283 *      pushEvalStackVariable 
     284 ***************************************************************************/ 
     285void CCilVm::pushEvalStackVariable( const CVariable& varSrc ) 
    241286{ 
    242287        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    248293        var.iOperandFlag = OPERAND_FLAG_NONE; 
    249294#endif 
    250         UpdateEvalStackIndex(); 
    251 
    252  
    253 void CCilVm::PopEvalStack( void ) 
     295        updateEvalStackIndex(); 
     296
     297 
     298/*************************************************************************** 
     299 *       
     300 ***************************************************************************/ 
     301void CCilVm::popEvalStack( void ) 
    254302{ 
    255303        assert( m_pCurrentEvalStack > &m_OperandEvalStack[ 0 ]  ); 
     
    261309} 
    262310 
     311/*************************************************************************** 
     312 *      popEvalStackFast 
     313 ***************************************************************************/ 
    263314//Used after moveto() 
    264 void CCilVm::PopEvalStackFast( void ) 
     315void CCilVm::popEvalStackFast( void ) 
    265316{ 
    266317        assert( m_pCurrentEvalStack > &m_OperandEvalStack[ 0 ]  ); 
     
    268319} 
    269320 
    270 bool CCilVm::IsEvalStackEmpty() { return (bool)(m_pCurrentEvalStack != &m_OperandEvalStack[ 0 ]); } 
    271  
    272 void CCilVm::DupEvalStack( void ) 
     321/*************************************************************************** 
     322 *      isEvalStackEmpty 
     323 ***************************************************************************/ 
     324bool CCilVm::isEvalStackEmpty() { return (bool)(m_pCurrentEvalStack != &m_OperandEvalStack[ 0 ]); } 
     325 
     326/*************************************************************************** 
     327 *      dupEvalStack 
     328 ***************************************************************************/ 
     329void CCilVm::dupEvalStack( void ) 
    273330{ 
    274331        assert( m_pCurrentEvalStack > &m_OperandEvalStack[ 0 ]  ); 
     
    279336        var = *(m_pCurrentEvalStack - 1); 
    280337#endif 
    281         UpdateEvalStackIndex(); 
    282 
    283  
    284 size_t CCilVm::GetEvalStackSize() 
     338        updateEvalStackIndex(); 
     339
     340 
     341/*************************************************************************** 
     342 *      getEvalStackSize 
     343 ***************************************************************************/ 
     344size_t CCilVm::getEvalStackSize() 
    285345{ 
    286346        return (m_pCurrentEvalStack - &m_OperandEvalStack[ 0 ] ) / (&m_OperandEvalStack[ 1 ] - &m_OperandEvalStack[ 0 ] ); 
    287347} 
    288348 
    289 CVariable& CCilVm::GetEvalStackNewEntry() 
     349/*************************************************************************** 
     350 *      getEvalStackNewEntry 
     351 ***************************************************************************/ 
     352CVariable& CCilVm::getEvalStackNewEntry() 
    290353{ 
    291354        assert( m_pCurrentEvalStack < &m_OperandEvalStack[ MAX_EVALSTACK - 1 ] ); 
     
    293356} 
    294357 
    295 CVariable& CCilVm::GetEvalStackFirstEntry() 
    296 
    297         assert( GetEvalStackSize() >= 1 ); 
     358/*************************************************************************** 
     359 *      getEvalStackFirstEntry 
     360 ***************************************************************************/ 
     361CVariable& CCilVm::getEvalStackFirstEntry() 
     362
     363        assert( getEvalStackSize() >= 1 ); 
    298364        return *(m_pCurrentEvalStack - 1); 
    299365} 
    300366 
    301 CVariable& CCilVm::GetEvalStackSecondEntry() 
    302 
    303         assert( GetEvalStackSize() >= 2 ); 
     367/*************************************************************************** 
     368 *      getEvalStackSecondEntry 
     369 ***************************************************************************/ 
     370CVariable& CCilVm::getEvalStackSecondEntry() 
     371
     372        assert( getEvalStackSize() >= 2 ); 
    304373        return *(m_pCurrentEvalStack - 2); 
    305374} 
    306375 
    307 void CCilVm::ClearEvalStack() 
     376/*************************************************************************** 
     377 *      clearCallStack 
     378 ***************************************************************************/ 
     379void CCilVm::clearCallStack() 
     380
     381        m_CallStack.clear(); 
     382
     383 
     384/*************************************************************************** 
     385 *      clearStaticFields 
     386 ***************************************************************************/ 
     387void CCilVm::clearStaticFields() 
     388
     389        for( uint32_t i = 0; i < m_iStaticFieldTalbeSize; ++i ) 
     390        { 
     391                switch( OperandType( m_pStaticFieldTable[ i ].iOperandType ) ) 
     392                { 
     393                case OPERAND_OBJECTREF: 
     394                        m_pStaticFieldTable[ i ].i64Value = 0; 
     395                        break; 
     396                case OPERAND_STRING: 
     397                        delete(  m_pStaticFieldTable[ i ].pString ) ; 
     398                        m_pStaticFieldTable[ i ].pString = NULL; 
     399                        break; 
     400                default: 
     401                        m_pStaticFieldTable[ i ].i64Value = 0; 
     402                        break; 
     403                } 
     404        } 
     405
     406 
     407/*************************************************************************** 
     408 *      clearEvalStack 
     409 ***************************************************************************/ 
     410void CCilVm::clearEvalStack() 
    308411{ 
    309412        CVariable var ( 0 ); 
     
    317420} 
    318421 
    319 void CCilVm::ClearLocalVariableList() 
     422/*************************************************************************** 
     423 *      clearLocalVariableList 
     424 ***************************************************************************/ 
     425void CCilVm::clearLocalVariableList() 
    320426{ 
    321427        CVariable var ( 0 ); 
     
    328434} 
    329435 
    330 void CCilVm::ClearArgList() 
     436/*************************************************************************** 
     437 *      clearArgList 
     438 ***************************************************************************/ 
     439void CCilVm::clearArgList() 
    331440{ 
    332441        CVariable var ( 0 );