[vmkit-commits] [vmkit] r198513 - Remove the vm field from CompilationUnit

Gael Thomas gael.thomas at lip6.fr
Sat Jan 4 14:13:36 PST 2014


Author: gthomas
Date: Sat Jan  4 16:13:36 2014
New Revision: 198513

URL: http://llvm.org/viewvc/llvm-project?rev=198513&view=rev
Log:
Remove the vm field from CompilationUnit

Modified:
    vmkit/branches/mcjit/include/j3/j3classloader.h
    vmkit/branches/mcjit/include/vmkit/compiler.h
    vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
    vmkit/branches/mcjit/lib/j3/vm/j3.cc
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc
    vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3field.cc
    vmkit/branches/mcjit/lib/j3/vm/j3jni.cc
    vmkit/branches/mcjit/lib/j3/vm/j3method.cc
    vmkit/branches/mcjit/lib/j3/vm/j3object.cc
    vmkit/branches/mcjit/lib/j3/vm/j3signature.cc
    vmkit/branches/mcjit/lib/vmkit/compiler.cc

Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Sat Jan  4 16:13:36 2014
@@ -53,7 +53,7 @@ namespace j3 {
 		std::vector<void*, vmkit::StdAllocator<void*> > nativeLibraries;
 
 	public:
-		J3ClassLoader(J3* vm, J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator);
+		J3ClassLoader(J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator);
 
 		J3Type*                       getTypeInternal(J3ObjectType* from, const vmkit::Name* type, uint32_t start, uint32_t* end, bool unify);
 		J3Type*                       getType(J3ObjectType* from, const vmkit::Name* type);       /* find a type */
@@ -66,8 +66,6 @@ namespace j3 {
 		
 		J3ObjectHandle*               javaClassLoader(bool doPush=1);
 
-		J3*                           vm() const { return (J3*)vmkit::CompilationUnit::vm(); };
-
 		J3Class*                      defineClass(const vmkit::Name* name, J3ClassBytes* bytes);
 		J3Class*                      findLoadedClass(const vmkit::Name* name);
 		virtual J3Class*              loadClass(const vmkit::Name* name);
@@ -83,7 +81,7 @@ namespace j3 {
 		J3ZipArchive*                                     archive;
 		std::map<const char*, const char*, char_ptr_less> _cmangled;
 	public:
-		J3InitialClassLoader(J3* vm, const char* rtjar, vmkit::BumpAllocator* allocator);
+		J3InitialClassLoader(const char* rtjar, vmkit::BumpAllocator* allocator);
 
 		J3Class*    loadClass(const vmkit::Name* name);
 		const char* cmangled(const char* demangled) { return _cmangled[demangled]; }

Modified: vmkit/branches/mcjit/include/vmkit/compiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/vmkit/compiler.h?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/vmkit/compiler.h (original)
+++ vmkit/branches/mcjit/include/vmkit/compiler.h Sat Jan  4 16:13:36 2014
@@ -37,7 +37,6 @@ namespace vmkit {
 	class CompilationUnit  : public llvm::SectionMemoryManager {
 		typedef std::map<const char*, Symbol*, Util::char_less_t, StdAllocator<std::pair<const char*, Symbol*> > > SymbolMap;
 
-		VMKit*                  _vmkit;
 		BumpAllocator*          _allocator;
 		SymbolMap               _symbolTable;
 		pthread_mutex_t         _mutexSymbolTable;
@@ -50,13 +49,11 @@ namespace vmkit {
 	public:
 		void* operator new(size_t n, BumpAllocator* allocator);
 
-		CompilationUnit(BumpAllocator* allocator, VMKit* vmkit, const char* id);
+		CompilationUnit(BumpAllocator* allocator, const char* id);
 		~CompilationUnit();
 
 		static void destroy(CompilationUnit* unit);
 
-		VMKit*                  vm() const { return _vmkit; }
-
 		void                    addSymbol(const char* id, vmkit::Symbol* symbol);
 		Symbol*                 getSymbol(const char* id);
 		uint64_t                getSymbolAddress(const std::string &Name);

Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc Sat Jan  4 16:13:36 2014
@@ -572,6 +572,7 @@ jobjectArray JNICALL JVM_GetClassDeclare
 
 	enterJVM(); 
 	J3ObjectType* type = J3ObjectType::nativeClass(ofClass);
+	J3* vm = J3Thread::get()->vm();
 
 	if(type->isClass()) {
 		J3Class* cl = type->asClass();
@@ -580,7 +581,7 @@ jobjectArray JNICALL JVM_GetClassDeclare
 			cl->nbPublicFields() + cl->staticLayout()->nbPublicFields() :
 			cl->nbFields() + cl->staticLayout()->nbFields();
 
-		res = J3ObjectHandle::doNewArray(type->loader()->vm()->fieldClass->getArray(), total);
+		res = J3ObjectHandle::doNewArray(vm->fieldClass->getArray(), total);
 
 		size_t cur = 0;
 		for(uint32_t i=0; i<cl->nbFields(); i++)
@@ -590,7 +591,7 @@ jobjectArray JNICALL JVM_GetClassDeclare
 			if(!publicOnly || J3Cst::isPublic(cl->staticLayout()->fields()[i].access()))
 				res->setObjectAt(cur++, cl->staticLayout()->fields()[i].javaField());
 	} else
-		res = J3ObjectHandle::doNewArray(type->loader()->vm()->fieldClass->getArray(), 0);
+		res = J3ObjectHandle::doNewArray(vm->fieldClass->getArray(), 0);
 
 	leaveJVM();
 

Modified: vmkit/branches/mcjit/lib/j3/vm/j3.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Sat Jan  4 16:13:36 2014
@@ -87,7 +87,7 @@ void J3::run() {
 	vmkit::BumpAllocator* loaderAllocator = vmkit::BumpAllocator::create();
 	initialClassLoader = 
 		new(loaderAllocator) 
-		J3InitialClassLoader(this, options()->rtJar, loaderAllocator);
+		J3InitialClassLoader(options()->rtJar, loaderAllocator);
 
 	vmkit::BumpAllocator* a = initialClassLoader->allocator();
 

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=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Sat Jan  4 16:13:36 2014
@@ -53,11 +53,12 @@ J3ObjectHandle* J3Type::javaClass(bool d
 	if(!_javaClass) {
 		lock();
 		if(!_javaClass) {
+			J3* vm = J3Thread::get()->vm();
 			J3ObjectHandle* prev = J3Thread::get()->tell();
-			_javaClass = loader()->globalReferences()->add(J3ObjectHandle::doNewObject(loader()->vm()->classClass));
+			_javaClass = loader()->globalReferences()->add(J3ObjectHandle::doNewObject(vm->classClass));
 			J3Thread::get()->restore(prev);
-			_javaClass->setLong(loader()->vm()->classClassVMData, (int64_t)(uintptr_t)this);
-			loader()->vm()->classClassInit->invokeSpecial(_javaClass);
+			_javaClass->setLong(vm->classClassVMData, (int64_t)(uintptr_t)this);
+			vm->classClassInit->invokeSpecial(_javaClass);
 		}
 		unlock();
 	}
@@ -165,7 +166,7 @@ J3ObjectType::J3ObjectType(J3ClassLoader
 }
 
 llvm::Type* J3ObjectType::llvmType() {
-	return loader()->vm()->typeJ3ObjectPtr;
+	return J3Thread::get()->vm()->typeJ3ObjectPtr;
 }
 
 J3Method* J3ObjectType::findMethod(uint32_t access, const vmkit::Name* name, J3Signature* signature, bool error) {
@@ -336,7 +337,7 @@ J3ObjectHandle* J3Class::extractAttribut
 	if(attr)
 		J3::internalError("extract attribute");
 	else
-		return J3ObjectHandle::doNewArray(loader()->vm()->typeByte->getArray(), 0);
+		return J3ObjectHandle::doNewArray(J3Thread::get()->vm()->typeByte->getArray(), 0);
 }
 
 J3Method* J3Class::findMethod(uint32_t access, const vmkit::Name* name, J3Signature* signature, bool error) {
@@ -402,7 +403,8 @@ void J3Class::doInitialise() {
 	resolve();
 	lock();
 	if(status < INITED) {
-		if(loader()->vm()->options()->debugIniting)
+		J3* vm = J3Thread::get()->vm();
+		if(vm->options()->debugIniting)
 			fprintf(stderr, "Initing: %s\n", name()->cStr());
 		status = INITED;
 
@@ -419,7 +421,7 @@ void J3Class::doInitialise() {
 
 		for(size_t i=0; i<staticLayout()->nbFields(); i++) {
 			J3Field* cur = staticLayout()->fields() + i;
-			J3Attribute* attr = cur->attributes()->lookup(loader()->vm()->constantValueAttribute);
+			J3Attribute* attr = cur->attributes()->lookup(vm->constantValueAttribute);
 
 			if(attr) {
 				J3Reader reader(bytes());
@@ -443,7 +445,7 @@ void J3Class::doInitialise() {
 			}
 		}
 
-		J3Method* clinit = staticLayout()->localFindMethod(loader()->vm()->clinitName, loader()->vm()->clinitSign);
+		J3Method* clinit = staticLayout()->localFindMethod(vm->clinitName, vm->clinitSign);
 			
 		if(clinit)
 			clinit->invokeStatic();
@@ -454,7 +456,7 @@ void J3Class::doInitialise() {
 void J3Class::doResolve(J3Field* hiddenFields, size_t nbHiddenFields) {
 	lock();
 	if(status < RESOLVED) {
-		if(loader()->vm()->options()->debugResolve)
+		if(J3Thread::get()->vm()->options()->debugResolve)
 			fprintf(stderr, "Resolving: %s\n", name()->cStr());
 
 		status = RESOLVED;
@@ -632,7 +634,7 @@ void J3Class::readClassBytes(J3Field* hi
 			layout = staticLayout();
 		else {
 			layout = this;
-			if(methodsTmp[i]->name() == loader()->vm()->initName) {
+			if(methodsTmp[i]->name() == J3Thread::get()->vm()->initName) {
 				_nbConstructors++;
 				if(J3Cst::isPublic(methodsTmp[i]->access()))
 					_nbPublicConstructors++;
@@ -692,7 +694,7 @@ J3ObjectHandle* J3Class::stringAt(uint16
 	check(idx, J3Cst::CONSTANT_String);
 	J3ObjectHandle* res = (J3ObjectHandle*)ctpResolved[idx];
 	if(!res) {
-		ctpResolved[idx] = res = loader()->vm()->nameToString(nameAt(ctpValues[idx]), 0);
+		ctpResolved[idx] = res = J3Thread::get()->vm()->nameToString(nameAt(ctpValues[idx]), 0);
 	}
 	return (J3ObjectHandle*)res;
 }
@@ -813,7 +815,7 @@ const vmkit::Name*  J3Class::nameAt(uint
 
 	uint16_t len = reader.readU2(), i=0, n=0;
 
-	res = loader()->vm()->names()->get((const char*)reader.pointer(), 0, len);
+	res = J3Thread::get()->vm()->names()->get((const char*)reader.pointer(), 0, len);
 
 	ctpResolved[idx] = (void*)res;
 
@@ -865,7 +867,7 @@ J3ArrayClass::J3ArrayClass(J3ClassLoader
 			buf[pos++] = J3Cst::ID_End;
 		buf[pos] = 0;
 
-		_name = loader->vm()->names()->get(buf);
+		_name = J3Thread::get()->vm()->names()->get(buf);
 	}
 }
 
@@ -885,7 +887,7 @@ uint16_t J3ArrayClass::modifiers() {
 }
 
 J3Class* J3ArrayClass::super() {
-	return loader()->vm()->objectClass;
+	return J3Thread::get()->vm()->objectClass;
 }
 
 J3Method* J3ArrayClass::findMethod(uint32_t access, const vmkit::Name* name, J3Signature* signature, bool error) {
@@ -922,7 +924,7 @@ void J3ArrayClass::doNativeName() {
  *  ------------ J3Primitive ------------
  */
 J3Primitive::J3Primitive(J3ClassLoader* loader, char id, llvm::Type* type, uint32_t logSize) : 
-	J3Type(loader, loader->vm()->names()->get(id)) {
+	J3Type(loader, J3Thread::get()->vm()->names()->get(id)) {
 	_llvmType = type;
 	_nativeName = (char*)loader->allocator()->allocate(2);
 	_nativeName[0] = id;

Modified: vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc Sat Jan  4 16:13:36 2014
@@ -21,8 +21,8 @@ using namespace j3;
 
 J3ClassLoader::J3InterfaceMethodLess J3ClassLoader::j3InterfaceMethodLess;
 
-J3ClassLoader::J3ClassLoader(J3* v, J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator) 
-	: CompilationUnit(allocator, v, "class-loader"),
+J3ClassLoader::J3ClassLoader(J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator) 
+	: CompilationUnit(allocator, "class-loader"),
 		_globalReferences(allocator),
 		classes(vmkit::Name::less, allocator),
 		types(vmkit::Name::less, allocator),
@@ -95,6 +95,7 @@ void J3ClassLoader::wrongType(J3ObjectTy
 }
 
 J3Type* J3ClassLoader::getTypeInternal(J3ObjectType* from, const vmkit::Name* typeName, uint32_t start, uint32_t* pend, bool unify) {
+	J3*            vm   = J3Thread::get()->vm();
 	J3Type*        res  = 0;
 	const char*    type = typeName->cStr();
 	uint32_t       len  = typeName->length();
@@ -107,15 +108,15 @@ J3Type* J3ClassLoader::getTypeInternal(J
 
 		switch(type[pos]) {
 			case J3Cst::ID_Array:     prof++; pos++; break;
-			case J3Cst::ID_Void:      res = vm()->typeVoid; pos++; break;
-			case J3Cst::ID_Byte:      res = vm()->typeByte; pos++; break;
-			case J3Cst::ID_Char:      res = vm()->typeChar; pos++; break;
-			case J3Cst::ID_Double:    res = vm()->typeDouble; pos++; break;
-			case J3Cst::ID_Float:     res = vm()->typeFloat; pos++; break;
-			case J3Cst::ID_Integer:   res = vm()->typeInteger; pos++; break;
-			case J3Cst::ID_Long:      res = vm()->typeLong; pos++; break;
-			case J3Cst::ID_Short:     res = vm()->typeShort; pos++; break;
-			case J3Cst::ID_Boolean:   res = vm()->typeBoolean; pos++; break;
+			case J3Cst::ID_Void:      res = vm->typeVoid; pos++; break;
+			case J3Cst::ID_Byte:      res = vm->typeByte; pos++; break;
+			case J3Cst::ID_Char:      res = vm->typeChar; pos++; break;
+			case J3Cst::ID_Double:    res = vm->typeDouble; pos++; break;
+			case J3Cst::ID_Float:     res = vm->typeFloat; pos++; break;
+			case J3Cst::ID_Integer:   res = vm->typeInteger; pos++; break;
+			case J3Cst::ID_Long:      res = vm->typeLong; pos++; break;
+			case J3Cst::ID_Short:     res = vm->typeShort; pos++; break;
+			case J3Cst::ID_Boolean:   res = vm->typeBoolean; pos++; break;
 			case J3Cst::ID_Classname: 
 				if(unify) {
 					uint32_t start = ++pos;
@@ -125,7 +126,7 @@ J3Type* J3ClassLoader::getTypeInternal(J
 						wrongType(from, typeName);
 
 					pos++;
-					res = vm()->objectClass;
+					res = vm->objectClass;
 				} else {
 					uint32_t start = ++pos;
 					char buf[len + 1 - start], c;
@@ -140,7 +141,7 @@ J3Type* J3ClassLoader::getTypeInternal(J
 					
 					buf[pos++ - start] = 0;
 
-					res = loadClass(vm()->names()->get(buf));
+					res = loadClass(vm->names()->get(buf));
 				}
 				break;
 			case J3Cst::ID_Left:
@@ -154,7 +155,7 @@ J3Type* J3ClassLoader::getTypeInternal(J
 		
 	if(prof) {
 		if(unify)
-			res = vm()->objectClass;
+			res = vm->objectClass;
 		else
 			res = res->getArray(prof, start ? 0 : typeName);
 	}
@@ -203,9 +204,9 @@ bool J3ClassLoader::J3InterfaceMethodLes
 				&& (lhs->signature() < rhs->signature()));
 }
 
-J3InitialClassLoader::J3InitialClassLoader(J3* v, const char* rtjar, vmkit::BumpAllocator* _alloc) 
-	: J3ClassLoader(v, 0, _alloc) {
-	const char* archives = vm()->options()->rtJar;
+J3InitialClassLoader::J3InitialClassLoader(const char* rtjar, vmkit::BumpAllocator* _alloc) 
+	: J3ClassLoader(0, _alloc) {
+	const char* archives = J3Thread::get()->vm()->options()->rtJar;
 	J3ClassBytes* bytes = J3Reader::openFile(allocator(), archives);
 
 	//makeLLVMFunctions_j3();

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Sat Jan  4 16:13:36 2014
@@ -37,7 +37,7 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 	cl = method->cl()->asClass();
 	signature = method->signature();
 	loader = cl->loader();
-	vm = loader->vm();
+	vm = J3Thread::get()->vm();
 
 #if 0
 	if(m->cl()->name() == vm->names()->get("java/util/concurrent/atomic/AtomicInteger"))
@@ -134,13 +134,13 @@ void J3CodeGen::operator delete(void* pt
 }
 
 void J3CodeGen::translate(J3Method* method, bool withMethod, bool withCaller) {
-	method->cl()->loader()->vm()->lockCompiler();
+	J3Thread::get()->vm()->lockCompiler();
 	
 	vmkit::BumpAllocator* allocator = vmkit::BumpAllocator::create();
 	delete new(allocator) J3CodeGen(allocator, method, withMethod, withCaller);
 	vmkit::BumpAllocator::destroy(allocator);
 
-	method->cl()->loader()->vm()->unlockCompiler();
+	J3Thread::get()->vm()->unlockCompiler();
 }
 
 uint32_t J3CodeGen::wideReadU1() {

Modified: vmkit/branches/mcjit/lib/j3/vm/j3field.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3field.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3field.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3field.cc Sat Jan  4 16:13:36 2014
@@ -14,10 +14,9 @@ J3ObjectHandle* J3Field::javaField() {
 
 		if(!_javaField) {
 			J3ObjectHandle* prev = J3Thread::get()->tell();
-			_javaField = layout()->loader()->globalReferences()->add(J3ObjectHandle::doNewObject(layout()->loader()->vm()->fieldClass));
-
-			J3* vm = layout()->loader()->vm();
+			J3* vm = J3Thread::get()->vm();
 
+			_javaField = layout()->loader()->globalReferences()->add(J3ObjectHandle::doNewObject(vm->fieldClass));
 			vm->fieldClassInit->invokeSpecial(_javaField,                          /* this */
 																				layout()->javaClass(0),              /* declaring class */
 																				vm->nameToString(name(), 0),         /* name */

Modified: vmkit/branches/mcjit/lib/j3/vm/j3jni.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3jni.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3jni.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3jni.cc Sat Jan  4 16:13:36 2014
@@ -23,8 +23,9 @@ jclass JNICALL FindClass(JNIEnv* env, co
 
 	enterJVM();
 	J3Method* m = J3Thread::get()->getJavaCaller();
-	J3ClassLoader* loader = m ? m->cl()->loader() : J3Thread::get()->vm()->initialClassLoader;
-	J3Class* cl = loader->loadClass(loader->vm()->names()->get(name));
+	J3* vm = J3Thread::get()->vm();
+	J3ClassLoader* loader = m ? m->cl()->loader() : vm->initialClassLoader;
+	J3Class* cl = loader->loadClass(vm->names()->get(name));
 	cl->initialise();
 	res = cl->javaClass();
 	leaveJVM(); 
@@ -145,7 +146,7 @@ jmethodID JNICALL GetMethodID(JNIEnv* en
 	enterJVM(); 
 	J3ObjectType* cl = J3ObjectType::nativeClass(clazz);
 	cl->initialise();
-	vmkit::Names* n = cl->loader()->vm()->names();
+	vmkit::Names* n = J3Thread::get()->vm()->names();
 	res = cl->findMethod(0, n->get(name), cl->loader()->getSignature(cl, n->get(sig)), 0);
 	leaveJVM(); 
 
@@ -159,7 +160,7 @@ jmethodID JNICALL GetStaticMethodID(JNIE
 	
 	J3ObjectType* cl = J3ObjectType::nativeClass(clazz);
 	cl->initialise();
-	vmkit::Names* n = cl->loader()->vm()->names();
+	vmkit::Names* n = J3Thread::get()->vm()->names();
 	res = cl->findMethod(J3Cst::ACC_STATIC, n->get(name), cl->loader()->getSignature(cl, n->get(sig)), 0);
 
 	leaveJVM(); 
@@ -499,7 +500,7 @@ void JNICALL GetDoubleArrayRegion(JNIEnv
 jint JNICALL RegisterNatives(JNIEnv* env, jclass clazz, const JNINativeMethod* methods, jint nMethods) {
 	enterJVM();
 	J3Class* cl = J3Class::nativeClass(clazz)->asClass();
-	J3*      j3 = cl->loader()->vm();
+	J3*      j3 = J3Thread::get()->vm();
 
  	for(jint i=0; i<nMethods; i++)
  		cl->registerNative(j3->names()->get(methods[i].name), j3->names()->get(methods[i].signature), methods[i].fnPtr);

Modified: vmkit/branches/mcjit/lib/j3/vm/j3method.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3method.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Sat Jan  4 16:13:36 2014
@@ -96,9 +96,10 @@ void J3Method::postInitialise(uint32_t a
 }
 
 J3Method* J3Method::resolve(J3ObjectHandle* obj) {
-	if(cl()->loader()->vm()->options()->debugLinking)
+	J3* vm = J3Thread::get()->vm();
+	if(vm->options()->debugLinking)
 		fprintf(stderr, "virtual linking %s::%s\n", cl()->name()->cStr(), name()->cStr());
-	vmkit::Names* n = cl()->loader()->vm()->names();
+	vmkit::Names* n = vm->names();
 	return obj->vt()->type()->asObjectType()->findMethod(0, name(), signature());
 }
 
@@ -121,7 +122,7 @@ J3Value J3Method::internalInvoke(J3Objec
 
 	llvm::FunctionType* fType = signature()->functionType(J3Cst::ACC_STATIC);      /* static signature for va */
 	J3Value* args = (J3Value*)alloca(sizeof(J3Value)*(fType->getNumParams() + 1));
-	J3* vm = cl()->loader()->vm();
+	J3* vm = J3Thread::get()->vm();
 	uint32_t i = 0;
 
 	if(handle)
@@ -265,7 +266,7 @@ J3ObjectHandle* J3Method::javaMethod() {
 		cl()->lock();
 		if(!_javaMethod) {
 			J3ObjectHandle* prev = J3Thread::get()->tell();
-			J3* vm = cl()->loader()->vm();
+			J3* vm = J3Thread::get()->vm();
 
 			uint32_t nbIns = signature()->nbIns();
 
@@ -285,7 +286,7 @@ J3ObjectHandle* J3Method::javaMethod() {
 			J3ObjectHandle* annotations = cl()->asClass()->extractAttribute(attributes()->lookup(vm->annotationsAttribute));
 			J3ObjectHandle* paramAnnotations = cl()->asClass()->extractAttribute(attributes()->lookup(vm->paramAnnotationsAttribute));
 
-			if(name() == cl()->loader()->vm()->initName) {
+			if(name() == vm->initName) {
 				_javaMethod = cl()->loader()->globalReferences()->add(J3ObjectHandle::doNewObject(vm->constructorClass));
 
 				vm->constructorClassInit->invokeSpecial(_javaMethod,

Modified: vmkit/branches/mcjit/lib/j3/vm/j3object.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3object.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3object.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3object.cc Sat Jan  4 16:13:36 2014
@@ -78,7 +78,7 @@ J3VirtualTable* J3VirtualTable::create(J
 			memcpy(res->_virtualMethods, super->vt()->_virtualMethods, sizeof(void*)*super->vt()->nbVirtualMethods());
 
 		if(!J3Cst::isAbstract(cl->access())) {
-			void* interfaceTrampoline = cl->loader()->vm()->interfaceTrampoline;
+			void* interfaceTrampoline = J3Thread::get()->vm()->interfaceTrampoline;
 			for(uint32_t i=0; i<nbInterfaceMethodTable; i++)
 				res->_interfaceMethodTable[i] = interfaceTrampoline;
 		}
@@ -92,7 +92,8 @@ J3VirtualTable* J3VirtualTable::create(J
 }
 
 J3VirtualTable* J3VirtualTable::create(J3ArrayClass* cl) {
-	J3Class* objClass           = cl->loader()->vm()->objectClass;
+	J3* vm                      = J3Thread::get()->vm();
+	J3Class* objClass           = vm->objectClass;
 	J3Type* super               = cl->component();
 	J3Type* base                = super;
 	uint32_t dim                = 1;
@@ -114,18 +115,18 @@ J3VirtualTable* J3VirtualTable::create(J
 
 	if(base->isPrimitive()) {
 		super = objClass->getArray(dim-1);
-		nbSecondaries = cl->loader()->vm()->nbArrayInterfaces;
+		nbSecondaries = vm->nbArrayInterfaces;
 		secondaries = (J3Type**)cl->loader()->allocator()->allocate(nbSecondaries*sizeof(J3Type*));
 		for(uint32_t i=0; i<nbSecondaries; i++) {
-			secondaries[i] = cl->loader()->vm()->arrayInterfaces[i];
+			secondaries[i] = vm->arrayInterfaces[i];
 			if(dim > 1)
 				secondaries[i] = secondaries[i]->getArray(dim-1);
 		}
 	} else if(base == objClass) {
-		nbSecondaries = cl->loader()->vm()->nbArrayInterfaces;
+		nbSecondaries = vm->nbArrayInterfaces;
 		secondaries = (J3Type**)alloca(nbSecondaries*sizeof(J3Type*));
 		for(uint32_t i=0; i<nbSecondaries; i++) {
-			secondaries[i] = cl->loader()->vm()->arrayInterfaces[i];
+			secondaries[i] = vm->arrayInterfaces[i];
 			if(dim > 1)
 				secondaries[i] = secondaries[i]->getArray(dim - 1);
 		}

Modified: vmkit/branches/mcjit/lib/j3/vm/j3signature.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3signature.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3signature.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3signature.cc Sat Jan  4 16:13:36 2014
@@ -3,6 +3,7 @@
 #include "j3/j3codegen.h"
 #include "j3/j3classloader.h"
 #include "j3/j3class.h"
+#include "j3/j3thread.h"
 #include "j3/j3.h"
 
 #include "llvm/IR/Function.h"
@@ -42,9 +43,10 @@ void J3Signature::checkInOut() {
 }
 
 J3LLVMSignature* J3Signature::buildLLVMSignature(llvm::FunctionType* fType) {
-	J3LLVMSignature* res = loader()->vm()->llvmSignatures[fType];
+	J3* vm = J3Thread::get()->vm();
+	J3LLVMSignature* res = vm->llvmSignatures[fType];
 	if(!res) {
-		loader()->vm()->llvmSignatures[fType] = res = new(loader()->vm()->allocator()) J3LLVMSignature();
+		vm->llvmSignatures[fType] = res = new(vm->allocator()) J3LLVMSignature();
 		res->functionType = fType;
 	}
 	return res;
@@ -56,7 +58,7 @@ void J3Signature::checkFunctionType() {
 		std::vector<llvm::Type*> sins;
 		uint32_t                 cur = 1;
 
-		vins.push_back(loader()->vm()->objectClass->llvmType());
+		vins.push_back(J3Thread::get()->vm()->objectClass->llvmType());
 
 		if(name()->cStr()[0] != J3Cst::ID_Left)
 			loader()->wrongType(0, name());

Modified: vmkit/branches/mcjit/lib/vmkit/compiler.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/vmkit/compiler.cc?rev=198513&r1=198512&r2=198513&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/vmkit/compiler.cc (original)
+++ vmkit/branches/mcjit/lib/vmkit/compiler.cc Sat Jan  4 16:13:36 2014
@@ -33,13 +33,11 @@ void* CompilationUnit::operator new(size
 void  CompilationUnit::operator delete(void* self) {
 }
 
-CompilationUnit::CompilationUnit(BumpAllocator* allocator, VMKit* vmkit, const char* id) :
+CompilationUnit::CompilationUnit(BumpAllocator* allocator, const char* id) :
 	_symbolTable(vmkit::Util::char_less, allocator) {
 	_allocator = allocator;
 	pthread_mutex_init(&_mutexSymbolTable, 0);
 
-	_vmkit = vmkit;
-
 	std::string err;
 
 	llvm::TargetOptions opt;
@@ -148,13 +146,14 @@ void CompilationUnit::compileModule(llvm
 	ee()->finalizeObject();
 
 	vmkit::Safepoint* sf = Safepoint::get(this, module);
+	VMKit* vm = Thread::get()->vm();
 
 	if(!sf)
-		vm()->internalError("unable to find safepoints");
+		vm->internalError("unable to find safepoints");
 		
 	while(sf->addr()) {
 		sf->setUnit(this);
-		vm()->addSafepoint(sf);
+		vm->addSafepoint(sf);
 
 		//vm()->getSafepoint(sf->addr())->dump();
 		sf = sf->getNext();





More information about the vmkit-commits mailing list