--- old/src/share/vm/opto/library_call.cpp 2012-02-21 10:17:41.317786300 +0100 +++ new/src/share/vm/opto/library_call.cpp 2012-02-21 10:17:41.092773400 +0100 @@ -339,7 +339,15 @@ case vmIntrinsics::_bitCount_i: case vmIntrinsics::_bitCount_l: - if (!UsePopCountInstruction) return NULL; +#ifdef SPARC + // On sparc these depend on the popcount instruction + // On x86 these intrinsics always exist but may use bsr + case vmIntrinsics::_numberOfLeadingZeros_i: + case vmIntrinsics::_numberOfLeadingZeros_l: + case vmIntrinsics::_numberOfTrailingZeros_i: + case vmIntrinsics::_numberOfTrailingZeros_l: +#endif + if (!UsePopCountInstruction) return NULL; break; case vmIntrinsics::_Reference_get: @@ -416,14 +424,12 @@ return kit.transfer_exceptions_into_jvms(); } - if (PrintIntrinsics) { + // The intrinsic bailed out + if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { + const char* msg = is_virtual() ? "failed to inline (intrinsic, virtual)" : "failed to inline (intrinsic)"; if (jvms->has_method()) { // Not a root compile. - tty->print("Did not inline intrinsic %s%s at bci:%d in", - vmIntrinsics::name_at(intrinsic_id()), - (is_virtual() ? " (virtual)" : ""), kit.bci()); - kit.caller()->print_short_name(tty); - tty->print_cr(" (%d bytes)", kit.caller()->code_size()); + CompileTask::print_inlining(kit.callee(), jvms->depth() - 1, kit.bci(), msg); } else { // Root compile tty->print("Did not generate intrinsic %s%s at bci:%d in",