48.Slow Rendering - WebKit porting to Mona OS

Logged out http://twitter.com/ is rendered very slowly on my WebKit port. I did printf debugging. And finally found ShadowBlur::blurLayerImage took a few hundreds msec. It's extremely slow!


Following three loops are slow. "sum+= ..." was executed about 2 million times. They are just arithmetic operations. I guess we can't make them faster easily. Is this code fast enough on a real machine (means not on QEMU)?
Just disabled Shadow Blur on Mona for now.

for (i = 0; i < limit; ptr += stride, next += stride, ++i, ++ofs) {
    *ptr = (sum * invCount) >> blurSumShift;
    sum += ((ofs < dim) ? *next : alpha2) - alpha1;
}

prev = pixels + channels[step];
for (; ofs < dim; ptr += stride, prev += stride, next += stride, ++i, ++ofs) {
    *ptr = (sum * invCount) >> blurSumShift;
    sum += (*next) - (*prev);
}

for (; i < dim; ptr += stride, prev += stride, ++i) {
    *ptr = (sum * invCount) >> blurSumShift;
    sum += alpha2 - (*prev);
}


BTW, do you have any good ideas on how to detect slow rendering path on WebKit?

Note for me: Some debug notes are in my Evernote.