Ignore:
Timestamp:
Aug 5, 2007, 3:47:49 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp

    r259 r263  
    9898    // コードと行番号の関係
    9999    ////////////////////////
    100     extern int MaxLineInfoNum;
    101     extern LINEINFO *pLineInfo;
    102 
    103     //バッファが足りない場合は再確保
    104     if(MaxLineInfoNum*sizeof(LINEINFO)<32768) i3=32768;
    105     else i3=MaxLineInfoNum*sizeof(LINEINFO)+32768;
    106     if(BufferSize<i2+i3){
    107         BufferSize+=i3;
    108         buffer=(char *)HeapReAlloc(hHeap,0,buffer,BufferSize);
    109     }
    110 
    111     *(long *)(buffer+i2)=MaxLineInfoNum;
    112     i2+=sizeof(long);
    113     memcpy(buffer+i2,pLineInfo,MaxLineInfoNum*sizeof(LINEINFO));
    114     i2+=MaxLineInfoNum*sizeof(LINEINFO);
     100    extern SourceLines oldSourceLines;
     101
     102    *(long *)(buffer+i2)=(long)oldSourceLines.size();
     103    i2+=sizeof(long);
     104    BOOST_FOREACH( const SourceLine &sourceLine, oldSourceLines )
     105    {
     106        *(long *)(buffer+i2) = sourceLine.GetLineNum();
     107        i2+=sizeof(long);
     108
     109        *(long *)(buffer+i2) = sourceLine.GetNativeCodePos();
     110        i2+=sizeof(long);
     111
     112        *(long *)(buffer+i2) = sourceLine.GetSourceCodePos();
     113        i2+=sizeof(long);
     114
     115        *(long *)(buffer+i2) = sourceLine.GetCodeType();
     116        i2+=sizeof(long);
     117
     118        //バッファが足りない場合は再確保
     119        if(BufferSize<i2+32768){
     120            BufferSize+=32768;
     121            buffer=(char *)HeapReAlloc(hHeap,0,buffer,BufferSize);
     122        }
     123    }
    115124
    116125
     
    431440    memcpy(buffer,OpBuffer,SizeOf_CodeSection);
    432441
    433     int i2;
    434     for(i2=0;i2<MaxLineInfoNum;i2++){
     442    BOOST_FOREACH( const SourceLine &sourceLine, oldSourceLines )
     443    {
    435444        if(!(
    436             pLineInfo[i2].dwCodeType&CODETYPE_SYSTEMPROC||
    437             pLineInfo[i2].dwCodeType&CODETYPE_DEBUGPROC
    438             )){
     445            sourceLine.IsInSystemProc()
     446            || sourceLine.IsInDebugProc() ) )
     447        {
    439448            //int 3
    440             buffer[pLineInfo[i2].TopObp]=(char)0xCC;
     449            buffer[sourceLine.GetNativeCodePos()]=(char)0xCC;
    441450        }
    442451    }
     
    487496
    488497    //コードと行番号の関係
    489     MaxLineInfoNum=*(long *)(buffer+i2);
    490     i2+=sizeof(long);
    491     pLineInfo=(LINEINFO *)HeapAlloc(hHeap,0,MaxLineInfoNum*sizeof(LINEINFO)+1);
    492     memcpy(pLineInfo,buffer+i2,MaxLineInfoNum*sizeof(LINEINFO));
    493     i2+=MaxLineInfoNum*sizeof(LINEINFO);
     498    int maxLineInfoNum;
     499    maxLineInfoNum=*(long *)(buffer+i2);
     500    i2+=sizeof(long);
     501    for(i3=0;i3<maxLineInfoNum;i3++){
     502        int lineNum = *(long *)(buffer+i2);
     503        i2+=sizeof(long);
     504
     505        int nativeCodePos = *(long *)(buffer+i2);
     506        i2+=sizeof(long);
     507
     508        int sourceCodePos = *(long *)(buffer+i2);
     509        i2+=sizeof(long);
     510
     511        DWORD sourceLineType = *(DWORD *)(buffer+i2);
     512        i2+=sizeof(long);
     513
     514        oldSourceLines.push_back( SourceLine( lineNum, nativeCodePos, sourceCodePos, sourceLineType ) );
     515    }
    494516
    495517
     
    837859
    838860    //コードと行番号の関係
    839     extern int MaxLineInfoNum;
    840     extern LINEINFO *pLineInfo;
    841     MaxLineInfoNum=this->MaxLineInfoNum;
    842     pLineInfo=this->pLineInfo;
     861    extern SourceLines oldSourceLines;
     862    oldSourceLines = this->oldSourceLines;
    843863
    844864    BreakStepCodeBuffer=pobj_DBBreakPoint->update(OpBuffer,SizeOf_CodeSection);
     
    956976
    957977    //コードと行番号の関係
    958     extern int MaxLineInfoNum;
    959     extern LINEINFO *pLineInfo;
    960     MaxLineInfoNum=this->MaxLineInfoNum;
    961     pLineInfo=this->pLineInfo;
     978    extern SourceLines oldSourceLines;
     979    oldSourceLines = this->oldSourceLines;
    962980
    963981    // クラス情報
     
    9961014    delete this->pobj_DBClass;
    9971015    this->pobj_DBClass=0;
    998 
    999     //コードと行番号の関係を解放
    1000     HeapDefaultFree(pLineInfo);
    10011016
    10021017    //コードバッファを解放
Note: See TracChangeset for help on using the changeset viewer.