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

src/share/vm/c1/c1_GraphBuilder.cpp

Print this page




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    :


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