[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