我对 FlasCC 中的 LTO 优化有疑问。
当使用 -O1 编译时,生成的 swf 运行得很好。
但是使用 -O4 它首先运行正常,但随后突然挂起特定的虚拟函数调用超过 15 秒,然后 Flash 将其停止。
我添加了 printfs 以使用 Flash 日志跟踪确切的挂起点。
它挂在 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 );
}