Index: vm/vmcore/build/vmcore.exp =================================================================== --- vm/vmcore/build/vmcore.exp (revision 606788) +++ vm/vmcore/build/vmcore.exp (working copy) @@ -273,6 +273,8 @@ Java_java_util_concurrent_locks_LockSupport_unpark; Java_org_apache_harmony_drlvm_thread_ThreadHelper_getThreadIdOffset; Java_org_apache_harmony_drlvm_thread_ThreadHelper_getLockWordOffset; + Java_org_apache_harmony_drlvm_thread_ThreadHelper_monitorEnterSlow; + Java_org_apache_harmony_drlvm_thread_ThreadHelper_monitorExitSlow; Java_org_apache_harmony_drlvm_VMHelperFastPath_getObjectVtableOffset; Java_org_apache_harmony_drlvm_VMHelperFastPath_getVtableClassOffset; Java_org_apache_harmony_drlvm_VMHelperFastPath_getVtableIntfTableOffset; Index: vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/thread/ThreadHelper.java =================================================================== --- vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/thread/ThreadHelper.java (revision 606788) +++ vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/thread/ThreadHelper.java (working copy) @@ -81,7 +81,8 @@ } } } - VMHelper.monitorEnter(obj); + //VMHelper.monitorEnter(obj); + monitorEnterSlow(obj); } public static final int FAT_LOCK_MASK = 0x80000000; @@ -102,11 +103,14 @@ lockWordPtr.store(lockword); return; } - VMHelper.monitorExit(obj); + //VMHelper.monitorExit(obj); + monitorExitSlow(obj); } private static native int getThreadIdOffset(); private static native int getLockWordOffset(); + private static native void monitorEnterSlow(Object obj); + private static native void monitorExitSlow(Object obj); } Index: vm/vmcore/src/thread/thread_manager.cpp =================================================================== --- vm/vmcore/src/thread/thread_manager.cpp (revision 606788) +++ vm/vmcore/src/thread/thread_manager.cpp (working copy) @@ -310,6 +310,28 @@ return (jint)offset; } +/* + * Class: org_apache_harmony_drlvm_thread_ThreadHelper + * Method: monitorEnterSlow + * Signature: (Ljava/lang/Object;)V + */ +VMEXPORT void JNICALL +Java_org_apache_harmony_drlvm_thread_ThreadHelper_monitorEnterSlow(JNIEnv *env, jclass klass, jobject monitor) +{ + jthread_monitor_enter(monitor); +} + +/* + * Class: org_apache_harmony_drlvm_thread_ThreadHelper + * Method: monitorExitSlow + * Signature: (Ljava/lang/Object;)V + */ +VMEXPORT void JNICALL +Java_org_apache_harmony_drlvm_thread_ThreadHelper_monitorExitSlow(JNIEnv *env, jclass klass, jobject monitor) +{ + jthread_monitor_exit(monitor); +} + #ifdef __cplusplus } #endif /* __cplusplus */