[vmkit-commits] [vmkit] r197339 - use my CompilationUnit

Gael Thomas gael.thomas at lip6.fr
Sun Dec 15 03:27:15 PST 2013


Author: gthomas
Date: Sun Dec 15 05:27:14 2013
New Revision: 197339

URL: http://llvm.org/viewvc/llvm-project?rev=197339&view=rev
Log:
use my CompilationUnit

Modified:
    vmkit/branches/mcjit/include/j3/j3classloader.h
    vmkit/branches/mcjit/include/vmkit/compiler.h
    vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc

Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=197339&r1=197338&r2=197339&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Sun Dec 15 05:27:14 2013
@@ -4,10 +4,9 @@
 #include <map>
 #include <vector>
 
-#include "llvm/ExecutionEngine/SectionMemoryManager.h"
-
 #include "vmkit/allocator.h"
 #include "vmkit/names.h"
+#include "vmkit/compiler.h"
 
 #include "j3/j3object.h"
 
@@ -28,7 +27,7 @@ namespace j3 {
 	class J3;
 	class J3Class;
 
-	class J3ClassLoader : public llvm::SectionMemoryManager {
+	class J3ClassLoader : public vmkit::CompilationUnit {
 		struct J3MethodLess : public std::binary_function<wchar_t*,wchar_t*,bool> {
 			bool operator()(const J3Method* lhs, const J3Method* rhs) const;
 		};
@@ -36,18 +35,11 @@ namespace j3 {
 		typedef std::map<J3Method*, J3Method*, J3MethodLess,
 										 vmkit::StdAllocator<std::pair<J3Method*, J3Method*> > > MethodRefMap;
 
-		typedef std::map<const char*, vmkit::Symbol*, vmkit::Util::char_less_t,
-										 vmkit::StdAllocator<std::pair<const char*, vmkit::Symbol*> > > SymbolMap;
-
 		static J3MethodLess  j3MethodLess;
 
-		SymbolMap                            _symbolTable;
-		pthread_mutex_t                      _mutexSymbolTable;
-
 		J3ObjectHandle*                      _javaClassLoader;
 		J3FixedPoint                         _fixedPoint;
 		pthread_mutex_t                      _mutex;       /* a lock */
-		vmkit::BumpAllocator*                _allocator;   /* the local allocator */
 		J3*                                  _vm;          /* my vm */
 		vmkit::NameMap<J3Class*>::map        classes;      /* classes managed by this class loader */
 		vmkit::NameMap<J3Type*>::map         types;        /* shortcut to find types */
@@ -60,23 +52,12 @@ namespace j3 {
 		void                          wrongType(J3Class* from, const vmkit::Name* type);
 		J3Type*                       getTypeInternal(J3Class* from, const vmkit::Name* type, uint32_t start, uint32_t* end);
 
-
-		uint64_t                      getSymbolAddress(const std::string &Name);
-
 	protected:
 		std::vector<void*, vmkit::StdAllocator<void*> > nativeLibraries;
 
 	public:
-		void* operator new(size_t n, vmkit::BumpAllocator* allocator);
 		J3ClassLoader(J3* vm, J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator);
 
-		llvm::ExecutionEngine*        ee() { return _ee; }
-		llvm::ExecutionEngine*        oldee() { return _oldee; }
-
-		void                          addSymbol(const char* id, vmkit::Symbol* symbol);
-
-		static void                   destroy(J3ClassLoader* loader);
-
 		J3FixedPoint*                 fixedPoint() { return &_fixedPoint; }
 
 		J3ObjectHandle*               javaClassLoader() { return _javaClassLoader; }
@@ -84,7 +65,6 @@ namespace j3 {
 		void                          lock() { pthread_mutex_lock(&_mutex); }
 		void                          unlock() { pthread_mutex_unlock(&_mutex); }
 
-		vmkit::BumpAllocator*         allocator() { return _allocator; }
 		J3*                           vm() const { return _vm; };
 
 		J3Method*                     method(uint16_t access, J3Class* cl, 
@@ -116,7 +96,6 @@ namespace j3 {
 
 		const char* cmangled(const char* demangled) { return _cmangled[demangled]; }
 
-		void makeLLVMFunctions_j3();
 		void registerCMangling(const char* mangled, const char* demangled);
 	};
 }

Modified: vmkit/branches/mcjit/include/vmkit/compiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/vmkit/compiler.h?rev=197339&r1=197338&r2=197339&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/vmkit/compiler.h (original)
+++ vmkit/branches/mcjit/include/vmkit/compiler.h Sun Dec 15 05:27:14 2013
@@ -47,7 +47,9 @@ namespace vmkit {
 		llvm::ExecutionEngine*  _ee;
 		llvm::ExecutionEngine*  _oldee;
 
+	protected:
 		void  operator delete(void* self);
+
 	public:
 		void* operator new(size_t n, BumpAllocator* allocator);
 

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=197339&r1=197338&r2=197339&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc Sun Dec 15 05:27:14 2013
@@ -20,83 +20,22 @@ using namespace j3;
 
 J3ClassLoader::J3MethodLess J3ClassLoader::j3MethodLess;
 
-void J3ClassLoader::destroy(J3ClassLoader* loader) {
-	vmkit::BumpAllocator::destroy(loader->allocator());
-}
-
-void* J3ClassLoader::operator new(size_t n, vmkit::BumpAllocator* allocator) {
-	return allocator->allocate(n);
-}
-
 J3ClassLoader::J3ClassLoader(J3* v, J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator) 
-	: _symbolTable(vmkit::Util::char_less, allocator),
+	: CompilationUnit(allocator, "class-loader"),
 		_fixedPoint(allocator),
 		classes(vmkit::Name::less, allocator),
 		types(vmkit::Name::less, allocator),
 		methodTypes(vmkit::Name::less, allocator), 
 		methods(j3MethodLess, allocator),
 		nativeLibraries(allocator) {
-	_allocator = allocator;
-
 	_javaClassLoader = javaClassLoader;
 
 	//	pthread_mutexattr_t attr;
 	//	pthread_mutexattr_init(&attr);
 	//	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
 	pthread_mutex_init(&_mutex, 0);//&attr);
-	pthread_mutex_init(&_mutexSymbolTable, 0);
 
 	_vm = v;
-
-	std::string err;
-	_ee = llvm::EngineBuilder(new llvm::Module("class-loader", vm()->llvmContext()))
-		.setUseMCJIT(1)
-		.setMCJITMemoryManager(this)
-		.setErrorStr(&err)
-		.create();
-
-	if (!ee())
-		vm()->internalError(L"Error while creating execution engine: %s\n", err.c_str());
-
-  ee()->RegisterJITEventListener(vm());
-
-	_oldee = llvm::EngineBuilder(new llvm::Module("old ee", vm()->llvmContext()))
-		.setErrorStr(&err)
-		.create();
-
-	if (!oldee())
-		vm()->internalError(L"Error while creating execution engine: %s\n", err.c_str());
-
-	oldee()->DisableLazyCompilation(0);
-}
-
-void J3ClassLoader::addSymbol(const char* id, vmkit::Symbol* symbol) {
-	pthread_mutex_lock(&_mutexSymbolTable);
-	_symbolTable[id] = symbol;
-	pthread_mutex_unlock(&_mutexSymbolTable);
-}
-
-uint64_t J3ClassLoader::getSymbolAddress(const std::string &Name) {
-	pthread_mutex_lock(&_mutexSymbolTable);
-	const char* id = Name.c_str() + 1;
-
-	std::map<const char*, vmkit::Symbol*>::iterator it = _symbolTable.find(id);
-	vmkit::Symbol* res;
-
-	if(it == _symbolTable.end()) {
-		uint8_t* addr = (uint8_t*)dlsym(RTLD_SELF, id);
-		if(!addr)
-			vm()->internalError(L"unable to resolve native symbol: %s", id);
-		res = new(allocator()) vmkit::NativeSymbol(addr);
-		size_t len = strlen(id);
-		char* buf = (char*)allocator()->allocate(len+1);
-		memcpy(buf, id, len+1);
-		_symbolTable[buf] = res;
-	} else
-		res = it->second;
-
-	pthread_mutex_unlock(&_mutexSymbolTable);
-	return (uint64_t)(uintptr_t)res->getSymbolAddress();
 }
 
 void* J3ClassLoader::lookupNativeFunctionPointer(J3Method* method, const char* symbol) {





More information about the vmkit-commits mailing list