[vmkit-commits] [vmkit] r55285 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMClass.cpp.inc Classpath/ClasspathVMThrowable.cpp.inc VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaRuntimeJIT.cpp VMCore/JnjvmClassLoader.cpp VMCore/JnjvmModuleProvider.cpp VMCore/NativeUtil.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Aug 24 09:23:57 PDT 2008
Author: geoffray
Date: Sun Aug 24 11:23:56 2008
New Revision: 55285
URL: http://llvm.org/viewvc/llvm-project?rev=55285&view=rev
Log:
Add assessors to fields in Class.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc Sun Aug 24 11:23:56 2008
@@ -342,32 +342,6 @@
return (jobject)ret;
}
-static void resolveInnerOuterClasses(Class* cl) {
- Attribut* attribut = cl->lookupAttribut(Attribut::innerClassesAttribut);
- if (attribut != 0) {
- Reader reader(attribut, cl->bytes);
-
- uint16 nbi = reader.readU2();
- for (uint16 i = 0; i < nbi; ++i) {
- uint16 inner = reader.readU2();
- uint16 outer = reader.readU2();
- //uint16 innerName =
- reader.readU2();
- uint16 accessFlags = reader.readU2();
- Class* clInner = (Class*)cl->ctpInfo->loadClass(inner);
- Class* clOuter = (Class*)cl->ctpInfo->loadClass(outer);
-
- if (clInner == cl) {
- cl->outerClass = clOuter;
- } else if (clOuter == cl) {
- clInner->innerAccess = accessFlags;
- cl->innerClasses.push_back(clInner);
- }
- }
- }
- cl->innerOuterResolved = true;
-}
-
JNIEXPORT jclass JNICALL Java_java_lang_VMClass_getDeclaringClass(
#ifdef NATIVE_JNI
@@ -377,10 +351,10 @@
jclass Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
Class* cl = (Class*)NativeUtil::resolvedImplClass(Cl, false);
- if (!(cl->innerOuterResolved))
- resolveInnerOuterClasses(cl);
- if (cl->outerClass) {
- return (jclass)vm->getClassDelegatee(cl->outerClass);
+ cl->resolveInnerOuterClasses();
+ Class* outer = cl->getOuterClass();
+ if (outer) {
+ return (jclass)vm->getClassDelegatee(outer);
} else {
return 0;
}
@@ -394,12 +368,12 @@
jclass Cl, bool publicOnly) {
Jnjvm* vm = JavaThread::get()->isolate;
Class* cl = (Class*)NativeUtil::resolvedImplClass(Cl, false);
- if (!(cl->innerOuterResolved))
- resolveInnerOuterClasses(cl);
- ArrayObject* res = ArrayObject::acons(cl->innerClasses.size(), Classpath::constructorArrayClass, &(vm->allocator));
+ cl->resolveInnerOuterClasses();
+ std::vector<Class*>* innerClasses = cl->getInnerClasses();
+ ArrayObject* res = ArrayObject::acons(innerClasses->size(), Classpath::constructorArrayClass, &(vm->allocator));
uint32 index = 0;
- for (std::vector<Class*>::iterator i = cl->innerClasses.begin(),
- e = cl->innerClasses.end(); i!= e; i++) {
+ for (std::vector<Class*>::iterator i = innerClasses->begin(),
+ e = innerClasses->end(); i!= e; i++) {
res->elements[index++] = vm->getClassDelegatee(*i);
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc Sun Aug 24 11:23:56 2008
@@ -57,9 +57,9 @@
Attribut* sourceAtt = cl->lookupAttribut(Attribut::sourceFileAttribut);
if (sourceAtt) {
- Reader reader(sourceAtt, cl->bytes);
+ Reader reader(sourceAtt, cl->getBytes());
uint16 index = reader.readU2();
- sourceName = vm->UTF8ToStr(cl->ctpInfo->UTF8At(index));
+ sourceName = vm->UTF8ToStr(cl->getConstantPool()->UTF8At(index));
}
bool native = isNative(meth->access);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sun Aug 24 11:23:56 2008
@@ -762,3 +762,31 @@
}
}
}
+
+void Class::resolveInnerOuterClasses() {
+ if (!innerOuterResolved) {
+ Attribut* attribut = lookupAttribut(Attribut::innerClassesAttribut);
+ if (attribut != 0) {
+ Reader reader(attribut, bytes);
+
+ uint16 nbi = reader.readU2();
+ for (uint16 i = 0; i < nbi; ++i) {
+ uint16 inner = reader.readU2();
+ uint16 outer = reader.readU2();
+ //uint16 innerName =
+ reader.readU2();
+ uint16 accessFlags = reader.readU2();
+ Class* clInner = (Class*)ctpInfo->loadClass(inner);
+ Class* clOuter = (Class*)ctpInfo->loadClass(outer);
+
+ if (clInner == this) {
+ outerClass = clOuter;
+ } else if (clOuter == this) {
+ clInner->innerAccess = accessFlags;
+ innerClasses.push_back(clInner);
+ }
+ }
+ }
+ innerOuterResolved = true;
+ }
+}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Sun Aug 24 11:23:56 2008
@@ -572,6 +572,30 @@
/// readClass - Reads the class.
///
void readClass();
+
+
+ JavaConstantPool* getConstantPool() {
+ return ctpInfo;
+ }
+
+ ArrayUInt8* getBytes() {
+ return bytes;
+ }
+
+ void setBytes(ArrayUInt8* B) {
+ bytes = B;
+ status = loaded;
+ }
+
+ void resolveInnerOuterClasses();
+
+ Class* getOuterClass() {
+ return outerClass;
+ }
+
+ std::vector<Class*>* getInnerClasses() {
+ return &innerClasses;
+ }
};
/// ClassArray - This class represents Java array classes.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Sun Aug 24 11:23:56 2008
@@ -32,7 +32,8 @@
#ifdef MULTIPLE_VM
extern "C" JavaString* stringLookup(Class* cl, uint32 index) {
- const UTF8* utf8 = cl->ctpInfo->UTF8At(cl->ctpInfo->ctpDef[index]);
+ JavaConstantPool* ctpInfo = cl->getConstantPool();
+ const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[index]);
JavaString* str = JavaThread::get()->isolate->UTF8ToStr(utf8);
return str;
}
@@ -94,7 +95,7 @@
extern "C" void* fieldLookup(JavaObject* obj, Class* caller, uint32 index,
uint32 stat) {
- JavaConstantPool* ctpInfo = caller->ctpInfo;
+ JavaConstantPool* ctpInfo = caller->getConstantPool();
if (ctpInfo->ctpRes[index]) {
return ctpInfo->ctpRes[index];
}
@@ -198,7 +199,7 @@
}
extern "C" Class* newLookup(Class* caller, uint32 index) {
- JavaConstantPool* ctpInfo = caller->ctpInfo;
+ JavaConstantPool* ctpInfo = caller->getConstantPool();
Class* cl = (Class*)ctpInfo->loadClass(index);
return cl;
}
@@ -209,7 +210,7 @@
const UTF8* utf8 = 0;
Signdef* sign = 0;
- caller->ctpInfo->resolveMethod(index, cl, utf8, sign);
+ caller->getConstantPool()->resolveMethod(index, cl, utf8, sign);
JavaMethod* dmeth = cl->lookupMethodDontThrow(utf8, sign->keyName, false,
true);
assert(obj->classOf->isReady() && "Class not ready in a virtual lookup.");
@@ -218,7 +219,7 @@
// on the object class and do not update offset.
dmeth = obj->classOf->lookupMethod(utf8, sign->keyName, false, true);
} else {
- caller->ctpInfo->ctpRes[index] = (void*)dmeth->offset;
+ caller->getConstantPool()->ctpRes[index] = (void*)dmeth->offset;
}
assert(dmeth->classDef->isReady() && "Class not ready in a virtual lookup.");
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Sun Aug 24 11:23:56 2008
@@ -144,8 +144,7 @@
if (cl->status == hashed) {
cl->acquire();
if (cl->status == hashed) {
- cl->status = loaded;
- ((Class*)cl)->bytes = bytes;
+ ((Class*)cl)->setBytes(bytes);
}
cl->release();
}
@@ -302,15 +301,13 @@
if (I == End) {
res = allocator_new(allocator, Class)(this, name);
if (bytes) {
- res->bytes = bytes;
- res->status = loaded;
+ res->setBytes(bytes);
}
classes->map.insert(std::make_pair(name, res));
} else {
res = ((Class*)(I->second));
if (res->status == hashed && bytes) {
- res->bytes = bytes;
- res->status = loaded;
+ res->setBytes(bytes);
}
}
classes->lock->unlock();
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp Sun Aug 24 11:23:56 2008
@@ -26,7 +26,7 @@
using namespace jnjvm;
JavaMethod* JnjvmModuleProvider::staticLookup(Class* caller, uint32 index) {
- JavaConstantPool* ctpInfo = caller->ctpInfo;
+ JavaConstantPool* ctpInfo = caller->getConstantPool();
bool isStatic = ctpInfo->isAStaticCall(index);
@@ -157,7 +157,7 @@
llvm::Function* JnjvmModuleProvider::addCallback(Class* cl, uint32 index,
Signdef* sign, bool stat) {
- void* key = &(cl->ctpInfo->ctpRes[index]);
+ void* key = &(cl->getConstantPool()->ctpRes[index]);
reverse_callback_iterator CI = reverseCallbacks.find(key);
if (CI != reverseCallbacks.end()) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp?rev=55285&r1=55284&r2=55285&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Sun Aug 24 11:23:56 2008
@@ -404,8 +404,8 @@
&(JavaThread::get()->isolate->allocator));
} else {
Class* cl = meth->classDef;
- JavaConstantPool* ctp = cl->ctpInfo;
- Reader reader(exceptionAtt, cl->bytes);
+ JavaConstantPool* ctp = cl->getConstantPool();
+ Reader reader(exceptionAtt, cl->getBytes());
uint16 nbe = reader.readU2();
ArrayObject* res = ArrayObject::acons(nbe, Classpath::classArrayClass,
&(JavaThread::get()->isolate->allocator));
More information about the vmkit-commits
mailing list