src/share/vm/opto/library_call.cpp
Print this page
@@ -272,10 +272,11 @@
typedef enum { LS_xadd, LS_xchg, LS_cmpxchg } LoadStoreKind;
bool inline_unsafe_load_store(BasicType type, LoadStoreKind kind);
bool inline_unsafe_ordered_store(BasicType type);
bool inline_unsafe_fence(vmIntrinsics::ID id);
+ bool inline_onspinwait();
bool inline_fp_conversions(vmIntrinsics::ID id);
bool inline_number_methods(vmIntrinsics::ID id);
bool inline_reference_get();
bool inline_Class_cast();
bool inline_aescrypt_Block(vmIntrinsics::ID id);
@@ -627,10 +628,12 @@
case vmIntrinsics::_loadFence:
case vmIntrinsics::_storeFence:
case vmIntrinsics::_fullFence: return inline_unsafe_fence(intrinsic_id());
+ case vmIntrinsics::_onSpinWait: return inline_onspinwait();
+
case vmIntrinsics::_currentThread: return inline_native_currentThread();
case vmIntrinsics::_isInterrupted: return inline_native_isInterrupted();
#ifdef TRACE_HAVE_INTRINSICS
case vmIntrinsics::_classID: return inline_native_classID();
@@ -2972,10 +2975,15 @@
fatal_unexpected_iid(id);
return false;
}
}
+bool LibraryCallKit::inline_onspinwait() {
+ insert_mem_bar(Op_OnSpinWait);
+ return true;
+}
+
bool LibraryCallKit::klass_needs_init_guard(Node* kls) {
if (!kls->is_Con()) {
return true;
}
const TypeKlassPtr* klsptr = kls->bottom_type()->isa_klassptr();
@@ -3355,10 +3363,13 @@
case vmIntrinsics::_isInstance:
// nothing is an instance of a primitive type
query_value = gen_instanceof(obj, kls, safe_for_replace);
break;
+ case vmIntrinsics::_onSpinWait:
+ break;
+
case vmIntrinsics::_getModifiers:
p = basic_plus_adr(kls, in_bytes(Klass::modifier_flags_offset()));
query_value = make_load(NULL, p, TypeInt::INT, T_INT, MemNode::unordered);
break;