This simplifies the code, and also has the effect that if speculateNumber() is called prior to someone actually using the number in a double context, then the number will already be up-converted to double and ready to go. Previously if this ever came up, the subsequent use would have to again branch to see if the value is tagged as int or tagged as double. On the other hand, if you ever did speculateNumber() and then used the value as a JSValue, this will be a slow down now. I suspect that the former (speculateNumber() and then use as number) is more likely than the latter (speculateNumber() and then use as JSValue).
Created attachment 189862 [details] the patch
Landed in http://trac.webkit.org/changeset/143818