[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