hotspot/src/share/vm/opto/library_call.cpp
changeset 35086 bbf32241d851
parent 34499 343abbc06572
child 35110 f19bcdf40799
--- a/hotspot/src/share/vm/opto/library_call.cpp	Fri Dec 04 16:38:04 2015 +0100
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Fri Dec 04 23:46:19 2015 +0300
@@ -315,6 +315,8 @@
 
   bool inline_profileBoolean();
   bool inline_isCompileConstant();
+
+  bool inline_deoptimize();
 };
 
 //---------------------------make_vm_intrinsic----------------------------
@@ -750,6 +752,9 @@
   case vmIntrinsics::_hasNegatives:
     return inline_hasNegatives();
 
+  case vmIntrinsics::_deoptimize:
+    return inline_deoptimize();
+
   default:
     // If you get here, it may be that someone has added a new intrinsic
     // to the list in vmSymbols.hpp without implementing it here.
@@ -6574,3 +6579,12 @@
   set_result(n->is_Con() ? intcon(1) : intcon(0));
   return true;
 }
+
+bool LibraryCallKit::inline_deoptimize() {
+  assert(WhiteBoxAPI, "");
+  PreserveReexecuteState preexecs(this);
+  jvms()->set_should_reexecute(false);
+  uncommon_trap(Deoptimization::Reason_intrinsic,
+                Deoptimization::Action_none);
+  return true;
+}