--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Thu Jul 02 17:49:11 2015 -0700
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Fri Jul 03 07:25:03 2015 +0200
@@ -3157,6 +3157,9 @@
// code for the inlined version will be different than the root
// compiled version which could lead to monotonicity problems on
// intel.
+ if (CheckIntrinsics && !scope->method()->intrinsic_candidate()) {
+ BAILOUT("failed to inline intrinsic, method not annotated");
+ }
// Set up a stream so that appending instructions works properly.
ciBytecodeStream s(scope->method());
@@ -3197,6 +3200,9 @@
// result in the referent being marked live and the reference
// object removed from the list of discovered references during
// reference processing.
+ if (CheckIntrinsics && !scope->method()->intrinsic_candidate()) {
+ BAILOUT("failed to inline intrinsic, method not annotated");
+ }
// Also we need intrinsic to prevent commoning reads from this field
// across safepoint since GC can change its value.
@@ -3317,7 +3323,8 @@
}
// handle intrinsics
- if (callee->intrinsic_id() != vmIntrinsics::_none) {
+ if (callee->intrinsic_id() != vmIntrinsics::_none &&
+ (CheckIntrinsics ? callee->intrinsic_candidate() : true)) {
if (try_inline_intrinsics(callee)) {
print_inlining(callee, "intrinsic");
return true;
@@ -4278,7 +4285,7 @@
assert(result_type->is_int(), "int result");
Values* args = state()->pop_arguments(callee->arg_size());
- // Pop off some args to speically handle, then push back
+ // Pop off some args to specially handle, then push back
Value newval = args->pop();
Value cmpval = args->pop();
Value offset = args->pop();