hotspot/src/share/vm/opto/library_call.cpp
changeset 35086 bbf32241d851
parent 34499 343abbc06572
child 35110 f19bcdf40799
equal deleted inserted replaced
35085:839c8ba29724 35086:bbf32241d851
   313   bool inline_montgomeryMultiply();
   313   bool inline_montgomeryMultiply();
   314   bool inline_montgomerySquare();
   314   bool inline_montgomerySquare();
   315 
   315 
   316   bool inline_profileBoolean();
   316   bool inline_profileBoolean();
   317   bool inline_isCompileConstant();
   317   bool inline_isCompileConstant();
       
   318 
       
   319   bool inline_deoptimize();
   318 };
   320 };
   319 
   321 
   320 //---------------------------make_vm_intrinsic----------------------------
   322 //---------------------------make_vm_intrinsic----------------------------
   321 CallGenerator* Compile::make_vm_intrinsic(ciMethod* m, bool is_virtual) {
   323 CallGenerator* Compile::make_vm_intrinsic(ciMethod* m, bool is_virtual) {
   322   vmIntrinsics::ID id = m->intrinsic_id();
   324   vmIntrinsics::ID id = m->intrinsic_id();
   747   case vmIntrinsics::_isCompileConstant:
   749   case vmIntrinsics::_isCompileConstant:
   748     return inline_isCompileConstant();
   750     return inline_isCompileConstant();
   749 
   751 
   750   case vmIntrinsics::_hasNegatives:
   752   case vmIntrinsics::_hasNegatives:
   751     return inline_hasNegatives();
   753     return inline_hasNegatives();
       
   754 
       
   755   case vmIntrinsics::_deoptimize:
       
   756     return inline_deoptimize();
   752 
   757 
   753   default:
   758   default:
   754     // If you get here, it may be that someone has added a new intrinsic
   759     // If you get here, it may be that someone has added a new intrinsic
   755     // to the list in vmSymbols.hpp without implementing it here.
   760     // to the list in vmSymbols.hpp without implementing it here.
   756 #ifndef PRODUCT
   761 #ifndef PRODUCT
  6572 bool LibraryCallKit::inline_isCompileConstant() {
  6577 bool LibraryCallKit::inline_isCompileConstant() {
  6573   Node* n = argument(0);
  6578   Node* n = argument(0);
  6574   set_result(n->is_Con() ? intcon(1) : intcon(0));
  6579   set_result(n->is_Con() ? intcon(1) : intcon(0));
  6575   return true;
  6580   return true;
  6576 }
  6581 }
       
  6582 
       
  6583 bool LibraryCallKit::inline_deoptimize() {
       
  6584   assert(WhiteBoxAPI, "");
       
  6585   PreserveReexecuteState preexecs(this);
       
  6586   jvms()->set_should_reexecute(false);
       
  6587   uncommon_trap(Deoptimization::Reason_intrinsic,
       
  6588                 Deoptimization::Action_none);
       
  6589   return true;
       
  6590 }