Comment #3 on issue 1840 by [email protected]: High num of deopts for attached production code from game engine
http://code.google.com/p/v8/issues/detail?id=1840
Let's clarify things a little bit regarding division: There is nothing wrong with the JavaScript code, and it doesn't matter whether you use "&-1" or "|0", although I find the latter more intuitive, but this is probably only a personal preference. The problem is within v8: The optimizing compiler is currently a bit naive regarding division when both operands are known to be integers, expecting the result to be an integer, too, deoptimizing if not. This is OK for other arithmetic operators, but it practically always fails for division. Using floating point arithmetic the next time works without deopts, but it hurts performance.
What we really should do is to recognize that the result is always used as an integer, avoiding deopts when the modulus is non-zero or some kind of overflow happens (this would improve e.g. additions). Recognizing this syntactically is far too fragile IMHO, so we should come up with something more clever.
Another thing: Would it be possible for you to prepare a slightly modified version of your code, namely a single self-contained JavaScript file suitable as a benchmark? AFAIK there are no license issues with the PVR decompression algorithm, but I could be wrong...
-- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
