[vmkit-commits] [vmkit] r55771 - in /vmkit/branches/isolate/lib/JnJVM/Isolate: IsolateCommonClass.cpp IsolateCommonClass.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Sep 4 09:45:09 PDT 2008
Author: geoffray
Date: Thu Sep 4 11:45:06 2008
New Revision: 55771
URL: http://llvm.org/viewvc/llvm-project?rev=55771&view=rev
Log:
Implement UserClassArray resolution methods.
Modified:
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h
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=55771&r1=55770&r2=55771&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp Thu Sep 4 11:45:06 2008
@@ -195,23 +195,18 @@
return alloc->allocateObject(sz + size * sizeof(void*), VT);
}
-AssessorDesc* UserClassArray::funcs() {
- fprintf(stderr, "implement me");
- abort();
- return 0;
-}
-
-
UserClassPrimitive* AssessorDesc::getPrimitiveClass() const {
- fprintf(stderr, "implement me");
- abort();
- return 0;
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserClassArray* arrayCl = vm->arrayClasses[numId];
+ UserClassPrimitive* cl = (UserClassPrimitive*)arrayCl->baseClass();
+ assert(cl && "Primitive array class does not have a primitive.");
+ return cl;
}
UserClassArray* AssessorDesc::getArrayClass() const {
- fprintf(stderr, "implement me");
- abort();
- return 0;
+ Jnjvm* vm = JavaThread::get()->isolate;
+ UserClassArray* arrayCl = vm->arrayClasses[numId];
+ return arrayCl;
}
JavaMethod* UserCommonClass::lookupMethodDontThrow(const UTF8* name,
@@ -309,3 +304,9 @@
}
return res;
}
+
+void UserConstantPool::print(mvm::PrintBuffer* buf) const {
+ buf->write("User constant pool of <");
+ getClass()->classDef->print(buf);
+ buf->write(">");
+}
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=55771&r1=55770&r2=55771&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h Thu Sep 4 11:45:06 2008
@@ -360,7 +360,11 @@
return _baseClass;
}
- AssessorDesc* funcs();
+ AssessorDesc* funcs() {
+ if (_funcs == 0)
+ resolveComponent();
+ return _funcs;
+ }
};
class UserClassPrimitive : public UserCommonClass {
@@ -394,17 +398,17 @@
void resolveField(uint32 index, UserCommonClass*& cl, const UTF8*& utf8,
Typedef*& sign);
- UserClass* getClass() {
+ UserClass* getClass() const {
return (UserClass*)ctpRes[0];
}
- JavaConstantPool* getSharedPool() {
+ JavaConstantPool* getSharedPool() const {
return ((Class*)(getClass()->classDef))->ctpInfo;
}
/// UTF8At - Get the UTF8 referenced from this string entry.
///
- const UTF8* UTF8AtForString(uint32 entry) {
+ const UTF8* UTF8AtForString(uint32 entry) const {
return getSharedPool()->UTF8AtForString(entry);
}
@@ -423,6 +427,8 @@
UserCommonClass* isClassLoaded(uint32 entry);
+ virtual void print(mvm::PrintBuffer *buf) const;
+
};
} // end namespace jnjvm
More information about the vmkit-commits
mailing list