On Feb 19, 2009, at 1:39 AM, David-Sarah Hopwood wrote:
Ian Hickson wrote:
On Tue, 17 Feb 2009, Mark Miller wrote:
On Tue, Feb 17, 2009 at 5:03 PM, Ian Hickson <i...@hixie.ch> wrote:
Indeed, I noted this earlier. The behavior HTML5 codifies is the
behavior that the majority of browser vendors have asked me to
codify.
Majority, huh? Which vendors? How does the behavior they ask for
correlate with what their browsers do?
Opera, Apple, and Mozilla. The HTML5 spec originally specced what
IE does,
namely throw an exception when running code whose global object
doesn't
match the current Window object, but Opera, Apple, and Mozilla
rejected
this on the grounds that it could not be implemented in a high-
performance
manner.
That is clearly false. It would be a single pointer comparison when
entering
a new context.
I make no comment here on whether this behaviour would be a good
idea on
other criteria, just that rejecting it on performance grounds is
absurd.
In modern JITing implementations, adding (at least) two memory reads
and a conditional branch to every function call would be a significant
performance hit. In JavaScriptCore for instance, the hot path at the
machine code level is optimized down to essentially just one memory
read, one conditional branch, and a jump to the callee's code (also
some memory writes but those don't stall the pipeline so they don't
matter as much). The next hottest path has three branches and a few
extra memory reads. Adding an extra branch (and associated memory
reads) to that would be a big hit. We know because we have measured
the benefit of reducing the number of branches. It makes a huge
difference in call-heavy code.
In general, I would advise against making performance claims in
absolute terms (like "clearly false") without testing or studying the
relevant implementation internals.
Regards,
Maciej
_______________________________________________
Es-discuss mailing list
Es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss