项目中需要使用QT4.8.3中的QtQuick,编写的QML文件一旦运行就会崩溃。主要现象:
1、使用Behavior on X{
Animation{
}
}
发现只要对某个属性使用Behavior并且定义其变化的动画时,程序崩溃
2、使用属性Attach
xposition1: xposition/3
只要在属性Attach时使用除法,程序也崩溃。
最后发现崩溃点在JSValue.h文件中的,被WTF_USE_JSVALUE32_64宏进行保护的代码中,ChangeLog中明确说明Mips是支持这个宏的,对于X86或者PPC则不支持,原因是Padding和Alignment。
直接将其换成WTF_USE_JSVALUE32即可解决问题。
这个宏的意义在于:https://bugs.webkit.org/show_bug.cgi?id=29268
Csaba Osztrogonác
2010-09-09 10:07:53 PDT
(In reply to comment #12) > > I tried JSVALUE32_64 with QtWebKit/Windows/MinGW again, and it works now. :) > > I don't know which changeset fixed it in the last 5 months. :) > > > > It works now, so I propose to switch to JSVALUE32_64. > > SunSpider will be 1.60x faster, but V8 will be 1.19x slower. > > do not they care about this perf regression, or i'm missing something? The difference between JSVALUE32 and JSVALUE32_64 is the size of JSValue, which can be 32 bit or 64 bit. The JSVALUE32_64 is faster when you work with a lot of 64 bit sized numbers (long int, double) such as 3D tests in SunSpider. Unfortunately it has a little performance regression if your application can't exploit the 64 bit sized JSValues. But we have to know the only choice is JSVALUE32_64, because WebKit community don't intend to support JSVALUE32 in the future as Gavin said.
不过不清楚为什么在我的嵌入式平台不支持。