Changeset 641 in dev for trunk


Ignore:
Timestamp:
Jun 15, 2008, 11:59:46 PM (16 years ago)
Author:
dai_9181
Message:

・デバッグトレース時、グローバル領域の終端行でステップインまたはステップアウトしたときにデバッグ情報の取得に失敗して強制終了してしまう不具合を修正。
・グローバル領域のデバッグ実行ができなくなっている不具合を修正。

Location:
trunk/ab5.0/abdev
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.h

    r622 r641  
    2828//デバッグ
    2929BOOL bDebugSupportProc;
    30 BOOL bSystemProc;
    3130DWORD dwStepRun;
    3231double width_ratio_VarList=0.3;
  • trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp

    r637 r641  
    747747            }
    748748
    749             compiler.codeGenerator.NextSourceLine( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), cp ) );
     749            if( basbuf[cp] != '\0' )
     750            {
     751                compiler.codeGenerator.NextSourceLine(
     752                    SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), cp ),
     753                    compiler.GetCompilingUserProc().IsSystem()
     754                );
     755            }
    750756
    751757            if(Command[0]==1){
  • trunk/ab5.0/abdev/BasicCompiler_Common/Debug.cpp

    r637 r641  
    262262    SendDlgItemMessage(hMainDlg,IDC_DEBUGLIST,EM_REPLACESEL,0,(LPARAM)buffer);
    263263}
    264 UserProc *GetSubFromObp(ULONG_PTR pos){
     264UserProc *GetSubFromObp(ULONG_PTR pos)
     265{
    265266    compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
    266267    while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
  • trunk/ab5.0/abdev/BasicCompiler_Common/include/CodeGenerator.h

    r637 r641  
    241241    }
    242242
    243     void NextSourceLine( const SourceCodePosition &sourceCodePosition )
    244     {
    245         pNativeCode->NextSourceLine( sourceCodePosition );
     243    void NextSourceLine( const SourceCodePosition &sourceCodePosition, bool isInSystemProc )
     244    {
     245        pNativeCode->NextSourceLine( sourceCodePosition, isInSystemProc );
    246246    }
    247247
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp

    r637 r641  
    402402bool Compiler::IsGlobalAreaCompiling()
    403403{
    404     return ( pCompilingUserProc == NULL );
     404    if( pCompilingUserProc == NULL )
     405    {
     406        return true;
     407    }
     408    return ( pCompilingUserProc->GetName() == this->globalAreaProcName );
    405409}
    406410bool Compiler::IsLocalAreaCompiling()
    407411{
    408     return ( pCompilingUserProc != NULL );
     412    return !IsGlobalAreaCompiling();
    409413}
    410414const UserProc &Compiler::GetCompilingUserProc()
    411415{
    412     if( !this->IsGlobalAreaCompiling() )
    413     {
    414         return *pCompilingUserProc;
     416    if( pCompilingUserProc == NULL )
     417    {
     418        _ASSERTE( false );
     419        throw;
     420    }
     421    return *pCompilingUserProc;
     422}
     423
     424bool Compiler::IsCompilingClass()
     425{
     426    return ( pCompilingClass != NULL );
     427}
     428const CClass &Compiler::GetCompilingClass()
     429{
     430    if( this->IsCompilingClass() )
     431    {
     432        return *pCompilingClass;
    415433    }
    416434
    417435    throw;
    418436}
    419 
    420 bool Compiler::IsCompilingClass()
    421 {
    422     return ( pCompilingClass != NULL );
    423 }
    424 const CClass &Compiler::GetCompilingClass()
    425 {
    426     if( this->IsCompilingClass() )
    427     {
    428         return *pCompilingClass;
    429     }
    430 
    431     throw;
    432 }
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp

    r637 r641  
    915915    importedNamespaces.clear();
    916916
    917     compiler.globalAreaProcName = "_System_GlobalArea_" + compiler.GetModuleName();
     917    compiler.globalAreaProcName = "_GlobalArea_" + compiler.GetModuleName();
    918918    sprintf(temporary,"%c%c%s()",1,ESC_SUB,compiler.globalAreaProcName.c_str());
    919919    UserProc *pUserProc = ParseUserProc( namespaceScopes, importedNamespaces, temporary, 0, false, NULL, false );
  • trunk/ab5.0/abdev/ab_common/include/Lexical/NativeCode.h

    r640 r641  
    244244        return sourceLines;
    245245    }
    246     void NextSourceLine( const SourceCodePosition &sourceCodePosition );
     246    void NextSourceLine( const SourceCodePosition &sourceCodePosition, bool isInSystemProc );
    247247
    248248    void ResetDataSectionBaseOffset( long dataSectionBaseOffset );
  • trunk/ab5.0/abdev/ab_common/include/Lexical/Procedure.h

    r640 r641  
    136136    // 各種フラグ
    137137    bool isExport;
    138     mutable bool isSystem;
     138    mutable bool isAutoGenerationSystem;
    139139    mutable bool isAutoGeneration;
    140140    mutable bool isCompiled;
     
    180180        ar & BOOST_SERIALIZATION_NVP( realSecondParmNum );
    181181        ar & BOOST_SERIALIZATION_NVP( isExport );
    182         ar & BOOST_SERIALIZATION_NVP( isSystem );
     182        ar & BOOST_SERIALIZATION_NVP( isAutoGenerationSystem );
    183183        ar & BOOST_SERIALIZATION_NVP( isAutoGeneration );
    184184        ar & BOOST_SERIALIZATION_NVP( isCompiled );
     
    275275        return isExport;
    276276    }
    277     void ThisIsSystemProc() const
    278     {
    279         isSystem = true;
    280     }
    281     bool IsSystem() const
    282     {
    283         return isSystem;
     277    void ThisIsAutoGenerationSystemProc() const
     278    {
     279        isAutoGenerationSystem = true;
     280    }
     281    bool IsAutoGenerationSystem() const
     282    {
     283        return isAutoGenerationSystem;
    284284    }
    285285    void ThisIsAutoGenerationProc() const
     
    291291        return isAutoGeneration;
    292292    }
     293    bool IsSystem() const;
    293294    void CompleteCompile() const
    294295    {
  • trunk/ab5.0/abdev/ab_common/src/Lexical/NativeCode.cpp

    r640 r641  
    161161}
    162162
    163 void NativeCode::NextSourceLine( const SourceCodePosition &sourceCodePosition )
     163void NativeCode::NextSourceLine( const SourceCodePosition &sourceCodePosition, bool isInSystemProc )
    164164{
    165165    if( sourceLines.size() )
     
    173173
    174174    extern BOOL bDebugSupportProc;
    175     extern BOOL bSystemProc;
    176175    DWORD sourceLineType = 0;
    177176    if( bDebugSupportProc )
     
    179178        sourceLineType |= CODETYPE_DEBUGPROC;
    180179    }
    181     if( bSystemProc )
     180    if( isInSystemProc )
    182181    {
    183182        sourceLineType |= CODETYPE_SYSTEMPROC;
  • trunk/ab5.0/abdev/ab_common/src/Lexical/Procedure.cpp

    r640 r641  
    4444    , realSecondParmNum( 1 )
    4545    , isExport( isExport )
    46     , isSystem( false )
     46    , isAutoGenerationSystem( false )
    4747    , isAutoGeneration( false )
    4848    , isCompiled( false )
     
    6565    , realSecondParmNum( userProc.realSecondParmNum )
    6666    , isExport( userProc.isExport )
    67     , isSystem( userProc.isSystem )
     67    , isAutoGenerationSystem( userProc.isAutoGenerationSystem )
    6868    , isAutoGeneration( userProc.isAutoGeneration )
    6969    , isCompiled( false )
     
    138138    return false;
    139139}
     140bool UserProc::IsSystem() const
     141{
     142    // "_System_" を名前の先頭に含む関数
     143    if( memcmp( this->GetName().c_str(), "_System_", 8 ) == 0 )
     144    {
     145        return true;
     146    }
     147
     148    // "_System_" を名前の先頭に含むクラスのメソッド
     149    if( this->HasParentClass() )
     150    {
     151        if( memcmp( this->GetParentClass().GetName().c_str(), "_System_", 8 ) == 0 )
     152        {
     153            return true;
     154        }
     155    }
     156
     157    return false;
     158}
    140159const NamespaceScopes &UserProc::GetNamespaceScopes() const
    141160{
  • trunk/ab5.0/abdev/ab_common/src/Lexical/Source.cpp

    r637 r641  
    900900    }
    901901
    902     if( includedFilesRelation.GetLineCounts() < i2 )
     902    if( includedFilesRelation.GetLineCounts() <= i2 )
    903903    {
    904904        //Jenga::Throw( "BasicSource::GetLineInfoメソッドで不正な行の情報を取得しようとした" );
  • trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp

    r637 r641  
    2424        }
    2525
    26         const UserProc *pBackUserProc;
    27         pBackUserProc = &compiler.GetCompilingUserProc();
    28         compiler.StartGlobalAreaCompile();
    29 
    3026        int BackCp;
    3127        BackCp=cp;
     
    5248        GetGlobalDataForDll();
    5349
    54         compiler.SetCompilingUserProc( pBackUserProc );
    5550        cp=BackCp;
    5651
     
    8176        compiler.codeGenerator.op_ret();
    8277    }
    83     else if( userProc.GetName() == "_System_Call_Destructor_of_GlobalObject" ){
    84 
    85         const UserProc *pBackUserProc;
    86         pBackUserProc = &compiler.GetCompilingUserProc();
    87         compiler.StartGlobalAreaCompile();
    88 
     78    else if( userProc.GetName() == "_System_Call_Destructor_of_GlobalObject" )
     79    {
    8980        compiler.codeGenerator.lexicalScopes.CallDestructorsOfScopeEnd();
    9081
    9182        compiler.SetCompilingUserProc( pBackUserProc );
    92 
    9383
    9484        //ret
     
    213203    else if( userProc.GetName() == "RegisterGlobalRoots"
    214204        && userProc.HasParentClass()
    215         && userProc.GetParentClass().GetName() == "_System_CGarbageCollection" ){
    216 
    217             Compile_AddGlobalRootsForGc();
    218     }
    219     else if( userProc.GetName() == compiler.globalAreaProcName ){
     205        && userProc.GetParentClass().GetName() == "_System_CGarbageCollection" )
     206    {
     207        Compile_AddGlobalRootsForGc();
     208    }
     209    else if( userProc.GetName() == compiler.globalAreaProcName )
     210    {
    220211        ////////////////////////////////////////
    221212        // グローバル領域をコンパイル
     
    223214
    224215        UserProc::pGlobalProc = &userProc;
    225 
    226         const UserProc *pBackUserProc = &compiler.GetCompilingUserProc();
    227         compiler.StartGlobalAreaCompile();
    228216
    229217        int BackCp = cp;
     
    251239        }
    252240
    253         compiler.SetCompilingUserProc( pBackUserProc );
    254241        cp=BackCp;
    255242    }
     
    293280    pUserProc->CompleteCompile();
    294281
    295     extern BOOL bSystemProc;
    296     if(memcmp(pUserProc->GetName().c_str(),"_System_",8)==0) bSystemProc=1;
    297     else bSystemProc=0;
    298 
    299282    extern BOOL bDebugSupportProc;
    300283    if(memcmp(pUserProc->GetName().c_str(),"_DebugSys_",10)==0)
     
    316299    compiler.StartProcedureCompile( pUserProc );
    317300
    318     if(pUserProc->IsSystem()){
     301    if(pUserProc->IsAutoGenerationSystem()){
    319302        ////////////////////
    320303        // 特殊関数
  • trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp

    r632 r641  
    13291329    }
    13301330}
    1331 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar){
     1331void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar)
     1332{
    13321333    if( reg != REG_EAX ){
    13331334        compiler.errorMessenger.OutputFatalError();
     
    13371338}
    13381339
    1339 bool Compile_AddGlobalRootsForGc(){
     1340bool Compile_AddGlobalRootsForGc()
     1341{
    13401342    const UserProc *pUserProc_AddGlobalRootPtr = GetClassMethod( "_System_CGarbageCollection", "AddGlobalRootPtr" );
    1341     if( !pUserProc_AddGlobalRootPtr ){
     1343    if( !pUserProc_AddGlobalRootPtr )
     1344    {
    13421345        compiler.errorMessenger.Output(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 );
    13431346        return false;
  • trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp

    r640 r641  
    260260    if(pSub_System_GetEip=GetSubHash("_System_GetEip",1)){
    261261        pSub_System_GetEip->Using();
    262         pSub_System_GetEip->ThisIsSystemProc();
     262        pSub_System_GetEip->ThisIsAutoGenerationSystemProc();
    263263    }
    264264
    265265    if(pSub_System_InitDllGlobalVariables=GetSubHash("_System_InitDllGlobalVariables",1)){
    266266        pSub_System_InitDllGlobalVariables->Using();
    267         pSub_System_InitDllGlobalVariables->ThisIsSystemProc();
     267        pSub_System_InitDllGlobalVariables->ThisIsAutoGenerationSystemProc();
    268268    }
    269269
    270270    if(pSub_System_InitStaticLocalVariables=GetSubHash("_System_InitStaticLocalVariables",1)){
    271271        pSub_System_InitStaticLocalVariables->Using();
    272         pSub_System_InitStaticLocalVariables->ThisIsSystemProc();
     272        pSub_System_InitStaticLocalVariables->ThisIsAutoGenerationSystemProc();
    273273    }
    274274
    275275    if(pSub_System_Call_Destructor_of_GlobalObject=GetSubHash("_System_Call_Destructor_of_GlobalObject",1)){
    276276        pSub_System_Call_Destructor_of_GlobalObject->Using();
    277         pSub_System_Call_Destructor_of_GlobalObject->ThisIsSystemProc();
     277        pSub_System_Call_Destructor_of_GlobalObject->ThisIsAutoGenerationSystemProc();
    278278    }
    279279
     
    329329    pSub_allrem=GetSubHash("_allrem");
    330330    pSub_allrem->Using();
    331     pSub_allrem->ThisIsSystemProc();
     331    pSub_allrem->ThisIsAutoGenerationSystemProc();
    332332
    333333    pSub_aullrem=GetSubHash("_aullrem");
    334334    pSub_aullrem->Using();
    335     pSub_aullrem->ThisIsSystemProc();
     335    pSub_aullrem->ThisIsAutoGenerationSystemProc();
    336336
    337337    pSub_allmul=GetSubHash("_allmul");
    338338    pSub_allmul->Using();
    339     pSub_allmul->ThisIsSystemProc();
     339    pSub_allmul->ThisIsAutoGenerationSystemProc();
    340340
    341341    pSub_alldiv=GetSubHash("_alldiv");
    342342    pSub_alldiv->Using();
    343     pSub_alldiv->ThisIsSystemProc();
     343    pSub_alldiv->ThisIsAutoGenerationSystemProc();
    344344
    345345    pSub_aulldiv=GetSubHash("_aulldiv");
    346346    pSub_aulldiv->Using();
    347     pSub_aulldiv->ThisIsSystemProc();
     347    pSub_aulldiv->ThisIsAutoGenerationSystemProc();
    348348
    349349    pSub_allshl=GetSubHash("_allshl");
    350350    pSub_allshl->Using();
    351     pSub_allshl->ThisIsSystemProc();
     351    pSub_allshl->ThisIsAutoGenerationSystemProc();
    352352
    353353    pSub_allshr=GetSubHash("_allshr");
    354354    pSub_allshr->Using();
    355     pSub_allshr->ThisIsSystemProc();
     355    pSub_allshr->ThisIsAutoGenerationSystemProc();
    356356
    357357    pSub_aullshr=GetSubHash("_aullshr");
    358358    pSub_aullshr->Using();
    359     pSub_aullshr->ThisIsSystemProc();
     359    pSub_aullshr->ThisIsAutoGenerationSystemProc();
    360360
    361361    pSub_esp_error=GetSubHash("_esp_error");
Note: See TracChangeset for help on using the changeset viewer.