hotspot/src/share/vm/opto/library_call.cpp
changeset 38240 28e0cafd5222
parent 38131 7bb27ec1a3d8
child 38278 6ec4e44eda22
child 38246 518c89421883
equal deleted inserted replaced
38239:4d8b8ba74fea 38240:28e0cafd5222
   259   bool inline_native_Class_query(vmIntrinsics::ID id);
   259   bool inline_native_Class_query(vmIntrinsics::ID id);
   260   bool inline_native_subtype_check();
   260   bool inline_native_subtype_check();
   261   bool inline_native_getLength();
   261   bool inline_native_getLength();
   262   bool inline_array_copyOf(bool is_copyOfRange);
   262   bool inline_array_copyOf(bool is_copyOfRange);
   263   bool inline_array_equals(StrIntrinsicNode::ArgEnc ae);
   263   bool inline_array_equals(StrIntrinsicNode::ArgEnc ae);
   264   bool inline_objects_checkIndex();
   264   bool inline_preconditions_checkIndex();
   265   void copy_to_clone(Node* obj, Node* alloc_obj, Node* obj_size, bool is_array, bool card_mark);
   265   void copy_to_clone(Node* obj, Node* alloc_obj, Node* obj_size, bool is_array, bool card_mark);
   266   bool inline_native_clone(bool is_virtual);
   266   bool inline_native_clone(bool is_virtual);
   267   bool inline_native_Reflection_getCallerClass();
   267   bool inline_native_Reflection_getCallerClass();
   268   // Helper function for inlining native object hash method
   268   // Helper function for inlining native object hash method
   269   bool inline_native_hashcode(bool is_virtual, bool is_static);
   269   bool inline_native_hashcode(bool is_virtual, bool is_static);
   712   case vmIntrinsics::_getLength:                return inline_native_getLength();
   712   case vmIntrinsics::_getLength:                return inline_native_getLength();
   713   case vmIntrinsics::_copyOf:                   return inline_array_copyOf(false);
   713   case vmIntrinsics::_copyOf:                   return inline_array_copyOf(false);
   714   case vmIntrinsics::_copyOfRange:              return inline_array_copyOf(true);
   714   case vmIntrinsics::_copyOfRange:              return inline_array_copyOf(true);
   715   case vmIntrinsics::_equalsB:                  return inline_array_equals(StrIntrinsicNode::LL);
   715   case vmIntrinsics::_equalsB:                  return inline_array_equals(StrIntrinsicNode::LL);
   716   case vmIntrinsics::_equalsC:                  return inline_array_equals(StrIntrinsicNode::UU);
   716   case vmIntrinsics::_equalsC:                  return inline_array_equals(StrIntrinsicNode::UU);
   717   case vmIntrinsics::_Objects_checkIndex:       return inline_objects_checkIndex();
   717   case vmIntrinsics::_Preconditions_checkIndex: return inline_preconditions_checkIndex();
   718   case vmIntrinsics::_clone:                    return inline_native_clone(intrinsic()->is_virtual());
   718   case vmIntrinsics::_clone:                    return inline_native_clone(intrinsic()->is_virtual());
   719 
   719 
   720   case vmIntrinsics::_allocateUninitializedArray: return inline_unsafe_newArray(true);
   720   case vmIntrinsics::_allocateUninitializedArray: return inline_unsafe_newArray(true);
   721   case vmIntrinsics::_newArray:                   return inline_unsafe_newArray(false);
   721   case vmIntrinsics::_newArray:                   return inline_unsafe_newArray(false);
   722 
   722 
  1139   Node* result = new HasNegativesNode(control(), memory(TypeAryPtr::BYTES), ba_start, len);
  1139   Node* result = new HasNegativesNode(control(), memory(TypeAryPtr::BYTES), ba_start, len);
  1140   set_result(_gvn.transform(result));
  1140   set_result(_gvn.transform(result));
  1141   return true;
  1141   return true;
  1142 }
  1142 }
  1143 
  1143 
  1144 bool LibraryCallKit::inline_objects_checkIndex() {
  1144 bool LibraryCallKit::inline_preconditions_checkIndex() {
  1145   Node* index = argument(0);
  1145   Node* index = argument(0);
  1146   Node* length = argument(1);
  1146   Node* length = argument(1);
  1147   if (too_many_traps(Deoptimization::Reason_intrinsic) || too_many_traps(Deoptimization::Reason_range_check)) {
  1147   if (too_many_traps(Deoptimization::Reason_intrinsic) || too_many_traps(Deoptimization::Reason_range_check)) {
  1148     return false;
  1148     return false;
  1149   }
  1149   }