[vmkit-commits] [vmkit] r120020 - in /vmkit/branches/multi-vm/lib/J3: Classpath/ClasspathConstructor.inc Classpath/ClasspathMethod.inc Classpath/ClasspathVMStackWalker.inc Classpath/ClasspathVMThrowable.inc VMCore/JnjvmClassLoader.cpp

Gael Thomas gael.thomas at lip6.fr
Tue Nov 23 05:13:30 PST 2010


Author: gthomas
Date: Tue Nov 23 07:13:30 2010
New Revision: 120020

URL: http://llvm.org/viewvc/llvm-project?rev=120020&view=rev
Log:
split the JavaThread and the mvm::Thread (in progress) - 2

Modified:
    vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathConstructor.inc
    vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathMethod.inc
    vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMStackWalker.inc
    vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThrowable.inc
    vmkit/branches/multi-vm/lib/J3/VMCore/JnjvmClassLoader.cpp

Modified: vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathConstructor.inc?rev=120020&r1=120019&r2=120020&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathConstructor.inc Tue Nov 23 07:13:30 2010
@@ -117,15 +117,16 @@
         }
       }
       
-      JavaThread* th = JavaThread::get();
       TRY {
         meth->invokeIntSpecialBuf(vm, cl, res, buf);
       } CATCH {
-        excp = th->getJavaException();
+        excp = JavaThread::get()->getJavaException();
       } END_CATCH;
+			mvm::Thread* mut = mvm::Thread::get();
+      JavaThread* th = JavaThread::j3Thread(mut);
       if (excp) {
         if (JavaObject::getClass(excp)->isAssignableFrom(vm->upcalls->newException)) {
-          th->clearException();
+          mut->clearException();
           // If it's an exception, we encapsule it in an
           // invocationTargetException
           vm->invocationTargetException(excp);

Modified: vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathMethod.inc?rev=120020&r1=120019&r2=120020&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathMethod.inc Tue Nov 23 07:13:30 2010
@@ -150,32 +150,33 @@
       }
     }
     
-    JavaThread* th = JavaThread::get();
 
-#define RUN_METH(TYPE, VAR)                                                    \
-    TRY {                                                                      \
-      if (isVirtual(meth->access)) {                                           \
-        if (isPublic(meth->access) && !isFinal(meth->access) &&                \
-            !isFinal(meth->classDef->access)) {                                \
-          VAR = meth->invoke##TYPE##VirtualBuf(vm, cl, obj, buf);              \
-        } else {                                                               \
-          VAR = meth->invoke##TYPE##SpecialBuf(vm, cl, obj, buf);              \
-        }                                                                      \
-      } else {                                                                 \
-        VAR = meth->invoke##TYPE##StaticBuf(vm, cl, buf);                      \
-      }                                                                        \
-    } CATCH {                                                                  \
-      exc = th->getJavaException();                                            \
-    } END_CATCH;                                                               \
-    if (exc) {                                                                 \
-      if (JavaObject::getClass(exc)->isAssignableFrom(                         \
-              vm->upcalls->newException)) {                                    \
-        th->clearException();                                                  \
-        th->getJVM()->invocationTargetException(exc);                          \
-      } else {                                                                 \
-        th->throwPendingException();                                           \
-      }                                                                        \
-      return NULL;                                                             \
+#define RUN_METH(TYPE, VAR)																							\
+    TRY {																																\
+      if (isVirtual(meth->access)) {																		\
+        if (isPublic(meth->access) && !isFinal(meth->access) &&					\
+            !isFinal(meth->classDef->access)) {													\
+          VAR = meth->invoke##TYPE##VirtualBuf(vm, cl, obj, buf);				\
+        } else {																												\
+          VAR = meth->invoke##TYPE##SpecialBuf(vm, cl, obj, buf);				\
+        }																																\
+      } else {																													\
+        VAR = meth->invoke##TYPE##StaticBuf(vm, cl, buf);								\
+      }																																	\
+    } CATCH {																														\
+      exc = JavaThread::get()->getJavaException();											\
+    } END_CATCH;																												\
+		mvm::Thread* mut = mvm::Thread::get();															\
+		JavaThread*  th = JavaThread::j3Thread(mut);												\
+    if (exc) {																													\
+      if (JavaObject::getClass(exc)->isAssignableFrom(									\
+																											vm->upcalls->newException)) {	\
+        mut->clearException();																					\
+				th->getJVM()->invocationTargetException(exc);										\
+      } else {																													\
+        th->throwPendingException();																		\
+      }																																	\
+      return NULL;																											\
     }
     
     Typedef* retType = sign->getReturnType();

Modified: vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMStackWalker.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMStackWalker.inc?rev=120020&r1=120019&r2=120020&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMStackWalker.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMStackWalker.inc Tue Nov 23 07:13:30 2010
@@ -37,9 +37,10 @@
 
   BEGIN_NATIVE_EXCEPTION(0)
 
-  JavaThread* th = JavaThread::get();
+	mvm::Thread* mut = mvm::Thread::get();
+	JavaThread*  th = JavaThread::j3Thread(mut);
   Jnjvm* vm = th->getJVM();
-  uint32 length = th->getFrameContextLength();
+  uint32 length = mut->getFrameContextLength();
   
   mvm::ThreadAllocator allocator;  
   uintptr_t* buffer = (uintptr_t*)allocator.Allocate(length * sizeof(uintptr_t));

Modified: vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThrowable.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThrowable.inc?rev=120020&r1=120019&r2=120020&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThrowable.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThrowable.inc Tue Nov 23 07:13:30 2010
@@ -33,10 +33,12 @@
   llvm_gcroot(vmThrowable, 0);
   llvm_gcroot(result, 0);
 
-  JavaThread* th = JavaThread::get();
+	mvm::Thread* mut = mvm::Thread::get();
+  uint32 length = mut->getFrameContextLength();
+
+  JavaThread* th = JavaThread::j3Thread(mut);
   Jnjvm* vm = th->getJVM();
  
-  uint32 length = th->getFrameContextLength();
 
   if (sizeof(void*) == 4) {
     ClassArray* cl = vm->upcalls->ArrayOfInt;
@@ -47,7 +49,7 @@
   }
   
   // Don't call th->getFrameContext because it is not GC-safe.
-  mvm::StackWalker Walker(th);
+  mvm::StackWalker Walker(mut);
   uint32_t i = 0;
 
   while (void* ip = *Walker) {

Modified: vmkit/branches/multi-vm/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=120020&r1=120019&r2=120020&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JnjvmClassLoader.cpp Tue Nov 23 07:13:30 2010
@@ -693,7 +693,7 @@
       assert(success && "Could not add class in map");
     } CATCH {
       excp = JavaThread::get()->pendingException;
-      JavaThread::get()->clearException();    
+      mvm::Thread::get()->clearException();    
     } END_CATCH;
   }
   if (excp != NULL) {





More information about the vmkit-commits mailing list