src/hotspot/share/opto/library_call.cpp
changeset 52979 7384e00d5860
parent 52925 9c18c9d839d3
child 53041 f15af1e2c683
child 53452 274fcce9d147
equal deleted inserted replaced
52978:95efb32d390b 52979:7384e00d5860
   322   bool inline_mulAdd();
   322   bool inline_mulAdd();
   323   bool inline_montgomeryMultiply();
   323   bool inline_montgomeryMultiply();
   324   bool inline_montgomerySquare();
   324   bool inline_montgomerySquare();
   325   bool inline_vectorizedMismatch();
   325   bool inline_vectorizedMismatch();
   326   bool inline_fma(vmIntrinsics::ID id);
   326   bool inline_fma(vmIntrinsics::ID id);
       
   327   bool inline_character_compare(vmIntrinsics::ID id);
   327 
   328 
   328   bool inline_profileBoolean();
   329   bool inline_profileBoolean();
   329   bool inline_isCompileConstant();
   330   bool inline_isCompileConstant();
   330   void clear_upper_avx() {
   331   void clear_upper_avx() {
   331 #ifdef X86
   332 #ifdef X86
   864     return inline_hasNegatives();
   865     return inline_hasNegatives();
   865 
   866 
   866   case vmIntrinsics::_fmaD:
   867   case vmIntrinsics::_fmaD:
   867   case vmIntrinsics::_fmaF:
   868   case vmIntrinsics::_fmaF:
   868     return inline_fma(intrinsic_id());
   869     return inline_fma(intrinsic_id());
       
   870 
       
   871   case vmIntrinsics::_isDigit:
       
   872   case vmIntrinsics::_isLowerCase:
       
   873   case vmIntrinsics::_isUpperCase:
       
   874   case vmIntrinsics::_isWhitespace:
       
   875     return inline_character_compare(intrinsic_id());
   869 
   876 
   870   default:
   877   default:
   871     // If you get here, it may be that someone has added a new intrinsic
   878     // If you get here, it may be that someone has added a new intrinsic
   872     // to the list in vmSymbols.hpp without implementing it here.
   879     // to the list in vmSymbols.hpp without implementing it here.
   873 #ifndef PRODUCT
   880 #ifndef PRODUCT
  6553   }
  6560   }
  6554   set_result(result);
  6561   set_result(result);
  6555   return true;
  6562   return true;
  6556 }
  6563 }
  6557 
  6564 
       
  6565 bool LibraryCallKit::inline_character_compare(vmIntrinsics::ID id) {
       
  6566   // argument(0) is receiver
       
  6567   Node* codePoint = argument(1);
       
  6568   Node* n = NULL;
       
  6569 
       
  6570   switch (id) {
       
  6571     case vmIntrinsics::_isDigit :
       
  6572       n = new DigitNode(control(), codePoint);
       
  6573       break;
       
  6574     case vmIntrinsics::_isLowerCase :
       
  6575       n = new LowerCaseNode(control(), codePoint);
       
  6576       break;
       
  6577     case vmIntrinsics::_isUpperCase :
       
  6578       n = new UpperCaseNode(control(), codePoint);
       
  6579       break;
       
  6580     case vmIntrinsics::_isWhitespace :
       
  6581       n = new WhitespaceNode(control(), codePoint);
       
  6582       break;
       
  6583     default:
       
  6584       fatal_unexpected_iid(id);
       
  6585   }
       
  6586 
       
  6587   set_result(_gvn.transform(n));
       
  6588   return true;
       
  6589 }
       
  6590 
  6558 bool LibraryCallKit::inline_profileBoolean() {
  6591 bool LibraryCallKit::inline_profileBoolean() {
  6559   Node* counts = argument(1);
  6592   Node* counts = argument(1);
  6560   const TypeAryPtr* ary = NULL;
  6593   const TypeAryPtr* ary = NULL;
  6561   ciArray* aobj = NULL;
  6594   ciArray* aobj = NULL;
  6562   if (counts->is_Con()
  6595   if (counts->is_Con()