Changeset 331 in dev for trunk/abdev/BasicCompiler64
- Timestamp:
- Sep 27, 2007, 1:47:46 AM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler64
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/CParameter.cpp
r316 r331 282 282 temp_reg=reg; 283 283 284 extern LONG_PTR ProcPtr_BaseIndex;285 LONG_PTR back_ProcPtr_BaseIndex = ProcPtr_BaseIndex;286 if( dummyType.IsProcPtr() ){287 ProcPtr_BaseIndex = dummyType.GetIndex();288 }289 else{290 ProcPtr_BaseIndex=-1;291 }292 293 284 BOOL bCalcUseHeap; 294 285 Type calcType; … … 296 287 break; 297 288 } 298 299 ProcPtr_BaseIndex=back_ProcPtr_BaseIndex;300 289 301 290 if( calcType.IsObject() ){ -
trunk/abdev/BasicCompiler64/Compile_Calc.cpp
r316 r331 150 150 void *pProc; 151 151 idProc=GetProc(temporary,(void **)&pProc); 152 if(idProc){ 153 CallProc(idProc,pProc,temporary,temp2,Type()); 152 if( idProc ) 153 { 154 CallProc( 155 idProc, 156 pProc, 157 temporary, 158 temp2, 159 Type(), // ベースタイプはなし 160 Type() 161 ); 154 162 return; 155 163 } … … 181 189 return; 182 190 } 183 184 extern LONG_PTR ProcPtr_BaseIndex;185 if(varType.IsProcPtr()) ProcPtr_BaseIndex=varType.GetIndex();186 else ProcPtr_BaseIndex=-1;187 191 188 192 //NumOpe...(rax、またはxmm0に答えが格納される) -
trunk/abdev/BasicCompiler64/Compile_Func.cpp
r330 r331 70 70 return; 71 71 } 72 void Opcode_Func_AddressOf( const char *name ){72 void Opcode_Func_AddressOf( const char *name, const Type &baseType ){ 73 73 extern int cp; 74 74 const UserProc *pUserProc; 75 75 76 extern LONG_PTR ProcPtr_BaseIndex;77 if(ProcPtr_BaseIndex!=-1){76 if( baseType.IsProcPtr() ) 77 { 78 78 //左辺の型にのっとり、オーバーロードを解決 79 79 … … 86 86 87 87 //オーバーロードを解決 88 pUserProc=OverloadSolution(name,subs,compiler.GetObjectModule().meta.GetProcPointers()[ ProcPtr_BaseIndex]->Params(), Type() );88 pUserProc=OverloadSolution(name,subs,compiler.GetObjectModule().meta.GetProcPointers()[baseType.GetIndex()]->Params(), Type() ); 89 89 90 90 if(!pUserProc){ … … 299 299 } 300 300 301 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &resultType, bool isCallOn ){ 301 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, const Type &baseType, Type &resultType, bool isCallOn ) 302 { 302 303 switch(FuncNum){ 303 304 case FUNC_LEN: … … 306 307 break; 307 308 case FUNC_ADDRESSOF: 308 if( isCallOn ) Opcode_Func_AddressOf( Parameter);309 if( isCallOn ) Opcode_Func_AddressOf( Parameter, baseType ); 309 310 resultType.SetBasicType( DEF_PTR_VOID ); 310 311 break; -
trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
r319 r331 497 497 , compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str() 498 498 , temporary 499 , dummyType ); 499 , Type() // baseTypeはなし 500 , dummyType 501 ); 500 502 } 501 503 else{ -
trunk/abdev/BasicCompiler64/NumOpe.cpp
r319 r331 262 262 bool isClassName = false; 263 263 Type leftType; 264 if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){264 if( GetTermType( termLeft, Type(), leftType, isLiteral, &isClassName ) ){ 265 265 if( isClassName == false && compiler.GetObjectModule().meta.GetBlittableTypes().IsExist( leftType ) ){ 266 266 // 左側のオブジェクト部分がBlittable型のとき … … 354 354 //////////////// 355 355 356 CallProc(idProc,pInfo,procName,parameter, resultType);356 CallProc(idProc,pInfo,procName,parameter, baseType,resultType); 357 357 358 358 -
trunk/abdev/BasicCompiler64/Opcode.h
r330 r331 334 334 //Compile_Func.cpp 335 335 int GetFunctionFromName(char *FuncName); 336 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &ReturnTypeInfo, bool isCallOn = true );336 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, const Type &baseType, Type &resultType, bool isCallOn = true ); 337 337 338 338 //OperatorProc.cpp
Note:
See TracChangeset
for help on using the changeset viewer.