Changeset 94 in dev for BasicCompiler32
- Timestamp:
- Apr 14, 2007, 8:36:04 PM (18 years ago)
- Location:
- BasicCompiler32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler32/Compile_Object.cpp
r90 r94 18 18 jnz_back=obp; 19 19 20 //push ebx 21 op_push(REG_EBX); 20 if(bSomeObjects){ 21 SetError(); 22 23 //push ebx 24 op_push(REG_EBX); 25 } 22 26 23 27 // ※ここでプッシュされた値はコンストラクタのthisポインタとなる … … 71 75 op_pop(REG_EAX); 72 76 73 //pop ebx74 op_pop(REG_EBX);75 76 77 if(bSomeObjects){ 78 //pop ebx 79 op_pop(REG_EBX); 80 77 81 //add eax,TypeSize 78 82 OpBuffer[obp++]=(char)0x05; -
BasicCompiler32/Compile_ProcOp.cpp
r92 r94 873 873 } 874 874 875 //_System_TypeBase_InitializeUserTypesは一番最後にコンパイル 876 extern UserProc *pSubStaticMethod_System_TypeBase_InitializeUserTypes; 877 pSubStaticMethod_System_TypeBase_InitializeUserTypes->CompleteCompile(); 878 875 879 //_System_InitStaticLocalVariablesは一番最後にコンパイル 876 880 //※一般関数内の静的変数オブジェクトをすべて収集しなければならない … … 882 886 pSub_System_Call_Destructor_of_GlobalObject->CompleteCompile(); 883 887 884 Repeat:888 repeat: 885 889 for(i2=0;i2<MAX_HASH;i2++){ 886 890 pUserProc=ppSubHash[i2]; … … 891 895 } 892 896 893 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 894 for(i2=0;i2<MAX_HASH;i2++){ 895 pUserProc=ppSubHash[i2]; 896 while(pUserProc){ 897 if( pUserProc->IsUsing() && pUserProc->IsCompiled() == false ){ 898 goto Repeat; 899 } 900 901 pUserProc=pUserProc->pNextData; 897 if( IsNeedProcCompile() ){ 898 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 899 goto repeat; 900 } 901 902 //_System_TypeBase_InitializeUserTypesは最後のほうでコンパイル 903 pSubStaticMethod_System_TypeBase_InitializeUserTypes->KillCompileStatus(); 904 CompileBufferInProcedure( *pSubStaticMethod_System_TypeBase_InitializeUserTypes ); 905 906 if( IsNeedProcCompile() ){ 907 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 908 for(i2=0;i2<MAX_HASH;i2++){ 909 pUserProc=ppSubHash[i2]; 910 while(pUserProc){ 911 CompileBufferInProcedure( *pUserProc ); 912 pUserProc=pUserProc->pNextData; 913 } 902 914 } 903 915 } -
BasicCompiler32/NumOpe.cpp
r93 r94 224 224 || isNothing_stack[sp-2] ){ 225 225 // 同一の型、またはNothingに対するAsはAs演算子を呼び出さない 226 } 227 else if( idCalc == CALC_AS 228 && type_stack[sp-1] == ( DEF_OBJECT | FLAG_CAST ) 229 && ( ((CClass *)index_stack[sp-1])->IsEqualsOrSubClass( (CClass *)index_stack[sp-2] ) || ((CClass *)index_stack[sp-2])->IsEqualsOrSubClass( (CClass *)index_stack[sp-1] ) 230 )){ 231 // ダウンキャストを許可する 226 232 } 227 233 else{
Note:
See TracChangeset
for help on using the changeset viewer.