[vmkit-commits] [vmkit] r199600 - Execute the HelloWorld class, yipa!

Gael Thomas gael.thomas at lip6.fr
Sun Jan 19 05:58:22 PST 2014


Author: gthomas
Date: Sun Jan 19 07:58:22 2014
New Revision: 199600

URL: http://llvm.org/viewvc/llvm-project?rev=199600&view=rev
Log:
Execute the HelloWorld class, yipa!

execute addSymbol in each compilationUnit because a class loader can reference symbols from another class loader.


Modified:
    vmkit/branches/mcjit/include/j3/j3method.h
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3method.cc

Modified: vmkit/branches/mcjit/include/j3/j3method.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3method.h?rev=199600&r1=199599&r2=199600&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3method.h (original)
+++ vmkit/branches/mcjit/include/j3/j3method.h Sun Jan 19 07:58:22 2014
@@ -60,6 +60,9 @@ namespace j3 {
 	public:
 		J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, J3Signature* signature);
 
+
+		J3MethodCode*       selfCode() { return &_selfCode; }
+
 		uint32_t            slot() { return _slot; }
 
 		static J3Method*    nativeMethod(J3ObjectHandle* handle);

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=199600&r1=199599&r2=199600&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Sun Jan 19 07:58:22 2014
@@ -887,8 +887,6 @@ void J3Class::doNativeName() {
 	_nativeName[_nativeNameLength-2] = '_';
 	_nativeName[_nativeNameLength-1] = '2';
 	_nativeName[_nativeNameLength]   = 0;
-
-	loader()->addSymbol(_nativeName, this);
 }
 
 /*  
@@ -958,13 +956,15 @@ void J3ArrayClass::doInitialise() {
 
 void J3ArrayClass::doNativeName() {
 	uint32_t len = component()->nativeNameLength();
+
 	_nativeNameLength = len + 2;
 	_nativeName = (char*)loader()->allocator()->allocate(_nativeNameLength + 1);
+
 	_nativeName[0] = '_';
 	_nativeName[1] = '3';
+
 	memcpy(_nativeName+2, component()->nativeName(), len);
 	_nativeName[_nativeNameLength] = 0;
-	loader()->addSymbol(_nativeName, this);
 }
 
 /*  

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=199600&r1=199599&r2=199600&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Sun Jan 19 07:58:22 2014
@@ -204,17 +204,21 @@ llvm::Value* J3CodeGen::unflatten(llvm::
 
 llvm::Function* J3CodeGen::buildFunction(J3Method* method, bool isStub) {
 	const char* id = (isStub && !method->fnPtr()) ? method->llvmStubName(cl) : method->llvmFunctionName(cl);
+	loader->addSymbol(id, method->selfCode());
 	return (llvm::Function*)module->getOrInsertFunction(id, method->signature()->functionType(method->access()));
 }
 
 llvm::Value* J3CodeGen::typeDescriptor(J3ObjectType* objectType, llvm::Type* type) {
-	llvm::Value* v = module->getOrInsertGlobal(objectType->nativeName(), 
-																							 vm->typeJ3ObjectType);
+	const char* id = objectType->nativeName();
+	loader->addSymbol(id, objectType);
+	llvm::Value* v = module->getOrInsertGlobal(id, vm->typeJ3ObjectType);
 	return type == vm->typeJ3ObjectTypePtr ? v : builder->CreateBitCast(v, type);
 }
 
 llvm::Value* J3CodeGen::methodDescriptor(J3Method* method) {
-	return module->getOrInsertGlobal(method->llvmDescriptorName(), vm->typeJ3Method);
+	const char* id = method->llvmDescriptorName();
+	loader->addSymbol(id, method);
+	return module->getOrInsertGlobal(id, vm->typeJ3Method);
 }
 
 llvm::Value* J3CodeGen::spToCurrentThread(llvm::Value* sp) {

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=199600&r1=199599&r2=199600&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Sun Jan 19 07:58:22 2014
@@ -213,10 +213,6 @@ void J3Method::buildLLVMNames(J3Class* f
 	memcpy(_llvmAllNames, prefix, plen);
 	memcpy(_llvmAllNames+plen, mangler.cStr(), mangler.length());
 	_llvmAllNames[length] = 0;
-
-	cl()->loader()->addSymbol(_llvmAllNames+0,   &_selfCode);
-	cl()->loader()->addSymbol(_llvmAllNames+4, this);
-	cl()->loader()->addSymbol(_llvmAllNames+plen, &_selfCode);
 }
 
 char* J3Method::llvmFunctionName(J3Class* from) {





More information about the vmkit-commits mailing list