http://cr.openjdk.java.net/~vlivanov/8058309/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8058309
j.l.i.LambdaForm class has ~50-100 dependent nmethods on average. For
every compiled LF, Unsafe.defineAnonymousClass() should validate all
dependencies on parent class. Since thousands of LFs are compiled, VM
wastes considerable amount of time re-validating dependencies. Most of
the dependencies on j.l.i.LambdaForm are of type unique_concrete_method
and can't be invalidated with the code generated for LFs.
The fix is to decouple compiled LambdaForms and j.l.i.LambdaForm class
and use j.l.Object as a parent class instead. Since LambdaForm is
already used as a host class, all access checks pass.
Reviewed-by: vlivanov, jrose, ?
Contributed-by: aleksey.shipi...@oracle.com
Testing: jck (api/java_lang/invoke), jdk/java/lang/invoke,
jdk/java/util/streams w/ "-ea -esa" and COMPILE_THRESHOLD={0,30},
Aleksey refers to performance analysis in the bug [1].
Thanks!
Best regards,
Vladimir Ivanov
[1] http://cr.openjdk.java.net/~shade/8058309/usdacdependency.txt
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev