Changeset 183 in dev for trunk/abdev/BasicCompiler32/MakePeHdr.cpp
- Timestamp:
- Jun 24, 2007, 6:50:40 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/MakePeHdr.cpp
r165 r183 1 1 #include <jenga/include/common/Environment.h> 2 3 #include <jenga/include/smoothie/Smoothie.h> 4 5 #include <LexicalScopingImpl.h> 6 #include <ClassImpl.h> 7 #include <Compiler.h> 2 8 3 9 #include "../BasicCompiler_Common/common.h" … … 134 140 ////////////////// 135 141 // データテーブル 136 dataTable.Init();142 Compiler::GetNativeCode().GetDataTable().Init(); 137 143 if(bDebugCompile){ 138 dataTable.Add( (long)0x00000002 );144 Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 ); 139 145 } 140 146 … … 160 166 161 167 //関数ポインタ情報を初期化 162 Smoothie:: meta.procPointers.clear();168 Smoothie::GetMeta().GetProcPointers().clear(); 163 169 164 170 // 名前空間情報を取得 165 171 NamespaceScopesCollection::CollectNamespaces( 166 172 Smoothie::Lexical::source.GetBuffer(), 167 Smoothie:: meta.namespaceScopesCollection173 Smoothie::GetMeta().namespaceScopesCollection 168 174 ); 169 175 … … 171 177 // GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。 172 178 // ※オブジェクトの内容までは取得しない 173 pobj_DBClass=new Classes(); 174 pobj_DBClass->InitNames(); 179 Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source ); 175 180 176 181 //TypeDef情報を初期化 177 Smoothie:: meta.typeDefs.Init();182 Smoothie::GetMeta().typeDefs.Init(); 178 183 179 184 //定数情報を取得 … … 181 186 182 187 //サブルーチン(ユーザー定義、DLL関数)の識別子、アドレスを取得 183 pobj_CompilingClass=0;188 Smoothie::Temp::pCompilingClass=0; 184 189 GetSubInfo(); 185 190 186 191 //クラス情報を取得(※注 - GetSubInfoの後に呼び出す) 187 pobj_DBClass->GetAllClassInfo();192 Smoothie::GetMeta().GetClasses().GetAllClassInfo(); 188 193 189 194 //コードと行番号の関係 … … 336 341 337 342 //レキシカルスコープ情報を初期化 338 obj_LexScopes.Init(obp);343 GetLexicalScopes().Init(obp); 339 344 340 345 … … 360 365 if(!bDll){ 361 366 // 名前空間が初期化されているかをチェック 362 if( Smoothie:: Lexical::liveingNamespaceScopes.size() ){367 if( Smoothie::Temp::liveingNamespaceScopes.size() ){ 363 368 SetError(); 364 369 } … … 405 410 406 411 //クラスに属する静的メンバを定義 407 CMember::InitStaticMember();412 Smoothie::GetMeta().GetClasses().InitStaticMember(); 408 413 409 414 //グローバル実行領域をコンパイル開始 … … 460 465 461 466 // 名前空間が正しく閉じられているかをチェック 462 if( Smoothie:: Lexical::liveingNamespaceScopes.size() ){467 if( Smoothie::Temp::liveingNamespaceScopes.size() ){ 463 468 SetError(63,NULL,-1); 464 469 } … … 792 797 //(デバッグ情報で利用される) 793 798 extern int AllInitGlobalVarSize; 794 foreach( Variable *pVar, globalVars ){799 BOOST_FOREACH( Variable *pVar, globalVars ){ 795 800 if(pVar->offset&0x80000000){ 796 801 pVar->offset=(pVar->offset&0x7FFFFFFF)+AllInitGlobalVarSize; … … 874 879 875 880 //データセクションのファイル上のサイズ 876 if( dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=dataTable.GetSize()+(FILE_ALIGNMENT-dataTable.GetSize()%FILE_ALIGNMENT);877 else FileSize_DataSection= dataTable.GetSize();881 if(Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT); 882 else FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize(); 878 883 if(FileSize_DataSection) bUse_DataSection=1; 879 884 else bUse_DataSection=0; … … 1066 1071 //////////////////////////////////////// 1067 1072 //仮想関数データテーブルスケジュール 1068 pobj_DBClass->ActionVtblSchedule(ImageBase,MemPos_CodeSection);1073 Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection); 1069 1074 1070 1075 … … 1601 1606 if(bUse_DataSection){ 1602 1607 //データ テーブル 1603 WriteFile(hFile, dataTable.GetPtr(),dataTable.GetSize(),(DWORD *)&i2,NULL);1608 WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL); 1604 1609 i+=i2; 1605 1610 } … … 1713 1718 1714 1719 //クラスに関するメモリを解放 1715 delete pobj_DBClass; 1716 pobj_DBClass=0; 1720 Smoothie::GetMeta().GetClasses().Clear(); 1717 1721 }
Note:
See TracChangeset
for help on using the changeset viewer.