Changeset 73 in dev for BasicCompiler64/OperatorProc.cpp


Ignore:
Timestamp:
Mar 16, 2007, 11:07:14 PM (18 years ago)
Author:
dai_9181
Message:

Parameterクラスを適用。32bit側は動くようになったので、64bitのほうを調整する。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/OperatorProc.cpp

    r64 r73  
    2323
    2424    //call free
    25     extern SUBINFO *pSub_free;
     25    extern SubInfo *pSub_free;
    2626    op_call(pSub_free);
    2727}
     
    3232    pobj_c=(CClass *)index_stack[sp-2];
    3333
    34     std::vector<SUBINFO *> subs;
     34    std::vector<SubInfo *> subs;
    3535    pobj_c->EnumMethod( idCalc, subs );
    3636    if( subs.size() == 0 ){
     
    8484    if(idCalc==CALC_EQUAL) lstrcpy(temporary,"==");
    8585    else GetCalcName(idCalc,temporary);
    86     SUBINFO *psi;
     86    SubInfo *psi;
    8787    psi=OverloadSolution(temporary,subs,ppi,iParmNum,pBaseTypeInfo);
    8888
     
    9494    else{
    9595        //オーバーロードされていないが、パラメータ個数が一致しないとき
    96         if(iParmNum!=psi->ParmNum){
     96        if(iParmNum!=psi->params.size()){
    9797            HeapDefaultFree(ppi);
    9898            return -1;
     
    102102    for(i=0;i<iParmNum;i++){
    103103        CheckDifferentType(
    104             psi->pParmInfo[i].type,
    105             psi->pParmInfo[i].u.index,
     104            psi->params[i]->GetBasicType(),
     105            psi->params[i]->GetIndex(),
    106106            ppi[i].type,
    107107            ppi[i].u.index,
     
    113113
    114114    if(bTwoTerm){
    115         if(psi->pRealParmInfo[1].type==DEF_STRUCT&&psi->pRealParmInfo[1].bByVal){
     115        if( psi->realParams[1]->IsStruct() && psi->realParams[1]->IsRef() == false ){
    116116            //一時オブジェクトはメソッド内で破棄される
    117117            bUseHeap[sp-1]=0;
     
    137137
    138138            //call calloc
    139             extern SUBINFO *pSub_calloc;
     139            extern SubInfo *pSub_calloc;
    140140            op_call(pSub_calloc);
    141141
     
    154154        SetOneTermToReg_Whole64Calc(type[sp-1],&reg2);
    155155        pobj_reg->UnlockReg();
    156         if( !psi->pRealParmInfo[1].bByVal ){
     156        if( !psi->realParams[1]->IsRef() == false ){
    157157            //一時参照を作成
    158158            pobj_sf->push( reg2 );
     
    253253
    254254    if(bTwoTerm){
    255         if( !psi->pRealParmInfo[1].bByVal ){
     255        if( !psi->realParams[1]->IsRef() == false ){
    256256            //一時参照を破棄
    257257            pobj_sf->pop();
     
    341341void CallIndexerGetterProc(int reg,CClass *pobj_Class,char *ObjectName,char *Parameter,TYPEINFO &RetTypeInfo){
    342342
    343     std::vector<SUBINFO *> subs;
     343    std::vector<SubInfo *> subs;
    344344    pobj_Class->EnumMethod( CALC_ARRAY_GET, subs );
    345345    if( subs.size() == 0 ){
Note: See TracChangeset for help on using the changeset viewer.