RFR (S) CR 7177472: JSR292: MethodType interning penalizes scalability
Christian Thalinger
christian.thalinger at oracle.com
Mon Jun 10 15:52:21 PDT 2013
On Jun 10, 2013, at 8:47 AM, Aleksey Shipilev <aleksey.shipilev at oracle.com> wrote:
> On 06/09/2013 12:17 AM, Peter Levart wrote:
>> In case the loop retries, there's no need to construct another WeakEntry...
>>
>> T interned;
>> WeakEntry<T> e = new WeakEntry<>(elem, stale);
>> do {
>> expungeStaleElements();
>> WeakEntry<T> exist = map.putIfAbsent(e, e);
>> interned = (exist == null)? elem: exist.get();
>> } while (interned == null);
>> return interned;
>
> That's right, thanks!
>
> The update is here:
> http://cr.openjdk.java.net/~shade/7177472/webrev.02/
>
> Testing:
> - Linux x86_64 builds OK
> - Linux x86_64 java/lang/invoke/ jtreg passes OK
> - The microbenchmark scores in the original note are still the same
This looks good to me. One thing I mentioned in the bug report is that V8's RegExp shows some MethodType related methods in a -Xprof run:
Compiled + native Method
11.9% 2455 + 0 java.util.regex.Pattern$GroupTail.match
11.5% 2382 + 0 java.util.regex.Pattern$Start.match
10.2% 2110 + 0 java.util.regex.Pattern$5.isSatisfiedBy
8.5% 1765 + 0 java.util.regex.Pattern$Branch.match
7.1% 1461 + 0 java.lang.invoke.MethodType$WeakInternSet.get
3.4% 709 + 0 java.util.regex.Pattern$CharProperty.match
2.9% 597 + 1 java.lang.invoke.MethodType.makeImpl
Could you run RegExp with Nashorn again with and without your changes?
-- Chris
>
> -Aleksey.
>
More information about the hotspot-dev
mailing list