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

Reply via email to