Changeset 183 in dev for trunk/abdev/BasicCompiler64/MakePeHdr.cpp
- Timestamp:
- Jun 24, 2007, 6:50:40 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/MakePeHdr.cpp
r169 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" … … 119 125 ////////////////// 120 126 // データテーブル 121 dataTable.Init();127 Compiler::GetNativeCode().GetDataTable().Init(); 122 128 if(bDebugCompile){ 123 dataTable.Add( (long)0x00000002 );129 Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 ); 124 130 } 125 131 … … 145 151 146 152 //関数ポインタ情報を初期化 147 Smoothie:: meta.procPointers.clear();153 Smoothie::GetMeta().GetProcPointers().clear(); 148 154 149 155 // 名前空間情報を取得 150 156 NamespaceScopesCollection::CollectNamespaces( 151 157 Smoothie::Lexical::source.GetBuffer(), 152 Smoothie:: meta.namespaceScopesCollection158 Smoothie::GetMeta().namespaceScopesCollection 153 159 ); 154 160 … … 156 162 // GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。 157 163 // ※オブジェクトの内容までは取得しない 158 pobj_DBClass=new Classes(); 159 pobj_DBClass->InitNames(); 164 Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source ); 160 165 161 166 //TypeDef情報を初期化 162 Smoothie:: meta.typeDefs.Init();167 Smoothie::GetMeta().typeDefs.Init(); 163 168 164 169 //定数情報を取得 … … 166 171 167 172 //サブルーチン(ユーザー定義、DLL関数)の識別子、アドレスを取得 168 pobj_CompilingClass=0;173 Smoothie::Temp::pCompilingClass = NULL; 169 174 GetSubInfo(); 170 175 171 176 //クラス情報を取得(※注 - GetSubInfoの後に呼び出す) 172 pobj_DBClass->GetAllClassInfo();177 Smoothie::GetMeta().GetClasses().GetAllClassInfo(); 173 178 174 179 //コードと行番号の関係 … … 280 285 281 286 obp_AllocSize=8192*2; 282 OpBuffer=(char *) HeapAlloc(hHeap,HEAP_ZERO_MEMORY,obp_AllocSize);287 OpBuffer=(char *)calloc(obp_AllocSize,1); 283 288 obp=0; 284 289 … … 287 292 288 293 //レキシカルスコープ情報を初期化 289 obj_LexScopes.Init(obp);294 GetLexicalScopes().Init(obp); 290 295 291 296 … … 311 316 if(!bDll){ 312 317 // 名前空間が初期化されているかをチェック 313 if( Smoothie:: Lexical::liveingNamespaceScopes.size() ){318 if( Smoothie::Temp::liveingNamespaceScopes.size() ){ 314 319 SetError(); 315 320 } … … 362 367 363 368 //クラスに属する静的メンバを定義 364 CMember::InitStaticMember();369 Smoothie::GetMeta().GetClasses().InitStaticMember(); 365 370 366 371 //グローバル実行領域をコンパイル開始 … … 426 431 427 432 // 名前空間が正しく閉じられているかをチェック 428 if( Smoothie:: Lexical::liveingNamespaceScopes.size() ){433 if( Smoothie::Temp::liveingNamespaceScopes.size() ){ 429 434 SetError(63,NULL,-1); 430 435 } … … 793 798 //(デバッグ情報で利用される) 794 799 extern int AllInitGlobalVarSize; 795 foreach( Variable *pVar, globalVars ){800 BOOST_FOREACH( Variable *pVar, globalVars ){ 796 801 if(pVar->offset&0x80000000){ 797 802 pVar->offset=(pVar->offset&0x7FFFFFFF)+AllInitGlobalVarSize; … … 876 881 877 882 //データセクションのファイル上のサイズ 878 if( dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=dataTable.GetSize()+(FILE_ALIGNMENT-dataTable.GetSize()%FILE_ALIGNMENT);879 else FileSize_DataSection= dataTable.GetSize();883 if(Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT); 884 else FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize(); 880 885 if(FileSize_DataSection) bUse_DataSection=1; 881 886 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 … … 1602 1607 if(bUse_DataSection){ 1603 1608 //データ テーブル 1604 WriteFile(hFile, dataTable.GetPtr(),dataTable.GetSize(),(DWORD *)&i2,NULL);1609 WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL); 1605 1610 i+=i2; 1606 1611 } … … 1698 1703 1699 1704 //コードバッファを解放 1700 HeapDefaultFree(OpBuffer);1705 free(OpBuffer); 1701 1706 OpBuffer=0; 1702 1707 … … 1714 1719 1715 1720 //クラスに関するメモリを解放 1716 delete pobj_DBClass; 1717 pobj_DBClass=0; 1721 Smoothie::GetMeta().GetClasses().Clear(); 1718 1722 }
Note:
See TracChangeset
for help on using the changeset viewer.