Ignore:
Timestamp:
Jun 24, 2007, 6:50:40 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/MakePeHdr.cpp

    r169 r183  
    11#include <jenga/include/common/Environment.h>
     2
     3#include <jenga/include/smoothie/Smoothie.h>
     4
     5#include <LexicalScopingImpl.h>
     6#include <ClassImpl.h>
     7#include <Compiler.h>
    28
    39#include "../BasicCompiler_Common/common.h"
     
    119125    //////////////////
    120126    // データテーブル
    121     dataTable.Init();
     127    Compiler::GetNativeCode().GetDataTable().Init();
    122128    if(bDebugCompile){
    123         dataTable.Add( (long)0x00000002 );
     129        Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 );
    124130    }
    125131
     
    145151
    146152    //関数ポインタ情報を初期化
    147     Smoothie::meta.procPointers.clear();
     153    Smoothie::GetMeta().GetProcPointers().clear();
    148154
    149155    // 名前空間情報を取得
    150156    NamespaceScopesCollection::CollectNamespaces(
    151157        Smoothie::Lexical::source.GetBuffer(),
    152         Smoothie::meta.namespaceScopesCollection
     158        Smoothie::GetMeta().namespaceScopesCollection
    153159    );
    154160
     
    156162    //   GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。
    157163    //     ※オブジェクトの内容までは取得しない
    158     pobj_DBClass=new Classes();
    159     pobj_DBClass->InitNames();
     164    Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
    160165
    161166    //TypeDef情報を初期化
    162     Smoothie::meta.typeDefs.Init();
     167    Smoothie::GetMeta().typeDefs.Init();
    163168
    164169    //定数情報を取得
     
    166171
    167172    //サブルーチン(ユーザー定義、DLL関数)の識別子、アドレスを取得
    168     pobj_CompilingClass=0;
     173    Smoothie::Temp::pCompilingClass = NULL;
    169174    GetSubInfo();
    170175
    171176    //クラス情報を取得(※注 - GetSubInfoの後に呼び出す)
    172     pobj_DBClass->GetAllClassInfo();
     177    Smoothie::GetMeta().GetClasses().GetAllClassInfo();
    173178
    174179    //コードと行番号の関係
     
    280285
    281286    obp_AllocSize=8192*2;
    282     OpBuffer=(char *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,obp_AllocSize);
     287    OpBuffer=(char *)calloc(obp_AllocSize,1);
    283288    obp=0;
    284289
     
    287292
    288293    //レキシカルスコープ情報を初期化
    289     obj_LexScopes.Init(obp);
     294    GetLexicalScopes().Init(obp);
    290295
    291296
     
    311316    if(!bDll){
    312317        // 名前空間が初期化されているかをチェック
    313         if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
     318        if( Smoothie::Temp::liveingNamespaceScopes.size() ){
    314319            SetError();
    315320        }
     
    362367
    363368        //クラスに属する静的メンバを定義
    364         CMember::InitStaticMember();
     369        Smoothie::GetMeta().GetClasses().InitStaticMember();
    365370
    366371        //グローバル実行領域をコンパイル開始
     
    426431
    427432        // 名前空間が正しく閉じられているかをチェック
    428         if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
     433        if( Smoothie::Temp::liveingNamespaceScopes.size() ){
    429434            SetError(63,NULL,-1);
    430435        }
     
    793798    //(デバッグ情報で利用される)
    794799    extern int AllInitGlobalVarSize;
    795     foreach( Variable *pVar, globalVars ){
     800    BOOST_FOREACH( Variable *pVar, globalVars ){
    796801        if(pVar->offset&0x80000000){
    797802            pVar->offset=(pVar->offset&0x7FFFFFFF)+AllInitGlobalVarSize;
     
    876881
    877882    //データセクションのファイル上のサイズ
    878     if(dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=dataTable.GetSize()+(FILE_ALIGNMENT-dataTable.GetSize()%FILE_ALIGNMENT);
    879     else FileSize_DataSection=dataTable.GetSize();
     883    if(Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);
     884    else FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize();
    880885    if(FileSize_DataSection) bUse_DataSection=1;
    881886    else bUse_DataSection=0;
     
    10661071    ////////////////////////////////////////
    10671072    //仮想関数データテーブルスケジュール
    1068     pobj_DBClass->ActionVtblSchedule(ImageBase,MemPos_CodeSection);
     1073    Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
    10691074
    10701075
     
    16021607    if(bUse_DataSection){
    16031608        //データ テーブル
    1604         WriteFile(hFile,dataTable.GetPtr(),dataTable.GetSize(),(DWORD *)&i2,NULL);
     1609        WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
    16051610        i+=i2;
    16061611    }
     
    16981703
    16991704    //コードバッファを解放
    1700     HeapDefaultFree(OpBuffer);
     1705    free(OpBuffer);
    17011706    OpBuffer=0;
    17021707
     
    17141719
    17151720    //クラスに関するメモリを解放
    1716     delete pobj_DBClass;
    1717     pobj_DBClass=0;
     1721    Smoothie::GetMeta().GetClasses().Clear();
    17181722}
Note: See TracChangeset for help on using the changeset viewer.