Changeset 272 in dev
- Timestamp:
- Aug 10, 2007, 9:20:45 PM (17 years ago)
- Location:
- trunk/abdev
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
r266 r272 791 791 } 792 792 793 //_System_TypeBase_InitializeUserTypesは最後のほうでコンパイル 794 pSubStaticMethod_System_TypeBase_InitializeUserTypes->KillCompileStatus(); 795 CompileBufferInProcedure( *pSubStaticMethod_System_TypeBase_InitializeUserTypes ); 796 797 if( IsNeedProcCompile() ){ 798 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 799 800 compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset(); 801 while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() ) 802 { 803 UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext(); 804 CompileBufferInProcedure( *pUserProc ); 805 } 806 } 807 808 //_System_InitStaticLocalVariablesは一番最後にコンパイル 809 pSub_System_InitStaticLocalVariables->KillCompileStatus(); 810 CompileBufferInProcedure( *pSub_System_InitStaticLocalVariables ); 811 812 //_System_Call_Destructor_of_GlobalObjectは一番最後にコンパイル 813 pSub_System_Call_Destructor_of_GlobalObject->KillCompileStatus(); 814 CompileBufferInProcedure( *pSub_System_Call_Destructor_of_GlobalObject ); 793 if( !compiler.IsStaticLibrary() ) 794 { 795 //_System_TypeBase_InitializeUserTypesは最後のほうでコンパイル 796 pSubStaticMethod_System_TypeBase_InitializeUserTypes->KillCompileStatus(); 797 CompileBufferInProcedure( *pSubStaticMethod_System_TypeBase_InitializeUserTypes ); 798 799 if( IsNeedProcCompile() ){ 800 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 801 802 compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset(); 803 while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() ) 804 { 805 UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext(); 806 CompileBufferInProcedure( *pUserProc ); 807 } 808 } 809 810 //_System_InitStaticLocalVariablesは一番最後にコンパイル 811 pSub_System_InitStaticLocalVariables->KillCompileStatus(); 812 CompileBufferInProcedure( *pSub_System_InitStaticLocalVariables ); 813 814 //_System_Call_Destructor_of_GlobalObjectは一番最後にコンパイル 815 pSub_System_Call_Destructor_of_GlobalObject->KillCompileStatus(); 816 CompileBufferInProcedure( *pSub_System_Call_Destructor_of_GlobalObject ); 817 } 815 818 } -
trunk/abdev/BasicCompiler32/MakePeHdr.cpp
r271 r272 174 174 HeapDefaultFree(temp); 175 175 176 //関数ポインタ情報を初期化177 compiler.GetObjectModule().meta.GetProcPointers().clear();178 179 176 // 名前空間情報を取得 180 177 NamespaceSupporter::CollectNamespaces( … … 189 186 190 187 //TypeDef情報を初期化 191 compiler.GetObjectModule().meta.GetTypeDefs(). Init();188 compiler.GetObjectModule().meta.GetTypeDefs().CollectTypeDefs(); 192 189 193 190 //定数情報を取得 -
trunk/abdev/BasicCompiler_Common/Intermediate_Step2.cpp
r265 r272 93 93 NamespaceScopes &namespaceScopes = compiler.GetNamespaceSupporter().GetLivingNamespaceScopes(); 94 94 namespaceScopes.clear(); 95 96 //定数に関する情報を初期化97 compiler.GetObjectModule().meta.GetGlobalConsts().Clear();98 compiler.GetObjectModule().meta.GetGlobalConstMacros().Clear();99 95 100 96 extern char *basbuf; -
trunk/abdev/BasicCompiler_Common/MakeExe.cpp
r268 r272 137 137 138 138 //グローバル変数に関する情報 139 // TODO: AllGlobalVarSize、AllInitGlobalVarSizeをVariablesクラスに入れる 139 140 extern int AllGlobalVarSize; 140 141 extern int AllInitGlobalVarSize; -
trunk/abdev/BasicCompiler_Common/Subroutine.cpp
r265 r272 282 282 int i,i2,i3; 283 283 char temporary[8192]; 284 285 //サブルーチン(ユーザー定義)情報を初期化286 userProcs.Clear();287 288 //Declare(DLL関数)情報を初期化289 dllProcs.Clear();290 284 291 285 // 名前空間管理 … … 408 402 if(source[i]=='\0') break; 409 403 } 410 411 ////////////412 // 特殊関数413 ////////////414 namespaceScopes.clear();415 importedNamespaces.clear();416 417 #ifndef _AMD64_418 sprintf(temporary,"%c%c_allrem()",1,ESC_SUB);419 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);420 421 sprintf(temporary,"%c%c_aullrem()",1,ESC_SUB);422 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);423 424 sprintf(temporary,"%c%c_allmul()",1,ESC_SUB);425 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);426 427 sprintf(temporary,"%c%c_alldiv()",1,ESC_SUB);428 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);429 430 sprintf(temporary,"%c%c_aulldiv()",1,ESC_SUB);431 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);432 433 sprintf(temporary,"%c%c_allshl()",1,ESC_SUB);434 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);435 436 sprintf(temporary,"%c%c_allshr()",1,ESC_SUB);437 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);438 439 sprintf(temporary,"%c%c_aullshr()",1,ESC_SUB);440 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);441 #endif442 443 sprintf(temporary,"%c%c_System_InitStaticLocalVariables()",1,ESC_SUB);444 userProcs.Add( namespaceScopes, importedNamespaces, temporary,0,false,NULL,false);445 404 } 446 405 void Delete_di(DllProc *pDllProc){ -
trunk/abdev/BasicCompiler_Common/gc.cpp
r229 r272 19 19 /////////////////////////////// 20 20 21 sprintf(temporary,"_System_gc_StackRoot_StartPtr%c%c*LONG_PTR",1,ESC_AS); 22 OpcodeDim(temporary,0); 21 if( compiler.GetObjectModule().meta.GetGlobalVars().Find( Symbol( "_System_gc_StackRoot_StartPtr" ) ) == NULL ) 22 { 23 // 未定義の場合は定義する 24 sprintf(temporary,"_System_gc_StackRoot_StartPtr%c%c*LONG_PTR",1,ESC_AS); 25 OpcodeDim(temporary,0); 26 } 23 27 24 28 GetVarOffsetReadWrite("_System_gc_StackRoot_StartPtr",&RelativeVar,type); -
trunk/abdev/BasicCompiler_Common/include/Class.h
r270 r272 419 419 // 特殊クラス 420 420 ///////////////////////////// 421 CClass *pStringClass;422 CClass *pObjectClass;423 CClass *GetStringClassPtr() const;424 CClass *GetObjectClassPtr() const;421 mutable const CClass *pStringClass; 422 mutable const CClass *pObjectClass; 423 const CClass *GetStringClassPtr() const; 424 const CClass *GetObjectClassPtr() const; 425 425 }; -
trunk/abdev/BasicCompiler_Common/include/Meta.h
r270 r272 70 70 { 71 71 } 72 73 // 初期化 74 void Clear(); 72 75 73 76 // 静的リンク -
trunk/abdev/BasicCompiler_Common/include/NativeCode.h
r265 r272 44 44 ar & BOOST_SERIALIZATION_NVP( type ); 45 45 ar & BOOST_SERIALIZATION_NVP( offset ); 46 47 switch( type ) 48 { 49 case UserProc: 50 case AddressOf: 51 ar & BOOST_SERIALIZATION_NVP( const_cast<::UserProc *&>(pUserProc) ); 52 break; 53 case DllProc: 54 ar & BOOST_SERIALIZATION_NVP( const_cast<::DllProc *&>(pDllProc) ); 55 break; 56 default: 57 ar & BOOST_SERIALIZATION_NVP( lpValue ); 58 break; 59 } 46 60 } 47 61 -
trunk/abdev/BasicCompiler_Common/include/TypeDef.h
r215 r272 74 74 void Add( const NamespaceScopes &namespaceScopes, const string &expression, int nowLine ); 75 75 public: 76 void Init();76 void CollectTypeDefs(); 77 77 }; -
trunk/abdev/BasicCompiler_Common/src/Class.cpp
r270 r272 219 219 if( !isInheritsClass ){ 220 220 // クラスを一つも継承していないとき 221 const CClass *pObjectClass = compiler.GetObjectModule().meta.GetClasses().Find("Object"); 222 if( !pObjectClass ){ 223 SmoothieException::Throw(106,"Object",i); 224 return false; 225 } 226 227 if( !InheritsClass( *pObjectClass, nowLine ) ){ 221 if( !InheritsClass( *compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr(), nowLine ) ){ 228 222 return false; 229 223 } … … 763 757 bool Classes::Insert( CClass *pClass ) 764 758 { 765 // キャッシュしておくクラス766 if( pClass->GetName() == "String" )767 {768 pStringClass=pClass;769 }770 else if( pClass->GetName() == "Object" )771 {772 pObjectClass = pClass;773 }774 775 759 ///////////////////////////////// 776 760 // ハッシュデータに追加 … … 804 788 int i, i2; 805 789 char temporary[VN_SIZE]; 806 807 // Blittable型管理オブジェクトを初期化808 compiler.GetObjectModule().meta.GetBlittableTypes().clear();809 790 810 791 // 名前空間管理 … … 953 934 while(this->Iterator_HasNext()){ 954 935 CClass &objClass = *this->Iterator_GetNext(); 936 if( objClass.isTargetObjectModule == false ) 937 { 938 // 静的リンクライブラリの場合は飛ばす(既にインスタンスが定義済みであるため) 939 continue; 940 } 955 941 956 942 // 名前空間をセット … … 1653 1639 } 1654 1640 1655 CClass *Classes::GetStringClassPtr() const1641 const CClass *Classes::GetStringClassPtr() const 1656 1642 { 1657 1643 if( !pStringClass ){ 1658 SmoothieException::Throw(); 1659 return NULL; 1644 // キャッシュしておく 1645 pStringClass = this->Find( NamespaceScopes( "System" ), "String" ); 1646 1647 if( !pStringClass ) 1648 { 1649 SmoothieException::Throw(); 1650 } 1651 return pStringClass; 1660 1652 } 1661 1653 return pStringClass; 1662 1654 } 1663 CClass *Classes::GetObjectClassPtr() const1655 const CClass *Classes::GetObjectClassPtr() const 1664 1656 { 1665 1657 if( !pObjectClass ){ 1666 SmoothieException::Throw(); 1667 return NULL; 1658 // キャッシュしておく 1659 pObjectClass = this->Find( NamespaceScopes( "System" ), "Object" ); 1660 1661 if( !pObjectClass ) 1662 { 1663 SmoothieException::Throw(); 1664 } 1665 return pObjectClass; 1668 1666 } 1669 1667 return pObjectClass; -
trunk/abdev/BasicCompiler_Common/src/Meta.cpp
r271 r272 2 2 3 3 #include <Compiler.h> 4 5 void Meta::Clear() 6 { 7 // 名前空間 8 namespaceScopesCollection.clear(); 9 10 // 関数・メソッド 11 userProcs.Clear(); 12 13 // DLL関数 14 dllProcs.Clear(); 15 16 // クラス 17 classesImpl.Clear(); 18 19 // グローバル変数 20 globalVars.Clear(); 21 22 // グローバル定数 23 globalConsts.Clear(); 24 25 // グローバル定数マクロ 26 globalConstMacros.Clear(); 27 28 // blittable型 29 blittableTypes.clear(); 30 31 // TypeDef 32 typeDefs.clear(); 33 34 // 関数ポインタ 35 procPointers.Clear(); 36 } 4 37 5 38 void Meta::StaticLink( Meta &meta ) -
trunk/abdev/BasicCompiler_Common/src/TypeDef.cpp
r206 r272 142 142 } 143 143 144 void TypeDefCollection::Init(){ 145 // 初期化 146 clear(); 144 void TypeDefCollection::CollectTypeDefs(){ 147 145 148 146 // 名前空間管理
Note:
See TracChangeset
for help on using the changeset viewer.