Changeset 339 in dev for trunk/abdev/BasicCompiler64/Compile_CallProc.cpp
- Timestamp:
- Oct 3, 2007, 3:42:05 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/Compile_CallProc.cpp
r330 r339 198 198 return false; 199 199 } 200 if( pMethod->IsProtected() ){200 if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){ 201 201 SetError(110,pUserProc->GetName(),cp); 202 202 return false; … … 477 477 void Opcode_CallDelegate( const Delegate &dg, const char *methodPtrValueStr, const char *objPtrValueStr, const char *params ) 478 478 { 479 extern BOOL bDebugCompile; 480 extern BOOL bDebugSupportProc; 481 if(bDebugCompile&&bDebugSupportProc==0) 482 Call_DebugSys_SaveContext(); 483 484 479 485 /////////////////////////////////////////////////////////////// 480 486 // _System_LocalThisのダミーをセット … … 482 488 483 489 char temporary[VN_SIZE]={0}; 490 bool isDynamicCall = false; 484 491 if( objPtrValueStr && objPtrValueStr[0] ){ 485 492 //_System_LocalThis(第一パラメータ)のダミーを作成 486 493 lstrcpy(temporary,"0,"); 494 495 isDynamicCall = true; 487 496 } 488 497 if( dg.ReturnType().IsStruct() ){ … … 495 504 else lstrcat(temporary,params); 496 505 497 498 ParamImpl *pobj_parameter = new ParamImpl( params ); 506 const Parameters *pParams = &dg.Params(); 507 if( isDynamicCall ) 508 { 509 pParams = &dg.GetDynamicParams(); 510 } 511 512 513 ParamImpl *pobj_parameter = new ParamImpl( temporary ); 499 514 500 515 //スタックフレームに存在する既存のパラメータをバックアップ 501 pobj_parameter->BackupParameter( (int) dg.Params().size() );516 pobj_parameter->BackupParameter( (int)pParams->size() ); 502 517 503 518 //一時オブジェクトを生成 504 pobj_parameter->NewTempParameters( dg.GetName(), dg.Params());519 pobj_parameter->NewTempParameters( dg.GetName(), *pParams ); 505 520 506 521 //レジスタ、スタックフレームにセット 507 pobj_parameter->SetParameter( dg.GetName(), dg.Params());522 pobj_parameter->SetParameter( dg.GetName(), *pParams ); 508 523 509 524 … … 551 566 552 567 //スタックフレームに存在する既存のパラメータを復元 553 pobj_parameter->RestoreParameter( (int) dg.Params().size() );568 pobj_parameter->RestoreParameter( (int)pParams->size() ); 554 569 555 570 //パラメータオブジェクトを破棄
Note:
See TracChangeset
for help on using the changeset viewer.