Changeset 31 in dev for BasicCompiler64
- Timestamp:
- Jan 13, 2007, 4:26:50 AM (18 years ago)
- Location:
- BasicCompiler64
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/CParameter.cpp
r28 r31 664 664 else{ 665 665 //型チェック 666 // TODO: _System_ReturnValueが考慮されていない? 666 667 if(bHas_System_LocalThis) i3=i2-1; 667 668 else i3=i2; -
BasicCompiler64/Compile_CallProc.cpp
r29 r31 68 68 69 69 70 ret_type=Opcode_CallProc(Parameter,psi,plpRetIndex,0,ObjectName,RefType); 70 Opcode_CallProc(Parameter,psi,0,ObjectName,RefType); 71 if( plpRetIndex ){ 72 *plpRetIndex = psi->u.ReturnIndex; 73 } 74 return psi->ReturnType; 71 75 } 72 76 else if(idProc==PROC_DLL){ … … 139 143 if(psi){ 140 144 //呼び出し 141 int type; 142 LONG_PTR lpIndex; 143 type=Opcode_CallProc(Parameter,psi,&lpIndex,0,ObjectName,RefType); 144 145 if(pRetTypeInfo){ 146 pRetTypeInfo->type=type; 147 pRetTypeInfo->u.lpIndex=lpIndex; 145 Opcode_CallProc(Parameter,psi,0,ObjectName,RefType); 146 147 if( pRetTypeInfo ){ 148 pRetTypeInfo->type = psi->ReturnType; 149 pRetTypeInfo->u.lpIndex = psi->u.ReturnIndex; 148 150 } 149 151 } … … 175 177 176 178 //エラーチェック 177 pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum); 179 if( !pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum) ){ 180 //パラメータにエラーがあるときは処理を終える 181 return pi->ReturnType; 182 } 178 183 179 184 //スタックフレームに存在する既存のパラメータをバックアップ … … 213 218 delete pobj_parameter; 214 219 215 if(plpIndex) *plpIndex=pi->u.ReturnIndex;216 217 220 return pi->ReturnType; 218 221 } 219 222 220 int Opcode_CallProc(char *Parameter,SUBINFO *psi,LONG_PTR *plpIndex,DWORD dwFlags,char *ObjectName,int RefType){223 void Opcode_CallProc(char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType){ 221 224 int i,i2; 222 225 … … 224 227 if(lstrcmpi(psi->name,"Print")==0){ 225 228 Opcode_Print(Parameter,0); 226 return -1;229 return; 227 230 } 228 231 if(lstrcmpi(psi->name,"Input")==0){ 229 232 Opcode_Input(Parameter); 230 return -1;233 return; 231 234 } 232 235 if(lstrcmpi(psi->name,"Write")==0){ 233 236 Opcode_Print(Parameter,1); 234 return -1;237 return; 235 238 } 236 239 } … … 282 285 if( !pMethod ){ 283 286 SetError(300,NULL,cp); 284 return -1;287 return; 285 288 } 286 289 … … 301 304 if(dwAccess==ACCESS_NON){ 302 305 SetError(109,psi->name,cp); 303 return -1;306 return; 304 307 } 305 308 } … … 308 311 dwAccess==ACCESS_NON){ 309 312 SetError(109,psi->name,cp); 310 return -1;313 return; 311 314 } 312 315 if(dwAccess==ACCESS_PROTECTED){ 313 316 SetError(110,psi->name,cp); 314 return -1;317 return; 315 318 } 316 319 } … … 320 323 if(dwAccess==ACCESS_NON){ 321 324 SetError(109,psi->name,cp); 322 return -1;325 return; 323 326 } 324 327 } … … 355 358 356 359 //エラーチェック 357 pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->SecondParmNum); 360 if( !pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->SecondParmNum) ){ 361 //パラメータにエラーがあるときは処理を終える 362 return; 363 } 358 364 359 365 if(psi->dwType==SUBTYPE_MACRO){ … … 425 431 if( pMethod->isConst ){ 426 432 //Constアクセスが可能なメソッドの場合 427 if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;433 if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return; 428 434 } 429 435 else{ 430 436 //Constアクセスが不可能なメソッドの場合 431 if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;437 if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return; 432 438 } 433 439 … … 509 515 //パラメータオブジェクトを破棄 510 516 delete pobj_parameter; 511 512 if(plpIndex) *plpIndex=psi->u.ReturnIndex;513 514 return psi->ReturnType;515 517 } 516 518 … … 536 538 537 539 //エラーチェック 538 pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum); 540 if( !pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum) ){ 541 //パラメータにエラーがあるときは処理を終える 542 return pdi->ReturnType; 543 } 539 544 540 545 //スタックフレームに存在する既存のパラメータをバックアップ -
BasicCompiler64/Compile_Object.cpp
r28 r31 48 48 Opcode_CallProc(CreateParameter, 49 49 psi, 50 0,51 50 PROCFLAG_NEW,"",0); 52 51 -
BasicCompiler64/Compile_ProcOp.cpp
r28 r31 547 547 pobj_CompilingClass->ppobj_Method[i3]->psi, 548 548 0, 549 0,550 549 "", 551 550 0); … … 556 555 Opcode_CallProc("", 557 556 pobj_CompilingClass->ppobj_Method[i3]->psi, 558 0,559 557 0, 560 558 "", … … 663 661 pobj_CompilingClass->ppobj_Method[i3]->psi, 664 662 0, 665 0,666 663 "", 667 664 0); -
BasicCompiler64/Compile_Statement.cpp
r11 r31 60 60 if(psi->dwType!=SUBTYPE_MACRO) SetError(10,Command,cp); 61 61 62 Opcode_CallProc("",psi,0, 0,"",0);62 Opcode_CallProc("",psi,0,"",0); 63 63 64 64 return; … … 838 838 } 839 839 840 PARAMETER_INFO *ppi ;840 PARAMETER_INFO *ppi = (PARAMETER_INFO *)HeapAlloc(hHeap,0,sizeof(PARAMETER_INFO)*3); 841 841 int iParmNum=0; 842 843 //_System_LocalThis844 ppi=(PARAMETER_INFO *)HeapAlloc(hHeap,0,sizeof(PARAMETER_INFO)*3);845 ppi[iParmNum].bArray=0;846 ppi[iParmNum].bByVal=0;847 ppi[iParmNum].name=0;848 ppi[iParmNum].type=DEF_PTR_VOID;849 ppi[iParmNum].u.index=-1;850 ppi[iParmNum].SubScripts[0]=-1;851 iParmNum++;852 853 842 ppi[iParmNum].bArray=0; 854 843 ppi[iParmNum].bByVal=0; … … 1206 1195 return; 1207 1196 } 1208 Opcode_CallProc(buffer,psi,0, 0,"",0);1197 Opcode_CallProc(buffer,psi,0,"",0); 1209 1198 } 1210 1199 void Opcode_PrintUsing(char *Parameter,char *buffer,BOOL bFile){ … … 1305 1294 return; 1306 1295 } 1307 Opcode_CallProc(buffer,psi,0, 0,"",0);1296 Opcode_CallProc(buffer,psi,0,"",0); 1308 1297 } 1309 1298 void Opcode_Print(char *Parameter,BOOL bWrite){ … … 1411 1400 return; 1412 1401 } 1413 Opcode_CallProc(buffer,psi,0, 0,"",0);1402 Opcode_CallProc(buffer,psi,0,"",0); 1414 1403 } 1415 1404 -
BasicCompiler64/Opcode.h
r20 r31 389 389 #define PROCFLAG_NEW 1 390 390 int Opcode_CallProcPtr(char *variable,char *Parameter,PROCPTRINFO *pi,LONG_PTR *plpIndex); 391 int Opcode_CallProc(char *Parameter,SUBINFO *psi,LONG_PTR *plpIndex,DWORD dwFlags,char *ObjectName,int RefType);391 void Opcode_CallProc(char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType); 392 392 int Opcode_CallDllProc(char *Parameter,DECLAREINFO *pdi,LONG_PTR *plpIndex); 393 393 -
BasicCompiler64/OperatorProc.cpp
r11 r31 69 69 ///////////////////////////////////////////// 70 70 71 PARAMETER_INFO *ppi ;71 PARAMETER_INFO *ppi = (PARAMETER_INFO *)HeapAlloc(hHeap,0,sizeof(PARAMETER_INFO)*3); 72 72 int iParmNum=0; 73 74 //_System_LocalThis75 ppi=(PARAMETER_INFO *)HeapAlloc(hHeap,0,sizeof(PARAMETER_INFO)*3);76 ppi[iParmNum].bArray=0;77 ppi[iParmNum].bByVal=0;78 ppi[iParmNum].name=0;79 ppi[iParmNum].type=DEF_PTR_VOID;80 ppi[iParmNum].u.index=-1;81 ppi[iParmNum].SubScripts[0]=-1;82 iParmNum++;83 73 84 74 if(bTwoTerm){ … … 461 451 ////////////////////////////////////////////////////// 462 452 463 RetTypeInfo.type=Opcode_CallProc(Parameter,ppsi[0],&RetTypeInfo.u.lpIndex,0,ObjectName,DEF_OBJECT); 453 Opcode_CallProc(Parameter,ppsi[0],0,ObjectName,DEF_OBJECT); 454 RetTypeInfo.type = ppsi[0]->ReturnType; 455 RetTypeInfo.u.lpIndex = ppsi[0]->u.ReturnIndex; 464 456 465 457 //mov reg,rax
Note:
See TracChangeset
for help on using the changeset viewer.