src/share/vm/c1/c1_GraphBuilder.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/c1/c1_GraphBuilder.cpp	Thu Jun 25 22:06:02 2015
--- new/src/share/vm/c1/c1_GraphBuilder.cpp	Thu Jun 25 22:06:02 2015

*** 3155,3164 **** --- 3155,3167 ---- // shouldn't be parsed during the compilation, only the special // Intrinsic node should be emitted. If this isn't done the the // 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()); s.reset_to_bci(0); scope_data()->set_stream(&s);
*** 3195,3204 **** --- 3198,3210 ---- // Specifically, if G1 is enabled, the value in the referent // field is recorded by the G1 SATB pre barrier. This will // 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. // Set up a stream so that appending instructions works properly.
*** 3315,3325 **** --- 3321,3332 ---- if (callee->is_method_handle_intrinsic()) { return try_method_handle_inline(callee); } // 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; } // try normal inlining
*** 4276,4286 **** --- 4283,4293 ---- ValueStack* state_before = copy_state_for_exception(); ValueType* result_type = as_ValueType(callee->return_type()); 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(); Value src = args->pop(); Value unsafe_obj = args->pop();

src/share/vm/c1/c1_GraphBuilder.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File