--- old/src/share/vm/prims/jvm.cpp 2015-10-14 13:54:31.773464985 +0200 +++ new/src/share/vm/prims/jvm.cpp 2015-10-14 13:54:31.650467959 +0200 @@ -551,13 +551,13 @@ JVM_ENTRY(jint, JVM_IHashCode(JNIEnv* env, jobject handle)) JVMWrapper("JVM_IHashCode"); // as implemented in the classic virtual machine; return 0 if object is NULL - return handle == NULL ? 0 : ObjectSynchronizer::FastHashCode (THREAD, JNIHandles::resolve_non_null(handle)) ; + return handle == NULL ? 0 : ObjectSynchronizer::FastHashCode (THREAD, oopDesc::bs()->write_barrier(JNIHandles::resolve_non_null(handle))) ; JVM_END JVM_ENTRY(void, JVM_MonitorWait(JNIEnv* env, jobject handle, jlong ms)) JVMWrapper("JVM_MonitorWait"); - Handle obj(THREAD, JNIHandles::resolve_non_null(handle)); + Handle obj(THREAD, oopDesc::bs()->write_barrier(JNIHandles::resolve_non_null(handle))); JavaThreadInObjectWaitState jtiows(thread, ms != 0); if (JvmtiExport::should_post_monitor_wait()) { JvmtiExport::post_monitor_wait((JavaThread *)THREAD, (oop)obj(), ms); @@ -574,21 +574,21 @@ JVM_ENTRY(void, JVM_MonitorNotify(JNIEnv* env, jobject handle)) JVMWrapper("JVM_MonitorNotify"); - Handle obj(THREAD, JNIHandles::resolve_non_null(handle)); + Handle obj(THREAD, oopDesc::bs()->write_barrier(JNIHandles::resolve_non_null(handle))); ObjectSynchronizer::notify(obj, CHECK); JVM_END JVM_ENTRY(void, JVM_MonitorNotifyAll(JNIEnv* env, jobject handle)) JVMWrapper("JVM_MonitorNotifyAll"); - Handle obj(THREAD, JNIHandles::resolve_non_null(handle)); + Handle obj(THREAD, oopDesc::bs()->write_barrier(JNIHandles::resolve_non_null(handle))); ObjectSynchronizer::notifyall(obj, CHECK); JVM_END JVM_ENTRY(jobject, JVM_Clone(JNIEnv* env, jobject handle)) JVMWrapper("JVM_Clone"); - Handle obj(THREAD, JNIHandles::resolve_non_null(handle)); + Handle obj(THREAD, oopDesc::bs()->read_barrier(JNIHandles::resolve_non_null(handle))); const KlassHandle klass (THREAD, obj->klass()); JvmtiVMObjectAllocEventCollector oam; @@ -897,7 +897,8 @@ ClassFileStream st((u1*) buf, len, (char *)source); Handle class_loader (THREAD, JNIHandles::resolve(loader)); if (UsePerfData) { - is_lock_held_by_thread(class_loader, + Handle class_loader1 (THREAD, oopDesc::bs()->write_barrier(class_loader())); + is_lock_held_by_thread(class_loader1, ClassLoader::sync_JVMDefineClassLockFreeCounter(), THREAD); } @@ -961,6 +962,7 @@ // us to pass the NULL as the initiating class loader. Handle h_loader(THREAD, JNIHandles::resolve(loader)); if (UsePerfData) { + Handle h_loader1(THREAD, oopDesc::bs()->write_barrier(h_loader())); is_lock_held_by_thread(h_loader, ClassLoader::sync_JVMFindLoadedClassLockFreeCounter(), THREAD); @@ -3028,7 +3030,7 @@ if (obj == NULL) { THROW_(vmSymbols::java_lang_NullPointerException(), JNI_FALSE); } - Handle h_obj(THREAD, JNIHandles::resolve(obj)); + Handle h_obj(THREAD, oopDesc::bs()->write_barrier(JNIHandles::resolve(obj))); return ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, h_obj); JVM_END