OK. So we have reached "Peak JavaScript" then.

If people write JS code without triggering shape changes then the JIT
should be able to produce code that can match a JVM?
If there was something that I could do as a developer that could help
the JIT I would do it.

Would ES6 classes not make the creation of shapes a lot easier? From
what I understand it takes time to figure out shapes/hidden-classes.
Well I'm marking this object as a class, does that help?

It would be interesting if engines provided feedback on when we
developers break the optimistic optimizations.

On Sat, Jul 13, 2013 at 9:43 AM, David Bruant <[email protected]> wrote:
> Le 13/07/2013 10:21, Brian Di Palma a écrit :
>
>> I was just wondering
>> if the 'const' keyword would help give JS another small performance
>> boost.
>
> Unlikely. Const can be almost statically inferred (no assignment to a given
> variable). The "almost" refers to cases where eval happens. Worst case, if
> there is no assignment, a variable can be optimistically optimized as const.
> If the value is changed via eval, then de-optimize (but in practice, eval is
> rare, so the optimistic optimization will be worth it)
>
>
>> As Andreas points out the major issue is that JS is highly dynamic,
>> this can be very useful sometimes but for most code it's not required.
>> Maybe if you mark everything as const or freeze/seal classes then
>> maybe JS engines will optimize for that code.
>
> JS engines already optimistically optimize assuming code remains stable (for
> objects, V8 has "hidden classes", SpiderMonkey has the equivalent "shape"
> feature) and deoptimizes when the dynamic features are being used.
>
> It might be one of the reason why maps are better at being maps than objects
> (since objects seem to have been optimized for cases where they are stable)
>
> David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to