Changeset 317 in dev for trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
- Timestamp:
- Sep 8, 2007, 8:43:18 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
r316 r317 510 510 //仮想関数テーブルを初期化 511 511 if( compiler.pCompilingClass->IsExistVirtualFunctions() 512 && !compiler.pCompilingClass->IsAbstract() ){ 513 //関数テーブルに値をセット 514 int offset = (int)compiler.pCompilingClass->GetVtblGlobalOffset(); 515 516 //mov rax,offset 517 compiler.codeGenerator.op_mov_RV(sizeof(_int64),REG_RAX,offset, Schedule::DataTable ); 518 519 //Thisポインタをrcxにコピー 520 SetThisPtrToReg(REG_RCX); 521 522 //mov qword ptr[rcx],rax 523 compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,REG_RCX,0,MOD_BASE); 512 && !compiler.pCompilingClass->IsAbstract() ) 513 { 514 // mov rax,vtblAddress 515 compiler.codeGenerator.op_mov_RV_vtbl( REG_RAX, compiler.pCompilingClass ); 516 517 //Thisポインタをrcxにコピー 518 SetThisPtrToReg(REG_RCX); 519 520 //mov qword ptr[rcx],rax 521 compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,REG_RCX,0,MOD_BASE); 522 523 524 // 仮想関数になるメソッドに使用チェックをつける 525 BOOST_FOREACH( const CMethod *pMethod, compiler.pCompilingClass->GetMethods() ) 526 { 527 if( pMethod->IsVirtual() ) 528 { 529 pMethod->GetUserProc().Using(); 530 } 531 } 524 532 } 525 533 }
Note:
See TracChangeset
for help on using the changeset viewer.