0

FlasCC での LTO 最適化に問題があります。

-O1 を指定してコンパイルすると、swf は問題なく動作します。

ただし、-O4 を使用すると、最初は正常に実行されますが、特定の仮想関数呼び出しで 15 秒以上ハングし、Flash が停止します。

Flash ログを使用してハングの正確なポイントを追跡するために、printfs を追加しました。

printf( "Program_Step : vis init" ) でハングし、実際の Initialize() 実装には決して入りません。ポインターは IGameVisualizer *m_pVisualizer; として宣言されます。

コード:

   virtual void Program_Step( IProgramStep & step )
    {
        if ( !m_init )
        {
            if ( m_initCounter > 0 )
            {
                printf( "\n Program_Step : Later... %d skips left", m_initCounter );
                --m_initCounter;
                return;
            }

            printf( "\n Program_Step : Init" );
            m_init = true;
            m_pVisualizer = Create_SlotsVisualizer_V1();
            printf( "\n Program_Step : m_pLogic" );
            m_pLogic = Create_SlotsLogic_Test();

            if ( m_pVisualizer )
            {
                printf( "\n Program_Step : vis init" );
                m_pVisualizer->Initialize();
            }

            if ( m_pLogic )
            {
                printf( "\n Program_Step : logic init" );
                m_pLogic->Initialize( *this );
            }

            printf( "\n Program_Step : after inits" );
        }

        int dt = step.GetTimeDeltaMsec();

        ProcessControls( dt );

        if ( m_pLogic )
            m_pLogic->Process( dt, *this );

        if ( m_pVisualizer )
            m_pVisualizer->Process( dt );
    }
4

1 に答える 1