[vmkit-commits] [vmkit] r186835 - Added AOT/JIT switch to indicate when we are compiling the garbage collector itself.
Koutheir Attouchi
koutheir at gmail.com
Mon Jul 22 09:09:43 PDT 2013
Author: koutheir
Date: Mon Jul 22 11:09:42 2013
New Revision: 186835
URL: http://llvm.org/viewvc/llvm-project?rev=186835&view=rev
Log:
Added AOT/JIT switch to indicate when we are compiling the garbage collector itself.
Modified:
vmkit/trunk/include/j3/J3Intrinsics.h
vmkit/trunk/include/j3/JavaAOTCompiler.h
vmkit/trunk/include/j3/JavaCompiler.h
vmkit/trunk/include/j3/JavaJITCompiler.h
vmkit/trunk/include/j3/JavaLLVMCompiler.h
vmkit/trunk/include/vmkit/GC.h
vmkit/trunk/include/vmkit/System.h
vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp
vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp
vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp
vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp
vmkit/trunk/lib/j3/VMCore/JavaClass.h
vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp
vmkit/trunk/tools/vmjc/vmjc.cpp
Modified: vmkit/trunk/include/j3/J3Intrinsics.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/J3Intrinsics.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/j3/J3Intrinsics.h (original)
+++ vmkit/trunk/include/j3/J3Intrinsics.h Mon Jul 22 11:09:42 2013
@@ -127,10 +127,10 @@ public:
llvm::Constant* OffsetDoYieldInThreadConstant;
llvm::Constant* OffsetIsolateIDInThreadConstant;
llvm::Constant* OffsetVMInThreadConstant;
- llvm::Constant* OffsetThreadInMutatorThreadConstant;
+ llvm::Constant* OffsetThreadInMutatorThreadConstant;
llvm::Constant* OffsetJNIInJavaThreadConstant;
llvm::Constant* OffsetJavaExceptionInJavaThreadConstant;
-
+
llvm::Constant* OffsetClassInVTConstant;
llvm::Constant* OffsetDepthInVTConstant;
llvm::Constant* OffsetDisplayInVTConstant;
Modified: vmkit/trunk/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaAOTCompiler.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaAOTCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaAOTCompiler.h Mon Jul 22 11:09:42 2013
@@ -28,7 +28,8 @@ using vmkit::UTF8;
class JavaAOTCompiler : public JavaLLVMCompiler {
public:
- JavaAOTCompiler(const std::string &ModuleID);
+ JavaAOTCompiler(
+ const std::string &ModuleID, bool compiling_garbage_collector = false);
virtual bool isStaticCompiling() {
return true;
@@ -38,8 +39,10 @@ public:
return true;
}
- virtual JavaCompiler* Create(const std::string& ModuleID) {
- return new JavaAOTCompiler(ModuleID);
+ virtual JavaCompiler* Create(
+ const std::string& ModuleID, bool compiling_garbage_collector = false)
+ {
+ return new JavaAOTCompiler(ModuleID, compiling_garbage_collector);
}
virtual void* materializeFunction(JavaMethod* meth, Class* customizeFor) {
Modified: vmkit/trunk/include/j3/JavaCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaCompiler.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaCompiler.h Mon Jul 22 11:09:42 2013
@@ -35,8 +35,14 @@ class JavaCompiler {
public:
vmkit::BumpPtrAllocator allocator;
+ bool compilingGarbageCollector;
- virtual JavaCompiler* Create(const std::string&) {
+ JavaCompiler(bool compiling_garbage_collector = false) :
+ compilingGarbageCollector(compiling_garbage_collector) {}
+
+ virtual JavaCompiler* Create(
+ const std::string&, bool compiling_garbage_collector = false)
+ {
return this;
}
@@ -50,6 +56,10 @@ public:
return false;
}
+ virtual bool isCompilingGarbageCollector() {
+ return compilingGarbageCollector;
+ }
+
virtual bool emitFunctionName() {
return false;
}
Modified: vmkit/trunk/include/j3/JavaJITCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaJITCompiler.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaJITCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaJITCompiler.h Mon Jul 22 11:09:42 2013
@@ -41,7 +41,8 @@ public:
llvm::ExecutionEngine* executionEngine;
llvm::GCModuleInfo* GCInfo;
- JavaJITCompiler(const std::string &ModuleID);
+ JavaJITCompiler(
+ const std::string &ModuleID, bool compiling_garbage_collector = false);
~JavaJITCompiler();
virtual bool isStaticCompiling() {
@@ -79,7 +80,8 @@ public:
bool stat, llvm::BasicBlock* insert) = 0;
virtual word_t getPointerOrStub(JavaMethod& meth, int type) = 0;
- static JavaJITCompiler* CreateCompiler(const std::string& ModuleID);
+ static JavaJITCompiler* CreateCompiler(
+ const std::string& ModuleID, bool compiling_garbage_collector = false);
};
class JavaJ3LazyJITCompiler : public JavaJITCompiler {
@@ -89,11 +91,14 @@ public:
bool stat, llvm::BasicBlock* insert);
virtual word_t getPointerOrStub(JavaMethod& meth, int side);
- virtual JavaCompiler* Create(const std::string& ModuleID) {
- return new JavaJ3LazyJITCompiler(ModuleID);
+ virtual JavaCompiler* Create(
+ const std::string& ModuleID, bool compiling_garbage_collector = false)
+ {
+ return new JavaJ3LazyJITCompiler(ModuleID, compiling_garbage_collector);
}
- JavaJ3LazyJITCompiler(const std::string& ModuleID);
+ JavaJ3LazyJITCompiler(
+ const std::string& ModuleID, bool compiling_garbage_collector = false);
};
} // end namespace j3
Modified: vmkit/trunk/include/j3/JavaLLVMCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaLLVMCompiler.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaLLVMCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaLLVMCompiler.h Mon Jul 22 11:09:42 2013
@@ -84,7 +84,8 @@ private:
llvm::DenseMap<llvm::FunctionType*, llvm::Function*> staticAPs;
public:
- JavaLLVMCompiler(const std::string &ModuleID);
+ JavaLLVMCompiler(
+ const std::string &ModuleID, bool compiling_garbage_collector = false);
virtual bool isStaticCompiling() = 0;
virtual bool emitFunctionName() = 0;
@@ -123,7 +124,7 @@ public:
cooperativeGC = false;
}
- virtual JavaCompiler* Create(const std::string& ModuleID) = 0;
+ virtual JavaCompiler* Create(const std::string& ModuleID, bool compiling_garbage_collector = false) = 0;
virtual ~JavaLLVMCompiler();
Modified: vmkit/trunk/include/vmkit/GC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/GC.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/GC.h (original)
+++ vmkit/trunk/include/vmkit/GC.h Mon Jul 22 11:09:42 2013
@@ -24,7 +24,6 @@ public:
};
class gcRoot {
- private:
public:
word_t& header(){return toHeader()->_header; }
inline gcHeader* toHeader() { return (gcHeader*)((uintptr_t)this - gcHeader::hiddenHeaderSize()); }
Modified: vmkit/trunk/include/vmkit/System.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/System.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/System.h (original)
+++ vmkit/trunk/include/vmkit/System.h Mon Jul 22 11:09:42 2013
@@ -17,7 +17,6 @@
#include <stdint.h>
#include <unistd.h>
-
#if defined(__linux__) || defined(__FreeBSD__)
#define LINUX_OS 1
#elif defined(__APPLE__)
@@ -93,7 +92,7 @@ const word_t kVmkitThreadMask = 0xF00000
const word_t kGCMemoryStart = 0x50000000;
#endif
-const word_t kGCMemorySize = 0x30000000;
+const word_t kGCMemorySize = 0x30000000;
#define TRY { vmkit::ExceptionBuffer __buffer__; if (!SETJMP(__buffer__.buffer))
#define CATCH else
Modified: vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp Mon Jul 22 11:09:42 2013
@@ -162,10 +162,10 @@ void J3Intrinsics::init(llvm::Module* mo
OffsetIsolateIDInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 1);
OffsetVMInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 2);
OffsetDoYieldInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 4);
- OffsetThreadInMutatorThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 0);
+ OffsetThreadInMutatorThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 0);
OffsetJNIInJavaThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 1);
OffsetJavaExceptionInJavaThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 2);
-
+
ClassReadyConstant = ConstantInt::get(Type::getInt8Ty(Context), ready);
InterfaceLookupFunction = module->getFunction("j3InterfaceLookup");
Modified: vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp Mon Jul 22 11:09:42 2013
@@ -1832,8 +1832,9 @@ Constant* JavaAOTCompiler::CreateConstan
return Array;
}
-JavaAOTCompiler::JavaAOTCompiler(const std::string& ModuleID) :
- JavaLLVMCompiler(ModuleID) {
+JavaAOTCompiler::JavaAOTCompiler(
+ const std::string& ModuleID, bool compiling_garbage_collector) :
+ JavaLLVMCompiler(ModuleID, compiling_garbage_collector) {
std::string Error;
const Target* TheTarget(TargetRegistry::lookupTarget(
Modified: vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp Mon Jul 22 11:09:42 2013
@@ -81,10 +81,10 @@ void JavaJIT::checkYieldPoint() {
if (!TheCompiler->useCooperativeGC()) return;
Value* YieldPtr = getDoYieldPtr(getMutatorThreadPtr());
- Value* Yield = new LoadInst(YieldPtr, "", currentBlock);
+ Value* Yield = new LoadInst(YieldPtr, "yield", currentBlock);
- BasicBlock* continueBlock = createBasicBlock("After safe point");
- BasicBlock* yieldBlock = createBasicBlock("In safe point");
+ BasicBlock* continueBlock = createBasicBlock("afterSafePoint");
+ BasicBlock* yieldBlock = createBasicBlock("inSafePoint");
BranchInst::Create(yieldBlock, continueBlock, Yield, currentBlock);
currentBlock = yieldBlock;
@@ -1134,7 +1134,7 @@ llvm::Function* JavaJIT::javaCompile() {
jmpBuffer = new AllocaInst(ArrayType::get(Type::getInt8Ty(*llvmContext), sizeof(vmkit::ExceptionBuffer)), "", currentBlock);
jmpBuffer = new BitCastInst(jmpBuffer, intrinsics->ptrType, "exceptionSavePoint", currentBlock);
}
-
+
reader.cursor = start;
exploreOpcodes(reader, codeLen);
@@ -1207,7 +1207,7 @@ llvm::Function* JavaJIT::javaCompile() {
if (returnValue != NULL) {
new StoreInst(endNode, returnValue, currentBlock);
}
-
+
if (isSynchro(compilingMethod->access)) {
endSynchronize();
}
@@ -1674,7 +1674,7 @@ void JavaJIT::invokeSpecial(uint16 index
} else {
val = invoke(func, args, "", currentBlock);
}
-
+
Type* retType = virtualType->getReturnType();
if (retType != Type::getVoidTy(*llvmContext)) {
if (retType == intrinsics->JavaObjectType) {
Modified: vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp Mon Jul 22 11:09:42 2013
@@ -152,8 +152,9 @@ Constant* JavaJITCompiler::getNativeFunc
return ConstantExpr::getIntToPtr(CI, valPtrType);
}
-JavaJITCompiler::JavaJITCompiler(const std::string &ModuleID) :
- JavaLLVMCompiler(ModuleID), listener(this) {
+JavaJITCompiler::JavaJITCompiler(
+ const std::string &ModuleID, bool compiling_garbage_collector) :
+ JavaLLVMCompiler(ModuleID, compiling_garbage_collector), listener(this) {
EmitFunctionName = false;
GCInfo = NULL;
@@ -440,10 +441,13 @@ bool JavaJ3LazyJITCompiler::needsCallbac
getMethod(meth, customizeFor)->hasExternalWeakLinkage());
}
-JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(const std::string& ModuleID)
- : JavaJITCompiler(ModuleID) {}
+JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(
+ const std::string& ModuleID, bool compiling_garbage_collector) :
+ JavaJITCompiler(ModuleID, compiling_garbage_collector) {}
-JavaJITCompiler* JavaJITCompiler::CreateCompiler(const std::string& ModuleID) {
- return new JavaJ3LazyJITCompiler(ModuleID);
+JavaJITCompiler* JavaJITCompiler::CreateCompiler(
+ const std::string& ModuleID, bool compiling_garbage_collector)
+{
+ return new JavaJ3LazyJITCompiler(ModuleID, compiling_garbage_collector);
}
Modified: vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaLLVMCompiler.cpp Mon Jul 22 11:09:42 2013
@@ -25,7 +25,9 @@ using namespace llvm;
namespace j3 {
-JavaLLVMCompiler::JavaLLVMCompiler(const std::string& str) :
+JavaLLVMCompiler::JavaLLVMCompiler(
+ const std::string& str, bool compiling_garbage_collector) :
+ JavaCompiler(compiling_garbage_collector),
TheModule(new llvm::Module(str, *(new LLVMContext()))),
DebugFactory(new DIBuilder(*TheModule)) {
Modified: vmkit/trunk/lib/j3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaClass.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaClass.h Mon Jul 22 11:09:42 2013
@@ -1009,7 +1009,6 @@ public:
/// with the given class loader.
///
JavaObject* getReturnType(JnjvmClassLoader* loader);
-
//===----------------------------------------------------------------------===//
//
@@ -1046,7 +1045,6 @@ private:
template<class TYPE, class FUNC_TYPE_VIRTUAL_BUF>
TYPE invokeVirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) __attribute__((noinline)) {
llvm_gcroot(obj, 0);
- verifyNull(obj);
UserCommonClass* theClass = JavaObject::getClass(obj);
UserClass* objCl = theClass->isArray() ? theClass->super : theClass->asClass();
Modified: vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp Mon Jul 22 11:09:42 2013
@@ -1351,7 +1351,6 @@ Jnjvm::Jnjvm(vmkit::BumpPtrAllocator& Al
JnjvmBootstrapLoader* loader) :
VirtualMachine(Alloc, frames), lockSystem(Alloc)
{
-
classpath = getenv("CLASSPATH");
if (classpath == NULL) classpath = ".";
@@ -1381,13 +1380,6 @@ ArrayUInt16* Jnjvm::asciizToArray(const
}
void Jnjvm::startCollection() {
-
-#if DEBUG > 0
- printf("Start Collection\n");
- vmkit::Thread::get()->printBacktrace();
- fflush(stdout);
-#endif
-
finalizerThread->FinalizationQueueLock.acquire();
referenceThread->ToEnqueueLock.acquire();
referenceThread->SoftReferencesQueue.acquire();
@@ -1403,12 +1395,6 @@ void Jnjvm::endCollection() {
referenceThread->PhantomReferencesQueue.release();
finalizerThread->FinalizationCond.broadcast();
referenceThread->EnqueueCond.broadcast();
-
-#if DEBUG > 0
- printf("End Collection\n");
- vmkit::Thread::get()->printBacktrace();
- fflush(stdout);
-#endif
}
void Jnjvm::scanWeakReferencesQueue(word_t closure) {
Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp Mon Jul 22 11:09:42 2013
@@ -217,15 +217,17 @@ JnjvmClassLoader::JnjvmClassLoader(vmkit
{
}
-JnjvmClassLoader::JnjvmClassLoader(vmkit::BumpPtrAllocator& Alloc,
- JnjvmClassLoader& JCL, JavaObject* loader,
- VMClassLoader* vmdata,
- Jnjvm* VM) : allocator(Alloc)
+JnjvmClassLoader::JnjvmClassLoader(
+ vmkit::BumpPtrAllocator& Alloc, JnjvmClassLoader& JCL, JavaObject* loader,
+ VMClassLoader* vmdata, Jnjvm* VM) :
+ allocator(Alloc)
{
llvm_gcroot(loader, 0);
llvm_gcroot(vmdata, 0);
bootstrapLoader = JCL.bootstrapLoader;
- TheCompiler = bootstrapLoader->getCompiler()->Create("Applicative loader");
+ TheCompiler = bootstrapLoader->getCompiler()->Create(
+ "Applicative loader",
+ bootstrapLoader->getCompiler()->isCompilingGarbageCollector());
hashUTF8 = new(allocator, "UTF8Map") UTF8Map(allocator);
classes = new(allocator, "ClassMap") ClassMap();
@@ -809,6 +811,21 @@ Signdef* JnjvmClassLoader::constructSign
return res;
}
+JnjvmClassLoader* JnjvmClassLoader::createForJavaObject(
+ Jnjvm* vm, JavaObject* loader, VMClassLoader**vmdata)
+{
+ llvm_gcroot(loader, 0);
+
+ *vmdata = VMClassLoader::allocate();
+ vmkit::BumpPtrAllocator* A = new vmkit::BumpPtrAllocator();
+
+ JnjvmClassLoader* JCL = new(*A, "Class loader")
+ JnjvmClassLoader(*A, *vm->bootstrapLoader, loader, *vmdata, vm);
+
+ Classpath* upcalls = vm->bootstrapLoader->upcalls;
+ upcalls->vmdataClassLoader->setInstanceObjectField(loader, *vmdata);
+ return JCL;
+}
JnjvmClassLoader*
JnjvmClassLoader::getJnjvmLoaderFromJavaObject(JavaObject* loader, Jnjvm* vm) {
@@ -834,29 +851,23 @@ JnjvmClassLoader::getJnjvmLoaderFromJava
vmdata =
(VMClassLoader*)(upcalls->vmdataClassLoader->getInstanceObjectField(loader));
if (!vmdata || !VMClassLoader::isVMClassLoader(vmdata)) {
- vmdata = VMClassLoader::allocate();
- vmkit::BumpPtrAllocator* A = new vmkit::BumpPtrAllocator();
- JCL = new(*A, "Class loader") JnjvmClassLoader(*A, *vm->bootstrapLoader,
- loader, vmdata, vm);
- upcalls->vmdataClassLoader->setInstanceObjectField(loader, (JavaObject*)vmdata);
+ JCL = JnjvmClassLoader::createForJavaObject(vm, loader, &vmdata);
}
JavaObject::release(loader);
}
else if (!VMClassLoader::isVMClassLoader(vmdata)) {
JavaObject::acquire(loader);
- vmdata = VMClassLoader::allocate();
- vmkit::BumpPtrAllocator* A = new vmkit::BumpPtrAllocator();
- JCL = new(*A, "Class loader") JnjvmClassLoader(*A, *vm->bootstrapLoader,
- loader, vmdata, vm);
- upcalls->vmdataClassLoader->setInstanceObjectField(loader, (JavaObject*)vmdata);
+ JCL = JnjvmClassLoader::createForJavaObject(vm, loader, &vmdata);
JavaObject::release(loader);
} else {
JCL = vmdata->getClassLoader();
assert(JCL->javaLoader == loader);
}
+
if (!JCL) {
assert( vmdata->getClassLoader() == JCL && "Loader is not equal to stored value");
- fprintf(stderr, "Error in method %s, %d because condition 1: %d\n", __FILE__, __LINE__, (vmdata == NULL || !VMClassLoader::isVMClassLoader(vmdata)));
+ fprintf(stderr, "Error in method %s, %d because condition 1: %d\n",
+ __FILE__, __LINE__, (vmdata == NULL || !VMClassLoader::isVMClassLoader(vmdata)));
}
return JCL;
}
Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h Mon Jul 22 11:09:42 2013
@@ -56,7 +56,9 @@ typedef TJavaArray<JavaObject*> ArrayObj
/// its own tables (signatures, UTF8, types) which are mapped to a single
/// table for non-isolate environments.
///
-class JnjvmClassLoader : public vmkit::PermanentObject {
+class JnjvmClassLoader :
+ public vmkit::PermanentObject
+{
private:
/// isolate - Which isolate defined me? Null for the bootstrap class loader.
@@ -173,6 +175,8 @@ public:
/// of the given class loader.
///
static JnjvmClassLoader* getJnjvmLoaderFromJavaObject(JavaObject*, Jnjvm *vm);
+ static JnjvmClassLoader* createForJavaObject(
+ Jnjvm* vm, JavaObject* loader, VMClassLoader**vmdata);
/// getJavaClassLoader - Return the Java representation of this class loader.
///
Modified: vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp Mon Jul 22 11:09:42 2013
@@ -282,7 +282,7 @@ public:
word_t ptr = kThreadStart;
uint32 flags = MAP_PRIVATE | MAP_ANON | MAP_FIXED;
- baseAddr = (word_t)mmap((void*)ptr, STACK_SIZE * NR_THREADS,
+ baseAddr = (word_t)mmap((void*)ptr, STACK_SIZE * NR_THREADS,
PROT_READ | PROT_WRITE, flags, -1, 0);
if (baseAddr == (word_t) MAP_FAILED) {
Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=186835&r1=186834&r2=186835&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Mon Jul 22 11:09:42 2013
@@ -125,7 +125,15 @@ int main(int argc, char **argv) {
vmkit::VmkitModule::initialise(argc, argv);
vmkit::Collector::initialise(argc, argv);
- JavaAOTCompiler* Comp = new JavaAOTCompiler("AOT");
+ // WARNING: This is a silly method to discover that we are compiling MMTk.
+ // Please change to anything more deterministic.
+ bool compilingMMTk = (
+ DisableExceptions &&
+ DisableCooperativeGC &&
+ DisableStubs &&
+ AssumeCompiled);
+
+ JavaAOTCompiler* Comp = new JavaAOTCompiler("AOT", compilingMMTk);
vmkit::BumpPtrAllocator allocator;
JnjvmBootstrapLoader* loader = new(allocator, "Bootstrap loader")
More information about the vmkit-commits
mailing list