Aleksey,

I was wondering about your comments on "test/examples/push-pop-benchmark.js” - 
already thinking about jsmh ;) ?

- thomas


On 22 Sep 2014, at 16:38, Marcus Lagergren <[email protected]> wrote:

> Please review JDK-8025435 at http://cr.openjdk.java.net/~lagergren/8025435/
> 
> https://bugs.openjdk.java.net/browse/JDK-8025435
> 
> This is the framework for optimistic builtin functions. Summary of work
> 
> * Introduced SpecializedFunction and SpecializedFunction.Guard for fast 
> optimistic implementations
> * Modified ScriptFunction so that it picks the best specialization first, and 
> checks if it can link using the above datastructures
> * Modified Nasgen to recognize the SpecializedFunction and its annotations
> * Implemented fast versions of Array.push/pop and String.charCodeAt as proof 
> of concepts
> * Added a switchpoint based rather than guard based framework for 
> invalidation of builtin functions (on a per context basis), to get rid of 
> previous guard overhead
> * Added primitive linkage without proto filter as long as builtins acting 
> upon them haven’t been rewritten
> * Currently there is support for invalidation of both entire builtins e.g. 
> Array.prototype = something and proerties Array.prototype.push = something, 
> but the granularity right now, to save switchpoints, uses the same 
> switchpoint for an entire builtin and all its properties, as any other cases 
> are rare. Granularity can easily be increased by adding keys to the 
> builtinSwitchPoints table in the Context
> * Prefer to invalidate callsite by ClassCastException and failed type checks 
> instead of explicit guards.
> 
> I’m saving further specializations for later dates.
> 
> Added various microbenchmarks to prove performance of the implementations of 
> the current functions.
> 
> Before patch:
> 
> zann:make marcus$ sh ../bin/runopt.sh ../test/examples/push-pop-benchmark.js
> 18997 ms
> 
> Verified OK - result is correct
> 
> After patch:
> 
> zann:make marcus$ sh ../bin/runopt.sh ../test/examples/push-pop-benchmark.js
> 2327 ms
> 
> Verified OK - result is correct
> zann:make marcus$ d8 ../test/examples/push-pop-benchmark.js
> 9672 ms
> 
> Verified OK - result is correct
> 
> Similar benchmark exists for charCodeAt - my other proof of concept, which 
> runs about 5x faster too. 
> 
> Test and test262 are clean after some horror corner cases with lengths and 
> array like objects.
> 
> Regards
> Marcus
> 
> 

Reply via email to