Changeset 677 in dev for trunk


Ignore:
Timestamp:
Jun 30, 2008, 12:38:54 AM (16 years ago)
Author:
dai_9181
Message:

値渡しの構造体パラメータが正常に引き渡されない不具合を修正。

Location:
trunk/ab5.0/abdev
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp

    r649 r677  
    425425        else{
    426426            offset=pobj_dti->lplpSpBase[i2]+pVar->GetOffsetAddress();
    427             if(pVar->IsRef()){
     427            if( pVar->IsRef() || pVar->IsByValStructParameter() )
     428            {
    428429                ReadProcessMemory(hDebugProcess,(void *)offset,&lpData,sizeof(LONG_PTR),&accessBytes);
    429430                offset=lpData;
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalScope.cpp

    r537 r677  
    120120        if( pVar->GetScopeLevel() != GetNowLevel() ) continue;
    121121
    122         if( pVar->GetType().IsStruct() && pVar->IsParameter() ){
     122        if( pVar->IsByValStructParameter() ){
    123123            //構造体パラメータを持つとき
    124124
  • trunk/ab5.0/abdev/ab_common/include/Lexical/Variable.h

    r640 r677  
    9999    }
    100100
    101     void ThisIsParameter(){
     101    void ThisIsByValStructParameter(){
    102102        isParameter = true;
    103103    }
    104     bool IsParameter() const
     104    bool IsByValStructParameter() const
    105105    {
    106106        return isParameter;
  • trunk/ab5.0/abdev/compiler_x64/Compile_ProcOp.cpp

    r643 r677  
    299299        if( param.IsRef() == false && param.IsStruct() ){
    300300            //構造体のByValパラメータ
    301             pVar->ThisIsParameter();
     301            pVar->ThisIsByValStructParameter();
    302302            varSize=PTR_SIZE;
    303303        }
  • trunk/ab5.0/abdev/compiler_x64/Compile_Var.cpp

    r643 r677  
    434434            pRelativeVar->offset=-pVar->GetOffsetAddress();
    435435            pRelativeVar->bOffsetOffset=0;
    436             if( pVar->IsRef() ){
     436            if( pVar->IsRef() || pVar->IsByValStructParameter() )
     437            {
    437438                // 参照型
    438439                pRelativeVar->dwKind = VAR_REFLOCAL;
  • trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp

    r642 r677  
    347347        if( param.IsRef() == false && param.IsStruct() ){
    348348            //構造体のByValパラメータ
    349             pVar->ThisIsParameter();
     349            pVar->ThisIsByValStructParameter();
    350350            varSize=PTR_SIZE;
    351351        }
  • trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp

    r641 r677  
    409409            pRelativeVar->offset=-pVar->GetOffsetAddress();
    410410            pRelativeVar->bOffsetOffset=0;
    411             if( pVar->IsRef() ){
     411            if( pVar->IsRef() || pVar->IsByValStructParameter() ){
    412412                // 参照型
    413413                pRelativeVar->dwKind = VAR_REFLOCAL;
Note: See TracChangeset for help on using the changeset viewer.