Ignore:
Timestamp:
Mar 20, 2007, 4:36:16 AM (17 years ago)
Author:
dai_9181
Message:

TYPEINFO→Typeへのリファクタリングを実施。64bitはほぼ完了。32bitが全般的に未完成。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Compile_Set_Var.cpp

    r73 r75  
    77}
    88
    9 void SetStructVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap){
     9void SetStructVariableFromRax( const Type &varType, const Type &calcType, RELATIVE_VAR *pRelativeVar,BOOL bUseHeap){
    1010    int RightTermReg;
    1111    pobj_reg=new CRegister(REG_RCX);
     
    1717
    1818    //右辺
    19     if(IsRealNumberType(CalcType)){
     19    if( calcType.IsReal() ){
    2020        RightTermReg=pobj_reg->LockXmmReg();
    2121
    22         if(CalcType==DEF_DOUBLE){
     22        if( calcType.IsDouble() ){
    2323            //movlsd RightTermReg,xmm0
    2424            op_movsd_RR(RightTermReg,REG_XMM0);
    2525        }
    26         else if(CalcType==DEF_SINGLE){
     26        else if( calcType.IsSingle() ){
    2727            //movlss RightTermReg,xmm0
    2828            op_movss_RR(RightTermReg,REG_XMM0);
     
    6262*/
    6363    //右辺用レジスタを解除
    64     if(IsRealNumberType(CalcType)) pobj_reg->UnlockXmmReg();
     64    if( calcType.IsReal() ) pobj_reg->UnlockXmmReg();
    6565    else pobj_reg->UnlockReg();
    6666
     
    7373
    7474
    75     if( CalcType == DEF_STRUCT ){
    76         CClass *pVarClass = (CClass *)lpVarIndex;
    77         CClass *pCalcClass = (CClass *)lpCalcIndex;
    78 
    79         if( pVarClass->IsEquals( pCalcClass ) ){            //等しい
     75    if( calcType.IsStruct() ){
     76        if( varType.GetClass().IsEquals( &calcType.GetClass() ) ){          //等しい
    8077
    8178                //双方のオブジェクト型が一致、または派生・継承関係にあるとき
     
    8885                op_mov_RR(REG_RDI,VarReg);
    8986
    90                 CClass *pClass = (CClass *)lpVarIndex;
    91                 int object_size = pClass->GetSize();
     87                int object_size = varType.GetClass().GetSize();
    9288
    9389                //mov rcx,object_size
     
    107103
    108104                    //call free
    109                     extern SubInfo *pSub_free;
     105                    extern UserProc *pSub_free;
    110106                    op_call(pSub_free);
    111107                }
Note: See TracChangeset for help on using the changeset viewer.