2961 INLINE_BAILOUT("excluded by CompilerOracle")
2962 } else if (!callee->can_be_compiled()) {
2963 // callee is not compilable (prob. has breakpoints)
2964 INLINE_BAILOUT("not compilable")
2965 } else if (callee->intrinsic_id() != vmIntrinsics::_none && try_inline_intrinsics(callee)) {
2966 // intrinsics can be native or not
2967 return true;
2968 } else if (callee->is_native()) {
2969 // non-intrinsic natives cannot be inlined
2970 INLINE_BAILOUT("non-intrinsic native")
2971 } else if (callee->is_abstract()) {
2972 INLINE_BAILOUT("abstract")
2973 } else {
2974 return try_inline_full(callee, holder_known);
2975 }
2976 }
2977
2978
2979 bool GraphBuilder::try_inline_intrinsics(ciMethod* callee) {
2980 if (!InlineNatives ) INLINE_BAILOUT("intrinsic method inlining disabled");
2981 if (callee->is_synchronized()) INLINE_BAILOUT("intrinsic method is synchronized");
2982 // callee seems like a good candidate
2983 // determine id
2984 bool preserves_state = false;
2985 bool cantrap = true;
2986 vmIntrinsics::ID id = callee->intrinsic_id();
2987 switch (id) {
2988 case vmIntrinsics::_arraycopy :
2989 if (!InlineArrayCopy) return false;
2990 break;
2991
2992 case vmIntrinsics::_currentTimeMillis:
2993 case vmIntrinsics::_nanoTime:
2994 preserves_state = true;
2995 cantrap = false;
2996 break;
2997
2998 case vmIntrinsics::_floatToRawIntBits :
2999 case vmIntrinsics::_intBitsToFloat :
3000 case vmIntrinsics::_doubleToRawLongBits :
3001 case vmIntrinsics::_longBitsToDouble :
|
2961 INLINE_BAILOUT("excluded by CompilerOracle")
2962 } else if (!callee->can_be_compiled()) {
2963 // callee is not compilable (prob. has breakpoints)
2964 INLINE_BAILOUT("not compilable")
2965 } else if (callee->intrinsic_id() != vmIntrinsics::_none && try_inline_intrinsics(callee)) {
2966 // intrinsics can be native or not
2967 return true;
2968 } else if (callee->is_native()) {
2969 // non-intrinsic natives cannot be inlined
2970 INLINE_BAILOUT("non-intrinsic native")
2971 } else if (callee->is_abstract()) {
2972 INLINE_BAILOUT("abstract")
2973 } else {
2974 return try_inline_full(callee, holder_known);
2975 }
2976 }
2977
2978
2979 bool GraphBuilder::try_inline_intrinsics(ciMethod* callee) {
2980 if (!InlineNatives ) INLINE_BAILOUT("intrinsic method inlining disabled");
2981 if (callee->is_synchronized()) {
2982 // We don't currently support any synchronized intrinsics
2983 return false;
2984 }
2985
2986 // callee seems like a good candidate
2987 // determine id
2988 bool preserves_state = false;
2989 bool cantrap = true;
2990 vmIntrinsics::ID id = callee->intrinsic_id();
2991 switch (id) {
2992 case vmIntrinsics::_arraycopy :
2993 if (!InlineArrayCopy) return false;
2994 break;
2995
2996 case vmIntrinsics::_currentTimeMillis:
2997 case vmIntrinsics::_nanoTime:
2998 preserves_state = true;
2999 cantrap = false;
3000 break;
3001
3002 case vmIntrinsics::_floatToRawIntBits :
3003 case vmIntrinsics::_intBitsToFloat :
3004 case vmIntrinsics::_doubleToRawLongBits :
3005 case vmIntrinsics::_longBitsToDouble :
|