[9] RFR(S): 8065339: Failed compilation does not always trigger a JFR event 'CompilerFailure'

Tobias Hartmann tobias.hartmann at oracle.com
Thu Nov 20 12:11:18 UTC 2014


Hi,

please review the following patch.

Bug: https://bugs.openjdk.java.net/browse/JDK-8065339
Webrev: http://cr.openjdk.java.net/~thartmann/8065339/webrev.00/

Problem:
Failures that happen during C2 compilation are recorded by
'Compile::record_failure' and trigger the JFR event 'CompilerFailure'. They are
then passed up to ciEnv by 'C2Compiler::compile_method'. However, failures that
happen in ciEnv do not trigger a CompilerFailure event although compilation
fails. For example, "code cache is full" in 'ciEnv::register_method' does not
trigger a JFR event.

Solution:
I added the method 'report_failure' to ciEnv to fire the CompilerFailure event.
Instead of firing the JFR event in 'Compile::record_failure' we now call
'ciEnv::report_failure' from 'CompileBroker::invoke_compiler_on_method'.

If we retry compilation in C2, we directly report the error instead of passing
it up to ciEnv.

Testing:
JFR tests and JPRT

Thanks,
Tobias



More information about the hotspot-compiler-dev mailing list