Changeset 643 in dev for trunk/ab5.0/abdev/compiler_x64/Compile_ProcOp.cpp
- Timestamp:
- Jun 16, 2008, 12:12:06 AM (16 years ago)
- File:
-
- 1 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++){
Note:
See TracChangeset
for help on using the changeset viewer.