Ignore:
Timestamp:
Aug 14, 2007, 8:37:08 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler_Common/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/src/Meta.cpp

    r275 r280  
    3636}
    3737
    38 void Meta::StaticLink( Meta &meta, long dataSectionBaseOffset )
     38void Meta::StaticLink( Meta &meta, long dataSectionBaseOffset, int sourceIndexBase )
    3939{
    4040    // 名前空間
     
    5555
    5656        pUserProc->GetNativeCode().ResetDataSectionBaseOffset( dataSectionBaseOffset );
     57        pUserProc->GetNativeCode().ResetSourceIndexes( sourceIndexBase );
    5758
    5859        this->userProcs.Put( pUserProc );
  • trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp

    r276 r280  
    11#include "stdafx.h"
    22
    3 #include <NativeCode.h>
    4 #include <Procedure.h>
     3#include <Compiler.h>
    54
    65#define BREAK_EIP(checkEip)  (obp+0x00401000>=checkEip)
     
    3231                sourceLine.GetLineNum(),
    3332                baseOffset + sourceLine.GetNativeCodePos(),
     33                sourceLine.GetSourceIndex(),
    3434                sourceLine.GetSourceCodePos(),
    3535                sourceLine.GetCodeType()
     
    8686        sourceLineType |= CODETYPE_SYSTEMPROC;
    8787    }
    88     sourceLines.push_back( SourceLine( (long)sourceLines.size(), size, cp, sourceLineType ) );
     88    sourceLines.push_back(
     89        SourceLine(
     90            (long)sourceLines.size(),
     91            size,
     92            compiler.GetObjectModule().GetCurrentSourceIndex(),
     93            cp,
     94            sourceLineType
     95        )
     96    );
    8997}
    9098
     
    102110    }
    103111}
     112void NativeCode::ResetSourceIndexes( long sourceIndexBase )
     113{
     114    BOOST_FOREACH( SourceLine &sourceLine, sourceLines )
     115    {
     116        sourceLine.SetSourceIndex( sourceLine.GetSourceIndex() + sourceIndexBase );
     117    }
     118}
  • trunk/abdev/BasicCompiler_Common/src/ObjectModule.cpp

    r279 r280  
    1414void ObjectModule::StaticLink( ObjectModule &objectModule )
    1515{
     16    long dataSectionBaseOffset = dataTable.GetSize();
     17    int sourceIndexBase = sources.size();
     18
    1619    // メタ情報を結合
    17     meta.StaticLink( objectModule.meta, dataTable.GetSize() );
     20    meta.StaticLink( objectModule.meta, dataSectionBaseOffset, sourceIndexBase );
    1821
    1922    // ネイティブコードを結合
     23    objectModule.globalNativeCode.ResetDataSectionBaseOffset( dataSectionBaseOffset );
     24    objectModule.globalNativeCode.ResetSourceIndexes( sourceIndexBase );
    2025    globalNativeCode.Put( objectModule.globalNativeCode );
    21     globalNativeCode.ResetDataSectionBaseOffset( dataTable.GetSize() );
    2226
    2327    // データテーブルを結合
    2428    dataTable.Add( objectModule.dataTable );
     29
     30    // ソースコードを結合
     31    BOOST_FOREACH( const BasicSource &source, objectModule.sources )
     32    {
     33        this->sources.push_back( source );
     34    }
    2535}
    2636
  • trunk/abdev/BasicCompiler_Common/src/Source.cpp

    r279 r280  
    921921}
    922922
    923 bool BasicSource::GetLineInfo( int sourceCodePos, int &line, std::string &filePath )
     923bool BasicSource::GetLineInfo( int sourceCodePos, int &line, std::string &filePath ) const
    924924{
    925925    int i2,i3,i4,i5;
    926926
    927     char *buffer = GetBuffer();
     927    const char *buffer = GetBuffer();
    928928    int i = sourceCodePos;
    929929
Note: See TracChangeset for help on using the changeset viewer.