Changeset 685 in dev


Ignore:
Timestamp:
Jul 13, 2008, 2:29:17 AM (13 years ago)
Author:
dai_9181
Message:

[684]を64bit版にマージ。

Location:
trunk/ab5.0/abdev/compiler_x64
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/compiler_x64/Compile_ProcOp.cpp

    r677 r685  
    258258    compiler.codeGenerator.gotoLabelSchedules.clear();
    259259
    260     //With情報のメモリを確保
    261     extern WITHINFO WithInfo;
    262     WithInfo.ppName=(char **)HeapAlloc(hHeap,0,1);
    263     WithInfo.pWithCp=(int *)HeapAlloc(hHeap,0,1);
    264     WithInfo.num=0;
     260    //With情報を初期化
     261    extern WithInfos withInfos;
     262    withInfos.clear();
    265263
    266264    //Continueアドレスを初期化
     
    567565    Exception::InspectTryScope();
    568566
    569     //With情報のメモリを解放
    570     for(i3=0;i3<WithInfo.num;i3++){
    571         compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i3]);
    572         HeapDefaultFree(WithInfo.ppName[i3]);
    573     }
    574     HeapDefaultFree(WithInfo.ppName);
    575     HeapDefaultFree(WithInfo.pWithCp);
    576 
    577567    //ローカルオブジェクト(レキシカルスコープレベル=0)の解放処理
    578568    compiler.codeGenerator.lexicalScopes.CallDestructorsOfScopeEnd();
  • trunk/ab5.0/abdev/compiler_x64/MakePeHdr.cpp

    r646 r685  
    330330    compiler.codeGenerator.lexicalScopes.Init(0);
    331331
     332    // 名前空間が初期化されているかをチェック
     333    if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() )
     334    {
     335        compiler.errorMessenger.OutputFatalError();
     336    }
     337
    332338
    333339    /////////////////////////////////////////////////////////////////
     
    354360    compiler.StartGlobalAreaCompile();
    355361
    356     if( !compiler.IsDll() ){
    357         // 名前空間が初期化されているかをチェック
    358         if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){
    359             compiler.errorMessenger.OutputFatalError();
    360         }
    361 
     362    if( !compiler.IsDll() )
     363    {
    362364        //ラベル管理オブジェクトを初期化
    363365        compiler.codeGenerator.gotoLabels.clear();
     
    366368        compiler.codeGenerator.gotoLabelSchedules.clear();
    367369
    368         //With情報のメモリを確保
    369         extern WITHINFO WithInfo;
    370         WithInfo.ppName=(char **)HeapAlloc(hHeap,0,1);
    371         WithInfo.pWithCp=(int *)HeapAlloc(hHeap,0,1);
    372         WithInfo.num=0;
     370        //With情報を初期化
     371        extern WithInfos withInfos;
     372        withInfos.clear();
    373373
    374374        //Continueアドレスを初期化
     
    382382
    383383        trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" );
    384 
    385 
    386         //未完成
    387         //breakpoint;
    388384
    389385        if( compiler.IsCore() )
     
    437433        extern int GlobalOpBufferSize;
    438434        GlobalOpBufferSize = compiler.linker.GetNativeCode().GetSize();
    439 
    440         //With情報のメモリを解放
    441         for(i=0;i<WithInfo.num;i++){
    442             compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i]);
    443             HeapDefaultFree(WithInfo.ppName[i]);
    444         }
    445         HeapDefaultFree(WithInfo.ppName);
    446         HeapDefaultFree(WithInfo.pWithCp);
    447435
    448436        // 名前空間が正しく閉じられているかをチェック
  • trunk/ab5.0/abdev/compiler_x64/Opcode.h

    r603 r685  
    2828
    2929//With情報
    30 struct WITHINFO{
    31     char **ppName;
    32     int *pWithCp;
    33     int num;
    34 };
     30struct WithInfo
     31{
     32    std::string name;
     33    int sourceCodePos;
     34
     35    WithInfo( const std::string &name, int sourceCodePos )
     36        : name( name )
     37        , sourceCodePos( sourceCodePos )
     38    {
     39    }
     40};
     41typedef std::vector<WithInfo> WithInfos;
    3542
    3643
Note: See TracChangeset for help on using the changeset viewer.