Ignore:
Timestamp:
Sep 9, 2007, 12:37:48 PM (17 years ago)
Author:
dai_9181
Message:

GCのバグをいくつか修正

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_Object.cpp

    r303 r319  
    205205
    206206
     207    //仮想関数テーブルを初期化
     208    if( classObj.IsExistVirtualFunctions()
     209        && !classObj.IsAbstract() )
     210    {
     211        // mov ecx,vtblAddress
     212        compiler.codeGenerator.op_mov_RV_vtbl( REG_ECX, &classObj );
     213
     214        //mov dword ptr[eax],ecx
     215        compiler.codeGenerator.op_mov_MR( sizeof(long), REG_ECX, REG_EAX, 0, MOD_BASE );
     216
     217        // 仮想関数になるメソッドに使用チェックをつける
     218        BOOST_FOREACH( const CMethod *pMethod, classObj.GetMethods() )
     219        {
     220            if( pMethod->IsVirtual() )
     221            {
     222                pMethod->GetUserProc().Using();
     223            }
     224        }
     225    }
     226
     227
    207228    // ※ここでプッシュされた値はNew演算子の戻り値となる
    208229    //push eax
Note: See TracChangeset for help on using the changeset viewer.