<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><a href="http://cr.openjdk.java.net/~never/8147432.00-01/webrev/index.html" class="">http://cr.openjdk.java.net/~never/8147432.00-01/webrev/index.html</a><div class=""><br class=""></div><div class="">I added a Java assert that it’s non-null plus a C++ assert in the else case.  So we won’t crash in product if it returns null and turning on Java assert will report something useful.</div><div class=""><br class=""></div><div class="">tom</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 19, 2016, at 12:44 PM, Christian Thalinger <<a href="mailto:christian.thalinger@oracle.com" class="">christian.thalinger@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" class=""><div class=""><br class="Apple-interchange-newline">On Jan 19, 2016, at 10:40 AM, Tom Rodriguez <<a href="mailto:tom.rodriguez@oracle.com" class="">tom.rodriguez@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 19, 2016, at 12:12 PM, Christian Thalinger <<a href="mailto:christian.thalinger@oracle.com" class="">christian.thalinger@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">src/share/vm/compiler/compileBroker.cpp:<div class=""><br class=""></div><div class=""><div class="">+      failure_reason = ci_env.failure_reason();</div>+      retry_message = ci_env.retry_message();<div class="">       ci_env.report_failure(ci_env.failure_reason());</div><div class=""><br class=""></div>Why not use failure_reason?</div></div></div></blockquote><div class=""><br class=""></div><div class="">Fewer edits?  :)  I’ll fix it.</div></div></div></div></blockquote><div class=""><br class=""></div>:-D</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""></div><div class="">src/share/vm/jvmci/jvmciCompiler.cpp:</div><div class=""><br class=""></div><div class="">+      oop failure_message = CompilationRequestResult::failureMessage(result_object);<br class="">+      if (failure_message != NULL) {<br class="">+        const char* failure_reason = failure_message != NULL ? java_lang_String::as_utf8_string(failure_message) : "unknown reason”;<br class=""><br class="">failure_message is guaranteed to be non-null.</div></div></div></blockquote><div class=""><br class=""></div><div class="">Right.  The code evolved a few times but now that test is unnecessary.</div><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""></div><div class="">+    oop result_object = (oop) result.get_jobject();<br class="">+    if (result_object != NULL) {<br class=""><br class="">Looks like there is nothing to handle the null case.  Should we?</div></div></div></blockquote><div class=""><br class=""></div><div class="">I debated on that.  Maybe a Java assert in HotSpotJVMCIRuntime.compileMethod that JVMCICompiler.compileMethod always returns non-null?  I don’t know that there’s anything useful we can in the C++ code if it’s null.</div></div></div></div></blockquote><div class=""><br class=""></div>Assert in Java sounds good.  I was thinking about a hard-failure in C++ since it shouldn’t happen.</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class=""><br class=""></div><div class="">tom</div><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 19, 2016, at 9:32 AM, Tom Rodriguez <<a href="mailto:tom.rodriguez@oracle.com" class="">tom.rodriguez@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><a href="http://cr.openjdk.java.net/~never/8147432/webrev/index.html" class="">http://cr.openjdk.java.net/~never/8147432/webrev/index.html</a><div class=""><a href="https://bugs.openjdk.java.net/browse/JDK-8147432" class="">https://bugs.openjdk.java.net/browse/JDK-8147432</a></div><div class=""><br class=""></div><div class="">Currently JVMCI compiles either produce code or they don’t but nothing is reported for failures.  This adds a new CompilationRequestResult object that can return a human readable message to be included in the normal “COMPILE SKIPPED” style message.  I’ve refactored the printing so it’s shared between compiles.  The result can also include the number of inlined byte codes for use by things like CITimeEach.  Additionally I removed the CompilationToVM.notifyCompilationStatistics as this was apparently a left over.  Tested with specjvm and PrintCompilation which has a few OSR bailouts plus injecting some exceptions to make sure they were reported correctly.</div><div class=""><br class=""></div><div class="">tom</div></div></div></blockquote></div></div></div></div></blockquote></div></div></div></blockquote></div></div></blockquote></div><br class=""></div></body></html>