[vmkit-commits] [vmkit] r55527 - in /vmkit/branches/isolate/lib/JnJVM: ./ Classpath/ Isolate/ LLVMRuntime/ VMCore/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Aug 28 23:13:41 PDT 2008
Author: geoffray
Date: Fri Aug 29 01:13:39 2008
New Revision: 55527
URL: http://llvm.org/viewvc/llvm-project?rev=55527&view=rev
Log:
Single VM runs as usual and Multi VM creates an exe!
Modified:
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.cpp
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.h
vmkit/branches/isolate/lib/JnJVM/Isolate/SharedMaps.h
vmkit/branches/isolate/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
vmkit/branches/isolate/lib/JnJVM/Makefile
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.h
vmkit/branches/isolate/lib/JnJVM/VMCore/VirtualTables.cpp
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc Fri Aug 29 01:13:39 2008
@@ -108,7 +108,15 @@
verifyNull(cons);
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons);
- return (jobjectArray)NativeUtil::getExceptionTypes(meth);
+ UserClass* cl = 0;
+#ifdef MULTIPLE_VM
+ jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)cons);
+ cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+#else
+ cl = meth->classDef;
+#endif
+
+ return (jobjectArray)NativeUtil::getExceptionTypes(cl, meth);
}
}
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc Fri Aug 29 01:13:39 2008
@@ -206,7 +206,14 @@
verifyNull(_meth);
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)_meth);
- return (jobjectArray)NativeUtil::getExceptionTypes(meth);
+ UserClass* cl = 0;
+#ifdef MULTIPLE_VM
+ jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)_meth);
+ cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+#else
+ cl = meth->classDef;
+#endif
+ return (jobjectArray)NativeUtil::getExceptionTypes(cl, meth);
}
}
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc Fri Aug 29 01:13:39 2008
@@ -54,7 +54,7 @@
jobject loader) {
Jnjvm* vm = JavaThread::get()->isolate;
- JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader);
+ JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
UserCommonClass* cl = JCL->lookupClassFromJavaString((JavaString*)str,
true, false);
if (cl != 0) {
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc Fri Aug 29 01:13:39 2008
@@ -52,7 +52,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
JavaString* name = (JavaString*)_name;
const UTF8* utf8 = name->strToUTF8(vm);
- JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader);
+ JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
UserCommonClass* cl = JCL->lookupClass(utf8);
if (cl) return (jclass)(cl->getClassDelegatee(vm));
@@ -69,7 +69,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
JavaString* str = (JavaString*)_str;
- JnjvmClassLoader* JCL = JnjvmClassLoader::bootstrapLoader;
+ JnjvmClassLoader* JCL = vm->bootstrapLoader;
UserCommonClass* cl = JCL->lookupClassFromJavaString(str, doResolve, false);
if (cl != 0) {
@@ -91,7 +91,7 @@
jint len,
jobject pd) {
Jnjvm* vm = JavaThread::get()->isolate;
- JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader);
+ JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
JavaString* str = (JavaString*)_str;
const UTF8* name = str->value->javaToInternal(JCL->hashUTF8, str->offset, str->count);
UserClass* cl = JCL->constructClass(name, (ArrayUInt8*)bytes);
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc Fri Aug 29 01:13:39 2008
@@ -52,7 +52,7 @@
memmove(&(elements[lgPre + lgLib]), vm->postlib->elements, lgPost * sizeof(uint16));
// TODO: find a better place to store the UTF8
- const UTF8* res = JnjvmClassLoader::bootstrapLoader->readerConstructUTF8(elements, size);
+ const UTF8* res = vm->bootstrapLoader->readerConstructUTF8(elements, size);
return (jobject)(vm->UTF8ToStr(res));
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc Fri Aug 29 01:13:39 2008
@@ -28,6 +28,7 @@
extern "C" {
+#ifndef MULTIPLE_VM
ArrayObject* recGetClassContext(Jnjvm* vm, int** stack, uint32 size, uint32 first, uint32 rec) {
if (size != first) {
JavaMethod* meth = JavaJIT::IPToJavaMethod(stack[first]);
@@ -42,7 +43,7 @@
return ArrayObject::acons(rec, vm->upcalls->classArrayClass, &(vm->allocator));
}
}
-#ifndef MULTIPLE_VM
+
JNIEXPORT jobject JNICALL Java_gnu_classpath_VMStackWalker_getClassContext(
#ifdef NATIVE_JNI
JNIEnv *env,
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp Fri Aug 29 01:13:39 2008
@@ -7,10 +7,11 @@
//
//===----------------------------------------------------------------------===//
-#include "IsolateCommonClass.h"
+
#include "IsolateSharedLoader.h"
#include "JavaAllocator.h"
#include "JavaClass.h"
+#include "JnjvmModule.h"
using namespace jnjvm;
@@ -41,13 +42,16 @@
classDef = cl;
classLoader = JCL;
delegatee = 0;
- baseClass = 0;
+ _baseClass = 0;
+ _funcs = 0;
}
-UserClassPrimitive::UserClassPrimitive(JnjvmClassLoader* JCL, const UTF8* name) {
- ClassPrimitive* cl = JnjvmSharedLoader::sharedLoader->constructSharedClassPrimitive(name);
+UserClassPrimitive::UserClassPrimitive(JnjvmClassLoader* JCL, const UTF8* name,
+ uint32 nb) {
+ ClassPrimitive* cl =
+ JnjvmSharedLoader::sharedLoader->constructSharedClassPrimitive(name, nb);
if (!cl) {
- cl = new ClassPrimitive(JCL, name);
+ cl = new ClassPrimitive(JCL, name, nb);
}
classDef = cl;
classLoader = JCL;
@@ -81,7 +85,7 @@
def->acquire();
def->status = prepared;
status = prepared;
- def->classLoader->TheModule->resolveVirtualClass(cl);
+ def->classLoader->TheModule->resolveVirtualClass(def);
def->status = resolved;
status = resolved;
classDef->broadcastClass();
@@ -107,3 +111,84 @@
}
}
}
+
+UserConstantPool* UserClass::getCtpCache() {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+UserConstantPool* UserClass::getConstantPool() {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+UserClass* UserCommonClass::lookupClassFromMethod(JavaMethod* meth) {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+UserCommonClass* UserCommonClass::getUserClass(CommonClass* cl) {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+UserCommonClass* UserConstantPool::loadClass(uint32 index) {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+void UserConstantPool::resolveMethod(uint32 index, UserCommonClass*& cl,
+ const UTF8*& utf8, Signdef*& sign) {
+ fprintf(stderr, "implement me");
+ abort();
+}
+
+void UserConstantPool::resolveField(uint32 index, UserCommonClass*& cl,
+ const UTF8*& utf8, Typedef*& sign) {
+ fprintf(stderr, "implement me");
+ abort();
+}
+
+const UTF8* UserConstantPool::UTF8AtForString(uint32 entry) {
+ fprintf(stderr, "implement me");
+ abort();
+}
+
+AssessorDesc* UserClassArray::funcs() {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+
+UserClassPrimitive* AssessorDesc::getPrimitiveClass() const {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+UserClassArray* AssessorDesc::getArrayClass() const {
+ fprintf(stderr, "implement me");
+ abort();
+ return 0;
+}
+
+Class::Class(JnjvmClassLoader*, const UTF8*, ArrayUInt8*) {
+ fprintf(stderr, "implement me");
+ abort();
+}
+
+ClassPrimitive::ClassPrimitive(JnjvmClassLoader*, const UTF8*, uint32) {
+ fprintf(stderr, "implement me");
+ abort();
+}
+
+ClassArray::ClassArray(JnjvmClassLoader*, const UTF8*) {
+ fprintf(stderr, "implement me");
+ abort();
+}
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h Fri Aug 29 01:13:39 2008
@@ -7,6 +7,10 @@
//
//===----------------------------------------------------------------------===//
+#ifndef JNJVM_JAVA_CLASS_H
+#error "Never use <IsolateCommonClass.h> directly, but include <JavaClass.h>"
+#endif
+
#ifndef ISOLATE_COMMON_CLASS_H
#define ISOLATE_COMMON_CLASS_H
@@ -81,8 +85,6 @@
UserClass* super;
std::vector<UserClass*> interfaces;
- virtual void TRACER;
-
bool inheritName(const UTF8* Tname);
bool isOfTypeName(const UTF8* name);
bool isAssignableFrom(UserCommonClass* cl);
@@ -201,7 +203,6 @@
return classDef->constructField(name, type, access);
}
- UserConstantPool* getCtpCache();
UserClass* lookupClassFromMethod(JavaMethod* meth);
UserCommonClass* getUserClass(CommonClass* cl);
@@ -254,6 +255,7 @@
return &classDef->interfacesUTF8;
}
+ UserCommonClass();
};
class UserClass : public UserCommonClass {
@@ -264,7 +266,8 @@
virtual void TRACER;
UserClass(JnjvmClassLoader* JCL, const UTF8* name, ArrayUInt8* bytes);
-
+ UserClass() {}
+
JavaObject* doNew(Jnjvm* vm);
std::vector<UserClass*> innerClasses;
@@ -296,6 +299,7 @@
UserConstantPool* ctpInfo;
UserConstantPool* getConstantPool();
+ UserConstantPool* getCtpCache();
uint64 getStaticSize() {
return ((Class*)classDef)->getStaticSize();
@@ -327,6 +331,7 @@
virtual void TRACER;
UserClassArray(JnjvmClassLoader* JCL, const UTF8* name);
+ UserClassArray() {}
void resolveComponent();
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.cpp Fri Aug 29 01:13:39 2008
@@ -17,6 +17,8 @@
using namespace jnjvm;
+JnjvmSharedLoader* JnjvmSharedLoader::sharedLoader;
+
JnjvmSharedLoader* JnjvmSharedLoader::createSharedLoader() {
JnjvmSharedLoader* JCL = gc_new(JnjvmSharedLoader)();
@@ -66,13 +68,14 @@
return res;
}
-ClassPrimitive* JnjvmSharedLoader::constructSharedClassPrimitive(const UTF8* name) {
+ClassPrimitive*
+JnjvmSharedLoader::constructSharedClassPrimitive(const UTF8* name, uint32 nb) {
nameClasses->lock->lock();
SharedClassNameMap::iterator End = nameClasses->map.end();
SharedClassNameMap::iterator I = nameClasses->map.find(name);
ClassPrimitive* res = 0;
if (I == End) {
- res = new ClassPrimitive(this, name);
+ res = new ClassPrimitive(this, name, nb);
nameClasses->map.insert(std::make_pair(name, res));
} else {
res = ((ClassPrimitive*)(I->second));
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateSharedLoader.h Fri Aug 29 01:13:39 2008
@@ -33,7 +33,8 @@
/// VT - The virtual table of this class.
///
static VirtualTable* VT;
-
+
+ virtual void TRACER;
/// constructSharedClass - Create a shared representation of the class.
/// If two classes have the same name but not the same array of bytes,
@@ -41,7 +42,7 @@
///
Class* constructSharedClass(const UTF8* name, ArrayUInt8* bytes);
ClassArray* constructSharedClassArray(const UTF8* name);
- ClassPrimitive* constructSharedClassPrimitive(const UTF8* name);
+ ClassPrimitive* constructSharedClassPrimitive(const UTF8* name, uint32 nb);
static JnjvmSharedLoader* createSharedLoader();
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/SharedMaps.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/SharedMaps.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/SharedMaps.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/SharedMaps.h Fri Aug 29 01:13:39 2008
@@ -9,7 +9,10 @@
#include "LockedMap.h"
-using namespace jnjvm;
+#ifndef ISOLATE_JNJVM_SHARED_MAPS_H
+#define ISOLATE_JNJVM_SHARED_MAPS_H
+
+namespace jnjvm {
struct ltarray {
@@ -56,3 +59,7 @@
virtual void TRACER;
};
+
+} // end namespace jnjvm
+
+#endif //ISOLATE_JNJVM_SHARED_MAPS_H
Modified: vmkit/branches/isolate/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/LLVMRuntime/runtime-isolate.ll?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/LLVMRuntime/runtime-isolate.ll (original)
+++ vmkit/branches/isolate/lib/JnJVM/LLVMRuntime/runtime-isolate.ll Fri Aug 29 01:13:39 2008
@@ -16,8 +16,8 @@
;;; constant call because the cache node never changes.
declare i8** @getCtpCacheNode(%CacheNode*) readnone
-;;; getCtpCacheNode - Get the constant pool cache of a cache node. This is a
-;;; constant call because the cache node never changes.
+;;; getCtpCacheNode - Get the constant pool cache of a class. This is a
+;;; constant call because the constant pool never changes.
declare i8** @getCtpClass(%JavaClass*) readnone
;;; getJnjvmExceptionClass - Get the exception user class for the given
Modified: vmkit/branches/isolate/lib/JnJVM/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Makefile?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Makefile (original)
+++ vmkit/branches/isolate/lib/JnJVM/Makefile Fri Aug 29 01:13:39 2008
@@ -10,5 +10,13 @@
DIRS = LLVMRuntime VMCore Classpath
+include $(LEVEL)/Makefile.config
+
+ifeq ($(ISOLATE_BUILD), 1)
+ DIRS += Isolate
+endif
+
+
+
include $(LEVEL)/Makefile.common
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp Fri Aug 29 01:13:39 2008
@@ -279,7 +279,7 @@
UserCommonClass* cl = loader->loadName(componentName, false, true);
return cl->classLoader;
} else {
- return JnjvmClassLoader::bootstrapLoader;
+ return JavaThread::get()->isolate->bootstrapLoader;
}
}
@@ -721,6 +721,11 @@
}
}
}
+#else
+void CommonClass::resolveClass() {
+ assert(status >= resolved &&
+ "Asking to resolve a not resolved-class in a isolate environment");
+}
#endif
void UserClass::resolveInnerOuterClasses() {
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp Fri Aug 29 01:13:39 2008
@@ -265,9 +265,9 @@
else return UTF8At(ctpDef[index]);
}
-#ifndef MULTIPLE_VM
CommonClass* JavaConstantPool::loadClass(uint32 index) {
CommonClass* temp = isClassLoaded(index);
+#ifndef MULTIPLE_VM
if (!temp) {
JnjvmClassLoader* loader = classDef->classLoader;
const UTF8* name = UTF8At(ctpDef[index]);
@@ -280,21 +280,24 @@
}
ctpRes[index] = temp;
}
+#endif
return temp;
}
CommonClass* JavaConstantPool::getMethodClassIfLoaded(uint32 index) {
CommonClass* temp = isClassLoaded(index);
+#ifndef MULTIPLE_VM
if (!temp) {
JnjvmClassLoader* loader = classDef->classLoader;
+ assert(loader && "Class has no loader?");
const UTF8* name = UTF8At(ctpDef[index]);
temp = loader->lookupClass(name);
if (!temp)
temp = JnjvmClassLoader::bootstrapLoader->lookupClass(name);
}
+#endif
return temp;
}
-#endif
Typedef* JavaConstantPool::resolveNameAndType(uint32 index) {
void* res = ctpRes[index];
@@ -423,7 +426,7 @@
return sign;
}
-void JavaConstantPool::resolveMethod(uint32 index, UserCommonClass*& cl,
+void JavaConstantPool::resolveMethod(uint32 index, CommonClass*& cl,
const UTF8*& utf8, Signdef*& sign) {
sint32 entry = ctpDef[index];
sint32 ntIndex = entry & 0xFFFF;
@@ -434,7 +437,7 @@
cl->resolveClass();
}
-void JavaConstantPool::resolveField(uint32 index, UserCommonClass*& cl,
+void JavaConstantPool::resolveField(uint32 index, CommonClass*& cl,
const UTF8*& utf8, Typedef*& sign) {
sint32 entry = ctpDef[index];
sint32 ntIndex = entry & 0xFFFF;
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.h Fri Aug 29 01:13:39 2008
@@ -27,7 +27,6 @@
class Reader;
class Signdef;
class Typedef;
-class UserCommonClass;
class UTF8;
@@ -235,14 +234,14 @@
/// perform class loading. This function is called just in time, ie when
/// the method call is actually made and not yet resolved.
///
- void resolveMethod(uint32 index, UserCommonClass*& cl,
+ void resolveMethod(uint32 index, CommonClass*& cl,
const UTF8*& utf8, Signdef*& sign);
/// resolveField - Resolve the class and signature of the field. May
/// perform class loading. This function is called just in time, ie when
/// the field is accessed and not yet resolved.
///
- void resolveField(uint32 index, UserCommonClass*& cl, const UTF8*& utf8,
+ void resolveField(uint32 index, CommonClass*& cl, const UTF8*& utf8,
Typedef*& sign);
/// loadClass - Loads the class and returns it. This is called just in time,
@@ -251,7 +250,7 @@
/// MULTIANEWARRAY. This function is also called by the classpath for
/// loading exception classes referenced by a method.
///
- UserCommonClass* loadClass(uint32 index);
+ CommonClass* loadClass(uint32 index);
/// JavaConstantPool - Default constructor.
///
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp Fri Aug 29 01:13:39 2008
@@ -32,6 +32,11 @@
#include "ServiceDomain.h"
#endif
+#ifdef MULTIPLE_VM
+#include "SharedMaps.h"
+#include "IsolateSharedLoader.h"
+#endif
+
using namespace jnjvm;
static void initialiseVT() {
@@ -50,6 +55,13 @@
#ifdef SERVICE_VM
INIT(ServiceDomain);
#endif
+#ifdef MULTIPLE_VM
+ INIT(JnjvmSharedLoader);
+ INIT(SharedClassByteMap);
+ INIT(SharedClassNameMap);
+ INIT(UserClass);
+ INIT(UserClassArray);
+#endif
#undef INIT
#define INIT(X) { \
@@ -65,9 +77,9 @@
#undef INIT
}
-static void initialiseStatics() {
+void Jnjvm::initialiseStatics() {
- JnjvmBootstrapLoader* JCL = JnjvmClassLoader::bootstrapLoader =
+ JnjvmBootstrapLoader* JCL = bootstrapLoader =
JnjvmBootstrapLoader::createBootstrapLoader();
// Array initialization
@@ -170,10 +182,15 @@
}
void mvm::VirtualMachine::initialiseJVM() {
+#ifndef MULTIPLE_VM
if (!JnjvmClassLoader::bootstrapLoader) {
initialiseVT();
- initialiseStatics();
+ Jnjvm::initialiseStatics();
+ JnjvmClassLoader::bootstrapLoader = Jnjvm::bootstrapLoader;
}
+#else
+ initialiseVT();
+#endif
}
void Jnjvm::runApplication(int argc, char** argv) {
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp Fri Aug 29 01:13:39 2008
@@ -390,14 +390,26 @@
currentBlock = EndUnlock;
}
+#ifdef MULTIPLE_VM
+Value* JavaJIT::getStaticInstanceCtp() {
+ /// get the -1 offset of the ctp
+ fprintf(stderr, "implement me");
+ abort();
+}
+#endif
+
void JavaJIT::beginSynchronize() {
Value* obj = 0;
if (isVirtual(compilingMethod->access)) {
obj = llvmFunction->arg_begin();
} else {
+#ifndef MULTIPLE_VM
LLVMClassInfo* LCI =
(LLVMClassInfo*)module->getClassInfo(compilingClass);
obj = LCI->getStaticVar(this);
+#else
+ obj = getStaticInstanceCtp();
+#endif
}
#ifndef SERVICE_VM
monitorEnter(obj);
@@ -417,9 +429,13 @@
if (isVirtual(compilingMethod->access)) {
obj = llvmFunction->arg_begin();
} else {
+#ifndef MULTIPLE_VM
LLVMClassInfo* LCI =
(LLVMClassInfo*)module->getClassInfo(compilingClass);
obj = LCI->getStaticVar(this);
+#else
+ obj = getStaticInstanceCtp();
+#endif
}
#ifndef SERVICE_VM
monitorExit(obj);
@@ -850,8 +866,12 @@
if (isVirtual(compilingMethod->access)) {
argsSync.push_back(llvmFunction->arg_begin());
} else {
+#ifndef MULTIPLE_VM
LLVMClassInfo* LCI = (LLVMClassInfo*)module->getClassInfo(compilingClass);
Value* arg = LCI->getStaticVar(this);
+#else
+ Value* arg = getStaticInstanceCtp();
+#endif
argsSync.push_back(arg);
}
llvm::CallInst::Create(JnjvmModule::ReleaseObjectFunction, argsSync.begin(), argsSync.end(),
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.h Fri Aug 29 01:13:39 2008
@@ -260,6 +260,7 @@
#if defined(MULTIPLE_VM)
llvm::Value* ctpCache;
+ llvm::Value* getStaticInstanceCtp();
#endif
static const char* OpcodeNames[256];
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp Fri Aug 29 01:13:39 2008
@@ -200,7 +200,7 @@
#endif
void Classpath::createInitialThread(Jnjvm* vm, JavaObject* th) {
- JnjvmClassLoader* JCL = JnjvmClassLoader::bootstrapLoader;
+ JnjvmClassLoader* JCL = vm->bootstrapLoader;
JCL->loadName(newVMThread->getName(), true, true);
newVMThread->initialiseClass(vm);
@@ -221,7 +221,7 @@
}
void Classpath::mapInitialThread(Jnjvm* vm) {
- JnjvmClassLoader* JCL = JnjvmClassLoader::bootstrapLoader;
+ JnjvmClassLoader* JCL = vm->bootstrapLoader;
JCL->loadName(newThread->getName(), true, true);
newThread->initialiseClass(vm);
JavaObject* th = newThread->doNew(vm);
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp Fri Aug 29 01:13:39 2008
@@ -63,16 +63,16 @@
BEGIN_EXCEPTION
JnjvmClassLoader* loader = 0;
+ Jnjvm* vm = JavaThread::get()->isolate;
UserClass* currentClass = JavaJIT::getCallingClass();
if (currentClass) loader = currentClass->classLoader;
- else loader = JnjvmClassLoader::bootstrapLoader;
+ else loader = vm->bootstrapLoader;
const UTF8* utf8 = loader->asciizConstructUTF8(asciiz);
sint32 len = utf8->size;
UserCommonClass* cl = loader->lookupClassFromUTF8(utf8, 0, len, true, true);
- Jnjvm* vm = JavaThread::get()->isolate;
cl->initialiseClass(vm);
return (jclass)(cl->getClassDelegatee(vm));
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp Fri Aug 29 01:13:39 2008
@@ -83,6 +83,7 @@
#ifndef MULTIPLE_VM
/// If we're not in a multi-vm environment, this can be made static.
std::vector<void*> Jnjvm::nativeLibs;
+JnjvmBootstrapLoader* Jnjvm::bootstrapLoader;
#endif
typedef void (*clinit_t)(Jnjvm* vm);
@@ -439,7 +440,7 @@
sprintf(temp, "%s:%s", vm->classpath, jarFile);
vm->setClasspath(temp);
- ArrayUInt8* bytes = Reader::openFile(JnjvmClassLoader::bootstrapLoader,
+ ArrayUInt8* bytes = Reader::openFile(vm->bootstrapLoader,
jarFile);
ZipArchive archive(bytes);
@@ -562,7 +563,7 @@
printInformation();
} else {
char* path = &cur[16];
- JnjvmClassLoader::bootstrapLoader->analyseClasspathEnv(path);
+ vm->bootstrapLoader->analyseClasspathEnv(path);
}
} else if (!(strcmp(cur, "-enableassertions"))) {
nyi();
@@ -649,7 +650,8 @@
UserClass* cl = upcalls->newClassLoader;
JavaObject* loader =
upcalls->getSystemClassLoader->invokeJavaObjectStatic(this, cl);
- appClassLoader = JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader);
+ appClassLoader = JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader,
+ this);
}
return appClassLoader;
}
@@ -659,7 +661,7 @@
}
void Jnjvm::loadBootstrap() {
- JnjvmClassLoader* loader = JnjvmClassLoader::bootstrapLoader;
+ JnjvmClassLoader* loader = bootstrapLoader;
#define LOAD_CLASS(cl) \
cl->resolveClass(); \
cl->initialiseClass(this);
@@ -834,7 +836,11 @@
isolate->hashStr = new StringMap();
isolate->globalRefsLock = mvm::Lock::allocNormal();
- isolate->bootstrapLoader = JnjvmClassLoader::bootstrapLoader;
+
+#ifdef MULTIPLE_VM
+ isolate->initialiseStatics();
+#endif
+
isolate->upcalls = isolate->bootstrapLoader->upcalls;
#ifdef MULTIPLE_VM
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h Fri Aug 29 01:13:39 2008
@@ -22,6 +22,7 @@
#include "JavaAllocator.h"
#include "JavaTypes.h"
+#include "JnjvmConfig.h"
namespace jnjvm {
@@ -215,7 +216,7 @@
/// bootstraLoader - Bootstrap loader for base classes of this virtual
/// machine.
///
- JnjvmBootstrapLoader* bootstrapLoader;
+ ISOLATE_STATIC JnjvmBootstrapLoader* bootstrapLoader;
/// upcalls - Upcalls to call Java methods and access Java fields.
///
@@ -325,6 +326,11 @@
void setClasspath(char* cp) {
classpath = cp;
}
+
+ /// initialiseStatics - Initializes the isolate. The function initialize
+ /// static variables in a single environment.
+ ///
+ ISOLATE_STATIC void initialiseStatics();
/// allocateIsolate - Allocates a new JVM.
///
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Fri Aug 29 01:13:39 2008
@@ -302,17 +302,17 @@
}
-JnjvmClassLoader* JnjvmClassLoader::getJnjvmLoaderFromJavaObject(JavaObject* loader) {
+JnjvmClassLoader* JnjvmClassLoader::getJnjvmLoaderFromJavaObject(JavaObject* loader, Jnjvm* vm) {
if (loader == 0)
- return bootstrapLoader;
+ return vm->bootstrapLoader;
- Classpath* upcalls = bootstrapLoader->upcalls;
+ Classpath* upcalls = vm->bootstrapLoader->upcalls;
JnjvmClassLoader* JCL =
(JnjvmClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
if (!JCL) {
- JCL = gc_new(JnjvmClassLoader)(*bootstrapLoader, loader, JavaThread::get()->isolate);
+ JCL = gc_new(JnjvmClassLoader)(*vm->bootstrapLoader, loader, JavaThread::get()->isolate);
(upcalls->vmdataClassLoader->setObjectField(loader, (JavaObject*)JCL));
}
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h Fri Aug 29 01:13:39 2008
@@ -126,7 +126,7 @@
/// getJnjvmLoaderFromJavaObject - Return the Jnjvm runtime representation
/// of the given class loader.
///
- static JnjvmClassLoader* getJnjvmLoaderFromJavaObject(JavaObject*);
+ static JnjvmClassLoader* getJnjvmLoaderFromJavaObject(JavaObject*, Jnjvm *vm);
/// getJavaClassLoader - Return the Java representation of this class loader.
///
@@ -185,7 +185,7 @@
/// bootstrapLoader - The bootstrap loader of the JVM. Loads the base
/// classes.
///
- static JnjvmBootstrapLoader* bootstrapLoader;
+ ISOLATE_STATIC JnjvmBootstrapLoader* bootstrapLoader;
/// ~JnjvmClassLoader - Destroy the loader. Depending on the JVM
/// configuration, this may destroy the tables, JIT module and
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp Fri Aug 29 01:13:39 2008
@@ -31,7 +31,7 @@
bool isStatic = ctpInfo->isAStaticCall(index);
- UserCommonClass* cl = 0;
+ CommonClass* cl = 0;
const UTF8* utf8 = 0;
Signdef* sign = 0;
@@ -104,7 +104,9 @@
"The method's offset is greater than the virtual table size");
((void**)meth->classDef->virtualVT)[offset] = val;
} else {
+#ifndef MULTIPLE_VM
meth->classDef->initialiseClass(JavaThread::get()->isolate);
+#endif
}
return false;
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp Fri Aug 29 01:13:39 2008
@@ -401,15 +401,14 @@
}
-ArrayObject* NativeUtil::getExceptionTypes(JavaMethod* meth) {
+ArrayObject* NativeUtil::getExceptionTypes(UserClass* cl, JavaMethod* meth) {
Attribut* exceptionAtt = meth->lookupAttribut(Attribut::exceptionsAttribut);
Jnjvm* vm = JavaThread::get()->isolate;
if (exceptionAtt == 0) {
return ArrayObject::acons(0, vm->upcalls->classArrayClass,
&(JavaThread::get()->isolate->allocator));
} else {
- Class* cl = meth->classDef;
- JavaConstantPool* ctp = cl->getConstantPool();
+ UserConstantPool* ctp = cl->getConstantPool();
Reader reader(exceptionAtt, cl->getBytes());
uint16 nbe = reader.readU2();
ArrayObject* res = ArrayObject::acons(nbe, vm->upcalls->classArrayClass,
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.h?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.h Fri Aug 29 01:13:39 2008
@@ -35,7 +35,7 @@
static JavaObject* getClassType(JnjvmClassLoader* loader, Typedef* type);
static ArrayObject* getParameterTypes(JnjvmClassLoader* loader, JavaMethod* meth);
- static ArrayObject* getExceptionTypes(JavaMethod* meth);
+ static ArrayObject* getExceptionTypes(UserClass* cl, JavaMethod* meth);
};
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/VirtualTables.cpp?rev=55527&r1=55526&r2=55527&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/VirtualTables.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/VirtualTables.cpp Fri Aug 29 01:13:39 2008
@@ -20,6 +20,10 @@
#ifdef SERVICE_VM
#include "ServiceDomain.h"
#endif
+#ifdef MULTIPLE_VM
+#include "SharedMaps.h"
+#include "IsolateSharedLoader.h"
+#endif
using namespace jnjvm;
@@ -35,6 +39,13 @@
INIT(ClassMap);
INIT(JnjvmBootstrapLoader);
INIT(JnjvmClassLoader);
+#ifdef MULTIPLE_VM
+ INIT(JnjvmSharedLoader);
+ INIT(SharedClassByteMap);
+ INIT(SharedClassNameMap);
+ INIT(UserClass);
+ INIT(UserClassArray);
+#endif
#ifdef SERVICE_VM
INIT(ServiceDomain);
#endif
@@ -98,7 +109,7 @@
appClassLoader->MARK_AND_TRACE;
TRACE_VECTOR(JavaObject*, gc_allocator, globalRefs);
bootstrapThread->MARK_AND_TRACE;
- JnjvmClassLoader::bootstrapLoader->MARK_AND_TRACE;
+ bootstrapLoader->MARK_AND_TRACE;
}
void ClassMap::TRACER {
@@ -137,6 +148,38 @@
#endif
}
+#ifdef MULTIPLE_VM
+void UserClass::TRACER {
+ classLoader->MARK_AND_TRACE;
+ delegatee->MARK_AND_TRACE;
+ staticInstance->MARK_AND_TRACE;
+}
+
+void UserClassPrimitive::TRACER {
+ classLoader->MARK_AND_TRACE;
+ delegatee->MARK_AND_TRACE;
+}
+
+void UserClassArray::TRACER {
+ classLoader->MARK_AND_TRACE;
+ delegatee->MARK_AND_TRACE;
+}
+
+void SharedClassByteMap::TRACER {
+ for (iterator i = map.begin(), e = map.end(); i!= e; ++i) {
+ i->first->MARK_AND_TRACE;
+ }
+}
+
+void SharedClassNameMap::TRACER {
+}
+
+void JnjvmSharedLoader::TRACER {
+ byteClasses->MARK_AND_TRACE;
+ nameClasses->MARK_AND_TRACE;
+}
+#endif
+
#ifdef SERVICE_VM
void ServiceDomain::TRACER {
JavaIsolate::PARENT_TRACER;
More information about the vmkit-commits
mailing list