[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