Ignore:
Timestamp:
Dec 28, 2006, 5:24:48 AM (17 years ago)
Author:
dai_9181
Message:

参照型パラメータに関数の戻り値オブジェクトを指定した場合などの、一時オブジェクトの扱いを可能にした。
Dimで指定される初期値を見分けることで、As指定を省略できるようにした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/Compile_CallProc.cpp

    r18 r20  
    176176    pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum);
    177177
     178    //一時オブジェクトを生成
     179    pobj_parameter->NewTempParameters( variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum );
     180
    178181    //レジスタ、スタックフレームにセット
    179182    pobj_parameter->SetParameter(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum);
    180183
    181     //パラメータオブジェクトを破棄
    182     delete pobj_parameter;
    183 
    184 
     184
     185
     186    ////////////////////////
     187    // call
     188    ////////////////////////
    185189    RELATIVE_VAR RelativeVar;
    186190    LONG_PTR lp;
     
    195199    OpBuffer[obp++]=(char)0xFF;
    196200    OpBuffer[obp++]=(char)0xD0;
     201
     202
     203
     204    //一時オブジェクトを破棄
     205    pobj_parameter->DeleteTempParameters();
     206
     207    //パラメータオブジェクトを破棄
     208    delete pobj_parameter;
    197209
    198210    if(plpIndex) *plpIndex=pi->u.ReturnIndex;
     
    343355    }
    344356
     357    //一時オブジェクトを生成
     358    pobj_parameter->NewTempParameters( psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->RealSecondParmNum );
     359
    345360    //レジスタ、スタックフレームにセット
    346361    int ParmSize;
    347362    ParmSize=pobj_parameter->SetParameter(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->RealSecondParmNum);
    348 
    349     //パラメータオブジェクトを破棄
    350     delete pobj_parameter;
    351363
    352364
     
    469481    }
    470482
     483    //一時オブジェクトを破棄
     484    pobj_parameter->DeleteTempParameters();
     485
     486    //パラメータオブジェクトを破棄
     487    delete pobj_parameter;
     488
    471489    if(plpIndex) *plpIndex=psi->u.ReturnIndex;
    472490
Note: See TracChangeset for help on using the changeset viewer.