Changeset 92 in dev for BasicCompiler_Common/Diagnose.cpp


Ignore:
Timestamp:
Apr 8, 2007, 2:07:31 AM (18 years ago)
Author:
dai_9181
Message:

列挙型クラスの自動生成コードを修正した(派生クラスでのToStringメソッドを廃止し、サイズを軽減した)。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Diagnose.cpp

    r91 r92  
    1111    char temporary[8192];
    1212
    13     // グローバル / ローカル コード領域のサイズを調べる
    14     extern int obp;
    15     extern int GlobalOpBufferSize;
    16     sprintf(temporary, "%d", GlobalOpBufferSize/1024 );
    17     Smoothie::Logger::Put( (string)"グローバル領域のコードサイズ: " + temporary + "KB" );
    18     sprintf(temporary, "%d", (obp-GlobalOpBufferSize)/1024 );
    19     Smoothie::Logger::Put( (string)"ローカル領域のコードサイズ: " + temporary + "KB" );
     13    {
     14        ///////////////////////////////////////////////////////////////////
     15        // グローバル / ローカル コード領域のサイズを調べる
     16        ///////////////////////////////////////////////////////////////////
     17
     18        extern int obp;
     19        extern int GlobalOpBufferSize;
     20        sprintf(temporary, "%d", GlobalOpBufferSize/1024 );
     21        Smoothie::Logger::Put( (string)"グローバル領域のコードサイズ: " + temporary + "KB" );
     22        sprintf(temporary, "%d", (obp-GlobalOpBufferSize)/1024 );
     23        Smoothie::Logger::Put( (string)"ローカル領域のコードサイズ: " + temporary + "KB" );
     24        sprintf(temporary, "%d", obp/1024 );
     25        Smoothie::Logger::Put( (string)"コードサイズ総量: " + temporary + "KB" );
     26    }
    2027
    2128    {
     29        ///////////////////////////////////////////////////////////////////
    2230        // グローバル関数、クラスメソッドのサイズを調べる
     31        ///////////////////////////////////////////////////////////////////
     32
    2333        int codeSizeOfGlobalProc = 0;
    2434        int codeSizeOfClassMethod = 0;
     
    4454        sprintf(temporary, "%d", codeSizeOfClassMethod/1024 );
    4555        Smoothie::Logger::Put( (string)"クラスメソッドのコードサイズ総量: " + temporary + "KB" );
    46 
    47         Smoothie::Logger::Put( "\n\n" );
    4856    }
    4957
    5058    {
     59        ///////////////////////////////////////////////////////////////////
     60        // Enumに必要なのコードサイズを調べる
     61        ///////////////////////////////////////////////////////////////////
     62        int codeSizeOfEnum = 0;
     63
     64        // イテレータをリセット
     65        extern CDBClass *pobj_DBClass;
     66        pobj_DBClass->Iterator_Reset();
     67
     68        while( pobj_DBClass->Iterator_HasNext() ){
     69            int codeSizeOfClass = 0;
     70
     71            CClass &objClass = *pobj_DBClass->Iterator_GetNext();
     72
     73            if( !objClass.IsEnum() ){
     74                // 列挙型以外は無視
     75                continue;
     76            }
     77
     78            // 動的メソッド
     79            foreach( const CMethod &method, objClass.GetMethods() ){
     80                if( method.pUserProc->IsCompiled() ){
     81                    codeSizeOfClass += method.pUserProc->GetCodeSize();
     82                }
     83            }
     84
     85            // 静的メソッド
     86            foreach( const CMethod &method, objClass.GetStaticMethods() ){
     87                    codeSizeOfClass += method.pUserProc->GetCodeSize();
     88            }
     89
     90            codeSizeOfEnum += codeSizeOfClass;
     91        }
     92
     93        sprintf(temporary, "%d", codeSizeOfEnum/1024 );
     94        Smoothie::Logger::Put( (string)"Enumのコードサイズ総量: " + temporary + "KB" );
     95    }
     96
     97    Smoothie::Logger::Put( "\n\n" );
     98
     99    {
     100        ///////////////////////////////////////////////////////////////////
    51101        // クラスのサイズを調べる
     102        ///////////////////////////////////////////////////////////////////
    52103
    53104        // イテレータをリセット
     
    82133            }
    83134        }
    84 
    85135    }
    86136}
Note: See TracChangeset for help on using the changeset viewer.