[vmkit-commits] [vmkit] r180507 - Creating a separete file for unsafe in openjdk
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:19:09 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:17:38 2013
New Revision: 180507
URL: http://llvm.org/viewvc/llvm-project?rev=180507&view=rev
Log:
Creating a separete file for unsafe in openjdk
(cherry picked from commit ad836f05a510438402a264d1110fb3ed3d41bfa7)
Added:
vmkit/trunk/lib/j3/ClassLib/OpenJDK/UnsafeForOpenJDK.inc
Modified:
vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp
vmkit/trunk/lib/j3/ClassLib/Unsafe.inc
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp?rev=180507&r1=180506&r2=180507&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp Thu Apr 25 12:17:38 2013
@@ -1052,3 +1052,4 @@ void Classpath::InitializeSystem(Jnjvm *
#include "ClasspathMethod.inc"
#include "OpenJDK.inc"
#include "Unsafe.inc"
+#include "UnsafeForOpenJDK.inc"
Added: vmkit/trunk/lib/j3/ClassLib/OpenJDK/UnsafeForOpenJDK.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/UnsafeForOpenJDK.inc?rev=180507&view=auto
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/UnsafeForOpenJDK.inc (added)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/UnsafeForOpenJDK.inc Thu Apr 25 12:17:38 2013
@@ -0,0 +1,39 @@
+#include "VMStaticInstance.h"
+#include <stdlib.h>
+
+extern "C" {
+
+JNIEXPORT void JNICALL Java_sun_misc_Unsafe_unpark(
+JavaObject* unsafe, JavaObject* thread) {
+ llvm_gcroot(unsafe, 0);
+ llvm_gcroot(thread, 0);
+ Jnjvm* vm = JavaThread::get()->getJVM();
+
+ // It's possible that the thread to be interrupted has not finished
+ // its initialization. Wait until the initialization is done.
+ //fprintf(stderr, "Case -1\n");
+// vmthread = field2->getInstanceObjectField(thread);
+// while (vmthread == 0) {
+// JavaThread::yield();
+// fprintf(stderr, "Case 0\n");
+// vmthread = field2->getInstanceObjectField(thread);
+// }
+ JavaThread* th = 0;
+
+ // Get the eetop field
+ sint64 newTh = vm->upcalls->eetop->getInstanceLongField(thread);
+ th = (JavaThread*)newTh;
+ while (th == 0) {
+ JavaThread::yield();
+ //fprintf(stderr, "Case 1\n");
+ newTh = vm->upcalls->eetop->getInstanceLongField(thread);
+ th = (JavaThread*)newTh;
+ //th = (JavaThread*)field->getInstanceObjectField(vmthread);
+ }
+ //fprintf(stderr, "unparking started %lld\n", th->getThreadID());
+ th->parkLock.unpark();
+ //fprintf(stderr, "Case 2\n");
+ //fprintf(stderr, "unparking done %lld\n", th->getThreadID());
+}
+
+}
Modified: vmkit/trunk/lib/j3/ClassLib/Unsafe.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/Unsafe.inc?rev=180507&r1=180506&r2=180507&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/Unsafe.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/Unsafe.inc Thu Apr 25 12:17:38 2013
@@ -484,46 +484,11 @@ JavaObject* unsafe, jlong ptr, jlong val
//===--- Park/Unpark thread support ---------------------------------------===//
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_park(
JavaObject* unsafe, jboolean isAbsolute, jlong time) {
- return;
llvm_gcroot(unsafe, 0);
JavaThread* thread = (JavaThread*)JavaThread::get();
thread->parkLock.park(isAbsolute, time, thread);
}
-JNIEXPORT void JNICALL Java_sun_misc_Unsafe_unpark(
-JavaObject* unsafe, JavaObject* thread) {
- return;
- llvm_gcroot(unsafe, 0);
- llvm_gcroot(thread, 0);
- Jnjvm* vm = JavaThread::get()->getJVM();
-
- // It's possible that the thread to be interrupted has not finished
- // its initialization. Wait until the initialization is done.
- //fprintf(stderr, "Case -1\n");
-// vmthread = field2->getInstanceObjectField(thread);
-// while (vmthread == 0) {
-// JavaThread::yield();
-// fprintf(stderr, "Case 0\n");
-// vmthread = field2->getInstanceObjectField(thread);
-// }
- JavaThread* th = 0;
-
- // Get the eetop field
- sint64 newTh = vm->upcalls->eetop->getInstanceLongField(thread);
- th = (JavaThread*)newTh;
- while (th == 0) {
- JavaThread::yield();
- //fprintf(stderr, "Case 1\n");
- newTh = vm->upcalls->eetop->getInstanceLongField(thread);
- th = (JavaThread*)newTh;
- //th = (JavaThread*)field->getInstanceObjectField(vmthread);
- }
- //fprintf(stderr, "unparking started %lld\n", th->getThreadID());
- th->parkLock.unpark();
- //fprintf(stderr, "Case 2\n");
- //fprintf(stderr, "unparking done %lld\n", th->getThreadID());
-}
-
//===--- Monitor support --------------------------------------------------===//
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_tryMonitorEnter(
More information about the vmkit-commits
mailing list