src/share/vm/opto/library_call.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8076112 Cdiff src/share/vm/opto/library_call.cpp

src/share/vm/opto/library_call.cpp

Print this page
rev 8621 : 8076112: Add @HotSpotIntrinsicCandidate annotation to indicate methods for which Java Runtime has intrinsics
Summary: Annotate possibly intrinsified methods with @HotSpotIntrinsicCandidate. Add checks omitted by intrinsics to the library code. Add CheckIntrinsics flags to check consistency of intrinsics.
Reviewed-by: jrose, kvn, thartmann, vlivanov, abuckley, darcy, ascarpino, briangoetz, alanb, aph, dnsimon

*** 649,659 **** #endif ciMethod* callee = kit.callee(); const int bci = kit.bci(); // Try to inline the intrinsic. ! if (kit.try_to_inline(_last_predicate)) { if (C->print_intrinsics() || C->print_inlining()) { C->print_inlining(callee, jvms->depth() - 1, bci, is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)"); } C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked); if (C->log()) { --- 649,660 ---- #endif ciMethod* callee = kit.callee(); const int bci = kit.bci(); // Try to inline the intrinsic. ! if ((CheckIntrinsics ? callee->intrinsic_candidate() : true) && ! kit.try_to_inline(_last_predicate)) { if (C->print_intrinsics() || C->print_inlining()) { C->print_inlining(callee, jvms->depth() - 1, bci, is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)"); } C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked); if (C->log()) {
*** 670,680 **** // The intrinsic bailed out if (C->print_intrinsics() || C->print_inlining()) { if (jvms->has_method()) { // Not a root compile. ! const char* msg = is_virtual() ? "failed to inline (intrinsic, virtual)" : "failed to inline (intrinsic)"; C->print_inlining(callee, jvms->depth() - 1, bci, msg); } else { // Root compile tty->print("Did not generate intrinsic %s%s at bci:%d in", vmIntrinsics::name_at(intrinsic_id()), --- 671,687 ---- // The intrinsic bailed out if (C->print_intrinsics() || C->print_inlining()) { if (jvms->has_method()) { // Not a root compile. ! const char* msg; ! if (callee->intrinsic_candidate()) { ! msg = is_virtual() ? "failed to inline (intrinsic, virtual)" : "failed to inline (intrinsic)"; ! } else { ! msg = is_virtual() ? "failed to inline (intrinsic, virtual), method not annotated" ! : "failed to inline (intrinsic), method not annotated"; ! } C->print_inlining(callee, jvms->depth() - 1, bci, msg); } else { // Root compile tty->print("Did not generate intrinsic %s%s at bci:%d in", vmIntrinsics::name_at(intrinsic_id()),
*** 5256,5266 **** return true; } //-------------inline_multiplyToLen----------------------------------- bool LibraryCallKit::inline_multiplyToLen() { ! assert(UseMultiplyToLenIntrinsic, "not implementated on this platform"); address stubAddr = StubRoutines::multiplyToLen(); if (stubAddr == NULL) { return false; // Intrinsic's stub is not implemented on this platform } --- 5263,5273 ---- return true; } //-------------inline_multiplyToLen----------------------------------- bool LibraryCallKit::inline_multiplyToLen() { ! assert(UseMultiplyToLenIntrinsic, "not implemented on this platform"); address stubAddr = StubRoutines::multiplyToLen(); if (stubAddr == NULL) { return false; // Intrinsic's stub is not implemented on this platform }
src/share/vm/opto/library_call.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File