[vmkit-commits] [vmkit] r198213 - Preserve the java thread handle directly in the J3Thread structure
Gael Thomas
gael.thomas at lip6.fr
Mon Dec 30 08:05:59 PST 2013
Author: gthomas
Date: Mon Dec 30 10:05:59 2013
New Revision: 198213
URL: http://llvm.org/viewvc/llvm-project?rev=198213&view=rev
Log:
Preserve the java thread handle directly in the J3Thread structure
Modified:
vmkit/branches/mcjit/include/j3/j3object.h
vmkit/branches/mcjit/include/j3/j3thread.h
vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
vmkit/branches/mcjit/lib/j3/vm/j3class.cc
vmkit/branches/mcjit/lib/j3/vm/j3thread.cc
Modified: vmkit/branches/mcjit/include/j3/j3object.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3object.h?rev=198213&r1=198212&r2=198213&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3object.h (original)
+++ vmkit/branches/mcjit/include/j3/j3object.h Mon Dec 30 10:05:59 2013
@@ -151,6 +151,8 @@ namespace j3 {
J3VirtualTable* vt() { return obj()->vt(); }
uint32_t arrayLength() { return array()->length(); }
+ J3ObjectHandle& operator=(const J3ObjectHandle& h) { _obj = h._obj; return *this; }
+
static J3ObjectHandle* allocate(J3VirtualTable* vt, size_t n);
static J3ObjectHandle* doNewObject(J3Class* cl);
static J3ObjectHandle* doNewArray(J3ArrayClass* cl, uint32_t length);
Modified: vmkit/branches/mcjit/include/j3/j3thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3thread.h?rev=198213&r1=198212&r2=198213&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3thread.h (original)
+++ vmkit/branches/mcjit/include/j3/j3thread.h Mon Dec 30 10:05:59 2013
@@ -24,7 +24,7 @@ namespace j3 {
JNIEnv _jniEnv;
J3LocalReferences _localReferences;
J3ObjectHandle* _pendingException;
- J3ObjectHandle* _javaThread;
+ J3ObjectHandle _javaThread;
virtual void run();
static void doRun();
@@ -34,7 +34,7 @@ namespace j3 {
~J3Thread();
void assocJavaThread(J3ObjectHandle* javaThread);
- J3ObjectHandle* javaThread() { return _javaThread; }
+ J3ObjectHandle* javaThread() { return &_javaThread; }
static J3Thread* nativeThread(J3ObjectHandle* handle);
J3Method* getJavaCaller(uint32_t level=0);
Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc?rev=198213&r1=198212&r2=198213&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc Mon Dec 30 10:05:59 2013
@@ -43,7 +43,7 @@ void J3Lib::bootstrap(J3* vm) {
L"java/lang/Thread",
J3Cst::initName,
L"(Ljava/lang/ThreadGroup;Ljava/lang/String;)V");
- J3ObjectHandle* mainThread = vm->initialClassLoader->globalReferences()->add(J3ObjectHandle::doNewObject(threadInit->cl()));
+ J3ObjectHandle* mainThread = J3ObjectHandle::doNewObject(threadInit->cl());
J3Thread::get()->assocJavaThread(mainThread);
mainThread->setInteger(threadInit->cl()->findVirtualField(vm->names()->get(L"priority"), vm->typeInteger), 5);
Modified: vmkit/branches/mcjit/lib/j3/vm/j3class.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3class.cc?rev=198213&r1=198212&r2=198213&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Mon Dec 30 10:05:59 2013
@@ -158,7 +158,7 @@ J3ObjectType::J3ObjectType(J3ClassLoader
}
J3Method* J3ObjectType::findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
- J3::internalError(L"should not happen");
+ J3::internalError(L"should not happe: %ls::%ls\n", J3ObjectType::name()->cStr(), name->cStr());
}
J3Method* J3ObjectType::findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
Modified: vmkit/branches/mcjit/lib/j3/vm/j3thread.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3thread.cc?rev=198213&r1=198212&r2=198213&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3thread.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3thread.cc Mon Dec 30 10:05:59 2013
@@ -21,6 +21,7 @@ J3Thread::~J3Thread() {
void J3Thread::doRun() {
J3ObjectHandle* handle = get()->javaThread();
+ fprintf(stderr, " *** target is %ls\n", handle->vt()->type()->name()->cStr());
get()->vm()->threadRun->invokeVirtual(handle);
}
@@ -30,11 +31,11 @@ void J3Thread::run() {
}
void J3Thread::start(J3ObjectHandle* handle) {
+ fprintf(stderr, " start %ls\n", handle->vt()->type()->name()->cStr());
vmkit::BumpAllocator* allocator = vmkit::BumpAllocator::create();
J3Thread* thread = new J3Thread(get()->vm());
thread->assocJavaThread(handle);
thread->Thread::start();
- while(1);
}
J3Method* J3Thread::getJavaCaller(uint32_t level) {
@@ -67,8 +68,8 @@ J3Thread* J3Thread::nativeThread(J3Objec
}
void J3Thread::assocJavaThread(J3ObjectHandle* javaThread) {
- _javaThread = javaThread;
- _javaThread->setLong(vm()->threadVMData, (int64_t)(uintptr_t)this);
+ _javaThread = *javaThread;
+ _javaThread.setLong(vm()->threadVMData, (int64_t)(uintptr_t)this);
}
J3ObjectHandle* J3Thread::push(J3ObjectHandle* handle) {
More information about the vmkit-commits
mailing list