[vmkit-commits] [vmkit] r139482 - in /vmkit/trunk/lib/J3: Classpath/ClasspathMethod.inc Classpath/ClasspathVMClass.inc Classpath/JavaUpcalls.cpp Classpath/JavaUpcalls.h Compiler/JavaAOTCompiler.cpp LLVMRuntime/runtime-single.ll VMCore/JavaAccess.h VMCore/JavaClass.cpp VMCore/JavaClass.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Sep 11 09:22:57 PDT 2011
Author: geoffray
Date: Sun Sep 11 11:22:56 2011
New Revision: 139482
URL: http://llvm.org/viewvc/llvm-project?rev=139482&view=rev
Log:
Small fixes again.
Modified:
vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll
vmkit/trunk/lib/J3/VMCore/JavaAccess.h
vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
vmkit/trunk/lib/J3/VMCore/JavaClass.h
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Sun Sep 11 11:22:56 2011
@@ -168,13 +168,8 @@
exc = th->getJavaException(); \
} END_CATCH; \
if (exc) { \
- if (JavaObject::getClass(exc)->isAssignableFrom( \
- vm->upcalls->newException)) { \
- th->clearException(); \
- th->getJVM()->invocationTargetException(exc); \
- } else { \
- th->throwPendingException(); \
- } \
+ th->clearException(); \
+ th->getJVM()->invocationTargetException(exc); \
return NULL; \
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc Sun Sep 11 11:22:56 2011
@@ -216,6 +216,11 @@
UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
res = cl->getAccess();
+ if (isEnum(res) && cl->getSuper() != vm->upcalls->EnumClass) {
+ // javac may put that flag to inner classes of enum classes.
+ res &= ~ACC_ENUM;
+ }
+
END_NATIVE_EXCEPTION
return res;
}
Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp Sun Sep 11 11:22:56 2011
@@ -190,6 +190,7 @@
JavaMethod* Classpath::SystemArraycopy;
JavaMethod* Classpath::VMSystemArraycopy;
Class* Classpath::SystemClass;
+Class* Classpath::EnumClass;
JavaMethod* Classpath::ErrorWithExcpNoClassDefFoundError;
JavaMethod* Classpath::ErrorWithExcpExceptionInInitializerError;
@@ -838,6 +839,7 @@
ACC_STATIC);
SystemClass = UPCALL_CLASS(loader, "java/lang/System");
+ EnumClass = UPCALL_CLASS(loader, "java/lang/Enum");
newThread =
UPCALL_CLASS(loader, "java/lang/Thread");
Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h Sun Sep 11 11:22:56 2011
@@ -103,6 +103,7 @@
ISOLATE_STATIC UserClass* newDirectByteBuffer;
ISOLATE_STATIC JavaMethod* InitDirectByteBuffer;
ISOLATE_STATIC JavaField* vmdataClassLoader;
+ ISOLATE_STATIC UserClass* enumClass;
ISOLATE_STATIC JavaField* boolValue;
ISOLATE_STATIC JavaField* byteValue;
@@ -264,6 +265,8 @@
ISOLATE_STATIC JavaMethod* EnqueueReference;
ISOLATE_STATIC Class* newReference;
+ ISOLATE_STATIC UserClass* EnumClass;
+
private:
ISOLATE_STATIC void CreateJavaThread(Jnjvm* vm, JavaThread* myth,
const char* name, JavaObject* Group);
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Sep 11 11:22:56 2011
@@ -896,7 +896,7 @@
CommonClassElts.push_back(ConstantArray::get(ATy, TCM));
// access
- CommonClassElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), cl->access));
+ CommonClassElts.push_back(ConstantInt::get(Type::getInt32Ty(getLLVMContext()), cl->access));
// interfaces
if (cl->nbInterfaces) {
Modified: vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll (original)
+++ vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll Sun Sep 11 11:22:56 2011
@@ -2,7 +2,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;; Isolate specific types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-%JavaCommonClass = type { [1 x %JavaObject*], i16,
+%JavaCommonClass = type { [1 x %JavaObject*], i32,
%JavaClass**, i16, %UTF8*, %JavaClass*, i8*, %VT* }
%ClassBytes = type { i32, i8* }
Modified: vmkit/trunk/lib/J3/VMCore/JavaAccess.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaAccess.h?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaAccess.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaAccess.h Sun Sep 11 11:22:56 2011
@@ -32,10 +32,11 @@
#define ACC_ABSTRACT 0x0400
#define ACC_STRICT 0x0800
#define ACC_SYNTHETIC 0x1000
+#define ACC_ENUM 0x4000
-#define JNJVM_CLASS 0x1000
-#define JNJVM_ARRAY 0x2000
-#define JNJVM_PRIMITIVE 0x4000
+#define JNJVM_CLASS 0x10000
+#define JNJVM_ARRAY 0x20000
+#define JNJVM_PRIMITIVE 0x40000
#define MK_VERIFIER(name, flag) \
inline bool name(unsigned int param) { \
@@ -53,6 +54,7 @@
MK_VERIFIER(isFinal, ACC_FINAL)
MK_VERIFIER(isSuper, ACC_SUPER)
MK_VERIFIER(isSynthetic, ACC_SYNTHETIC)
+MK_VERIFIER(isEnum, ACC_ENUM)
inline bool isVirtual(unsigned int param) {
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Sun Sep 11 11:22:56 2011
@@ -884,7 +884,7 @@
uint32 ctpSize = reader.readU2();
ctpInfo = new(classLoader->allocator, ctpSize) JavaConstantPool(this, reader,
ctpSize);
- access |= (reader.readU2() & 0x0FFF);
+ access |= reader.readU2();
if (!isPublic(access)) access |= ACC_PRIVATE;
@@ -1559,7 +1559,14 @@
} else {
// If the super is not a secondary type and the base class does not
// implement any interface, we can reuse the list of secondary types
- // of super.
+ // of super. If the base class is a primitive, the array class shares
+ // the same secondary types than the super of the current superVT
+ // (eg Object[][] for int[][]).
+ if (base->isPrimitive()) {
+ const UTF8* superName = JCL->constructArrayName(dim + 1, C->super->name);
+ super = JCL->constructArray(superName);
+ superVT = super->virtualVT;
+ }
nbSecondaryTypes = superVT->nbSecondaryTypes;
secondaryTypes = superVT->secondaryTypes;
}
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.h?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.h Sun Sep 11 11:22:56 2011
@@ -174,7 +174,7 @@
/// access - {public, private, protected}.
///
- uint16 access;
+ uint32 access;
/// interfaces - The interfaces this class implements.
///
@@ -209,7 +209,7 @@
}
// Assessor methods.
- uint32 getAccess() const { return access; }
+ uint32 getAccess() const { return access & 0xFFFF; }
Class** getInterfaces() const { return interfaces; }
const UTF8* getName() const { return name; }
Class* getSuper() const { return super; }
More information about the vmkit-commits
mailing list