- Timestamp:
- Jun 16, 2008, 12:12:06 AM (16 years ago)
- Location:
- trunk/ab5.0/abdev/compiler_x64
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/compiler_x64/Compile_ProcOp.cpp
r633 r643 22 22 } 23 23 24 const UserProc *pBackUserProc;25 pBackUserProc = &compiler.GetCompilingUserProc();26 compiler.StartGlobalAreaCompile();27 28 24 int BackCp; 29 25 BackCp=cp; … … 59 55 compiler.codeGenerator.opfix( pStackFramePertialSchedule, pobj_sf->GetFrameSize(0) ); 60 56 61 compiler.SetCompilingUserProc( pBackUserProc );62 57 cp=BackCp; 63 58 … … 97 92 compiler.codeGenerator.op_ret(); 98 93 } 99 else if( userProc.GetName() == "_System_Call_Destructor_of_GlobalObject" ){ 94 else if( userProc.GetName() == "_System_Call_Destructor_of_GlobalObject" ) 95 { 100 96 //sub rsp,8(※RSPを16バイト境界にあわせるため) 101 97 compiler.codeGenerator.op_sub_rsp(0x8); 102 103 const UserProc *pBackUserProc;104 pBackUserProc = &compiler.GetCompilingUserProc();105 compiler.StartGlobalAreaCompile();106 107 98 compiler.codeGenerator.lexicalScopes.CallDestructorsOfScopeEnd(); 108 109 compiler.SetCompilingUserProc( pBackUserProc );110 111 99 112 100 //add rsp,8 … … 143 131 Compile_AddGlobalRootsForGc(); 144 132 } 145 else if( userProc.GetName() == compiler.globalAreaProcName ){ 133 else if( userProc.GetName() == compiler.globalAreaProcName ) 134 { 146 135 //////////////////////////////////////// 147 136 // グローバル領域をコンパイル … … 149 138 150 139 UserProc::pGlobalProc = &userProc; 151 152 const UserProc *pBackUserProc = &compiler.GetCompilingUserProc();153 compiler.StartGlobalAreaCompile();154 140 155 141 int BackCp = cp; … … 177 163 } 178 164 179 compiler.SetCompilingUserProc( pBackUserProc );180 165 cp=BackCp; 181 166 } … … 217 202 pUserProc->CompleteCompile(); 218 203 219 extern BOOL bSystemProc;220 if(memcmp(pUserProc->GetName().c_str(),"_System_",8)==0) bSystemProc=1;221 else bSystemProc=0;222 223 204 extern BOOL bDebugSupportProc; 224 205 if(memcmp(pUserProc->GetName().c_str(),"_DebugSys_",10)==0){ … … 233 214 compiler.StartProcedureCompile( pUserProc ); 234 215 235 if(pUserProc->Is System()){216 if(pUserProc->IsAutoGenerationSystem()){ 236 217 //////////////////// 237 218 // 特殊関数 … … 256 237 if( !pUserProc->IsAutoGeneration() ) 257 238 { 239 // 対象のソースコードを含むオブジェクトモジュールのインデックスを指定する 240 // ※テンプレート展開がされている場合、対象のソースコードが現在のオブジェクトモジュールではない場合がある 241 compiler.SetCurrentRelationalObjectModuleIndexForSource( pUserProc->GetSourceCodePosition().GetRelationalObjectModuleIndex() ); 242 basbuf = const_cast<char *>(compiler.GetCurrentSource().GetBuffer()); 243 258 244 cp=pUserProc->GetSourceCodePosition().GetPos(); 259 245 for(;;cp++){ -
trunk/ab5.0/abdev/compiler_x64/Compile_Var.cpp
r633 r643 1341 1341 } 1342 1342 1343 bool Compile_AddGlobalRootsForGc(){ 1343 bool Compile_AddGlobalRootsForGc() 1344 { 1344 1345 const UserProc *pUserProc_AddGlobalRootPtr = GetClassMethod( "_System_CGarbageCollection", "AddGlobalRootPtr" ); 1345 if( !pUserProc_AddGlobalRootPtr ){ 1346 if( !pUserProc_AddGlobalRootPtr ) 1347 { 1346 1348 compiler.errorMessenger.Output(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 ); 1347 1349 return false; -
trunk/ab5.0/abdev/compiler_x64/MakePeHdr.cpp
r633 r643 109 109 110 110 // 静的リンク 111 compiler.PreStaticLink( compiler.staticLibraries ); 111 112 compiler.StaticLink( compiler.staticLibraries ); 113 114 // 依存関係の解決 115 ActiveBasic::Common::Lexical::ResolveErrors resolveErrors; 116 compiler.GetObjectModule().Resolve( resolveErrors ); 117 BOOST_FOREACH( const ResolveError &resolveError, resolveErrors ) 118 { 119 compiler.errorMessenger.Output( ErrorInfo( 13, resolveError.GetTargetItemName(), -1 ) ); 120 } 112 121 113 122 … … 134 143 { 135 144 ActiveBasic::Compiler::LexicalAnalyzer::CollectEnums( 136 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),145 compiler.GetCurrentSource().GetBuffer(), 137 146 compiler.enumInfoCollection 138 147 ); … … 147 156 // 名前空間情報を取得 148 157 ActiveBasic::Compiler::LexicalAnalyzer::CollectNamespaces( 149 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),158 compiler.GetCurrentSource().GetBuffer(), 150 159 compiler.GetObjectModule().meta.GetNamespaces() 151 160 ); … … 154 163 { 155 164 ActiveBasic::Compiler::LexicalAnalyzer::CollectDelegates( 156 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),165 compiler.GetCurrentSource().GetBuffer(), 157 166 compiler.GetObjectModule().meta.GetDelegates() 158 167 ); … … 170 179 // ※オブジェクトの内容までは取得しない 171 180 ActiveBasic::Compiler::LexicalAnalyzer::CollectClassesForNameOnly( 172 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),181 compiler.GetCurrentSource().GetBuffer(), 173 182 compiler.GetObjectModule().meta.GetClasses() 174 183 ); … … 176 185 //TypeDef情報を収集 177 186 ActiveBasic::Compiler::LexicalAnalyzer::CollectTypeDefs( 178 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),187 compiler.GetCurrentSource().GetBuffer(), 179 188 compiler.GetObjectModule().meta.GetTypeDefs() 180 189 ); … … 191 200 //定数情報を取得 192 201 ActiveBasic::Compiler::LexicalAnalyzer::CollectConsts( 193 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),202 compiler.GetCurrentSource().GetBuffer(), 194 203 compiler.GetObjectModule().meta.GetGlobalConsts(), 195 204 compiler.GetObjectModule().meta.GetGlobalConstMacros() … … 199 208 compiler.SetCompilingClass( NULL ); 200 209 ActiveBasic::Compiler::LexicalAnalyzer::CollectProcedures( 201 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),210 compiler.GetCurrentSource().GetBuffer(), 202 211 compiler.GetObjectModule().meta.GetUserProcs(), 203 212 compiler.GetObjectModule().meta.GetDllProcs() … … 206 215 // クラス情報を取得(※注 - CollectProceduresの後に呼び出す) 207 216 ActiveBasic::Compiler::LexicalAnalyzer::CollectClasses( 208 compiler.Get ObjectModule().GetCurrentSource().GetBuffer(),217 compiler.GetCurrentSource().GetBuffer(), 209 218 compiler.GetObjectModule().meta.GetClasses() 210 219 ); … … 245 254 if(pSub_System_GetEip=GetSubHash("_System_GetEip",1)){ 246 255 pSub_System_GetEip->Using(); 247 pSub_System_GetEip->ThisIs SystemProc();256 pSub_System_GetEip->ThisIsAutoGenerationSystemProc(); 248 257 } 249 258 250 259 if(pSub_System_InitDllGlobalVariables=GetSubHash("_System_InitDllGlobalVariables",1)){ 251 260 pSub_System_InitDllGlobalVariables->Using(); 252 pSub_System_InitDllGlobalVariables->ThisIs SystemProc();261 pSub_System_InitDllGlobalVariables->ThisIsAutoGenerationSystemProc(); 253 262 } 254 263 255 264 if(pSub_System_InitStaticLocalVariables=GetSubHash("_System_InitStaticLocalVariables",1)){ 256 265 pSub_System_InitStaticLocalVariables->Using(); 257 pSub_System_InitStaticLocalVariables->ThisIs SystemProc();266 pSub_System_InitStaticLocalVariables->ThisIsAutoGenerationSystemProc(); 258 267 } 259 268 260 269 if(pSub_System_Call_Destructor_of_GlobalObject=GetSubHash("_System_Call_Destructor_of_GlobalObject",1)){ 261 270 pSub_System_Call_Destructor_of_GlobalObject->Using(); 262 pSub_System_Call_Destructor_of_GlobalObject->ThisIs SystemProc();271 pSub_System_Call_Destructor_of_GlobalObject->ThisIsAutoGenerationSystemProc(); 263 272 } 264 273 … … 483 492 { 484 493 // 静的リンクライブラリ 494 495 // 外部参照をlibから取り除く 496 ActiveBasic::Common::Environment::SetRemoveExternalMark( true ); 485 497 486 498 // 格納先ディレクトリを作る
Note:
See TracChangeset
for help on using the changeset viewer.