[vmkit-commits] [vmkit] r198090 - simplify thread::start
Gael Thomas
gael.thomas at lip6.fr
Fri Dec 27 16:33:17 PST 2013
Author: gthomas
Date: Fri Dec 27 18:33:17 2013
New Revision: 198090
URL: http://llvm.org/viewvc/llvm-project?rev=198090&view=rev
Log:
simplify thread::start
Modified:
vmkit/branches/mcjit/include/j3/j3thread.h
vmkit/branches/mcjit/include/vmkit/thread.h
vmkit/branches/mcjit/lib/j3/vm/j3thread.cc
vmkit/branches/mcjit/lib/vmkit/thread.cc
Modified: vmkit/branches/mcjit/include/j3/j3thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3thread.h?rev=198090&r1=198089&r2=198090&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3thread.h (original)
+++ vmkit/branches/mcjit/include/j3/j3thread.h Fri Dec 27 18:33:17 2013
@@ -19,12 +19,13 @@ namespace j3 {
private:
uint32_t _interfaceMethodIndex;
- vmkit::BumpAllocator* allocator;
+ vmkit::BumpAllocator* _allocator;
JNIEnv _jniEnv;
J3LocalReferences _localReferences;
J3ObjectHandle* _pendingException;
J3ObjectHandle* _javaThread;
+ virtual void run();
static void doRun();
J3Thread(J3* vm, vmkit::BumpAllocator* allocator);
Modified: vmkit/branches/mcjit/include/vmkit/thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/vmkit/thread.h?rev=198090&r1=198089&r2=198090&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/vmkit/thread.h (original)
+++ vmkit/branches/mcjit/include/vmkit/thread.h Fri Dec 27 18:33:17 2013
@@ -10,11 +10,8 @@ namespace vmkit {
class VMKit;
class Thread : protected PermanentObject {
- typedef void (*entryPoint_t)();
-
BumpAllocator* _allocator;
VMKit* _vm;
- entryPoint_t _entryPoint;
static void* doRun(void* thread);
@@ -24,6 +21,8 @@ namespace vmkit {
public:
static void destroy(Thread* thread);
+ virtual void run() {}
+
VMKit* vm() { return _vm; }
BumpAllocator* allocator() { return _allocator; }
@@ -32,7 +31,7 @@ namespace vmkit {
static Thread* get() { return _thread; }
static void set(Thread* thread) { _thread = thread; }
- static void start(entryPoint_t entryPoint, Thread* thread);
+ void start();
};
class StackWalker {
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=198090&r1=198089&r2=198090&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3thread.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3thread.cc Fri Dec 27 18:33:17 2013
@@ -10,7 +10,8 @@ using namespace j3;
J3Thread::J3Thread(J3* vm, vmkit::BumpAllocator* allocator) :
Thread(vm, allocator),
- _localReferences(allocator) {
+ _allocator(allocator),
+ _localReferences(_allocator) {
_jniEnv.functions = &jniEnvTable;
}
@@ -24,10 +25,15 @@ void J3Thread::doRun() {
get()->vm()->threadRun->invokeVirtual(handle);
}
+void J3Thread::run() {
+ J3ObjectHandle* handle = javaThread();
+ vm()->threadRun->invokeVirtual(handle);
+}
+
void J3Thread::start(J3ObjectHandle* handle) {
J3Thread* thread = create(J3Thread::get()->vm());
thread->assocJavaThread(handle);
- Thread::start(doRun, thread);
+ thread->Thread::start();
while(1);
}
Modified: vmkit/branches/mcjit/lib/vmkit/thread.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/vmkit/thread.cc?rev=198090&r1=198089&r2=198090&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/vmkit/thread.cc (original)
+++ vmkit/branches/mcjit/lib/vmkit/thread.cc Fri Dec 27 18:33:17 2013
@@ -18,14 +18,13 @@ void Thread::destroy(Thread* thread) {
void* Thread::doRun(void* _thread) {
Thread* thread = (Thread*)_thread;
set(thread);
- thread->_entryPoint();
+ thread->run();
return 0;
}
-void Thread::start(entryPoint_t entryPoint, Thread* thread) {
- thread->_entryPoint = entryPoint;
+void Thread::start() {
pthread_t tid;
- pthread_create(&tid, 0, doRun, thread);
+ pthread_create(&tid, 0, doRun, this);
}
StackWalker::StackWalker(uint32_t initialPop) {
More information about the vmkit-commits
mailing list