[vmkit-commits] [vmkit] r146103 - in /vmkit/trunk/lib/j3/ClassLib/OpenJDK: JavaUpcalls.cpp JavaUpcalls.h OpenJDK.inc
Will Dietz
wdietz2 at illinois.edu
Wed Dec 7 15:34:33 PST 2011
Author: wdietz2
Date: Wed Dec 7 17:34:33 2011
New Revision: 146103
URL: http://llvm.org/viewvc/llvm-project?rev=146103&view=rev
Log:
Impl JVM_AssertionStatusDirectives (empty fields)
Modified:
vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp
vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h
vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp?rev=146103&r1=146102&r2=146103&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp Wed Dec 7 17:34:33 2011
@@ -187,6 +187,7 @@
Class* Classpath::SystemClass;
JavaMethod* Classpath::initSystem;
Class* Classpath::EnumClass;
+Class* Classpath::assertionStatusDirectivesClass;
JavaMethod* Classpath::ErrorWithExcpNoClassDefFoundError;
JavaMethod* Classpath::ErrorWithExcpExceptionInInitializerError;
@@ -778,6 +779,9 @@
SystemClass = UPCALL_CLASS(loader, "java/lang/System");
EnumClass = UPCALL_CLASS(loader, "java/lang/Enum");
+ assertionStatusDirectivesClass =
+ UPCALL_CLASS(loader, "java/lang/AssertionStatusDirectives");
+
cloneableClass = UPCALL_CLASS(loader, "java/lang/Cloneable");
ReflectInvokeMethod =
@@ -983,9 +987,15 @@
}
abort();
}
+
+ // resolve and initialize misc classes
+ assertionStatusDirectivesClass->resolveClass();
+ assertionStatusDirectivesClass->initialiseClass(jvm);
+
}
+
#include "ClasspathConstructor.inc"
#include "ClasspathField.inc"
#include "ClasspathMethod.inc"
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h?rev=146103&r1=146102&r2=146103&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h Wed Dec 7 17:34:33 2011
@@ -268,6 +268,7 @@
ISOLATE_STATIC JavaMethod* threadStart;
ISOLATE_STATIC UserClass* EnumClass;
+ ISOLATE_STATIC UserClass* assertionStatusDirectivesClass;
private:
ISOLATE_STATIC void CreateJavaThread(Jnjvm* vm, JavaThread* myth,
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc?rev=146103&r1=146102&r2=146103&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/OpenJDK.inc Wed Dec 7 17:34:33 2011
@@ -1967,7 +1967,33 @@
*/
JNIEXPORT jobject JNICALL
JVM_AssertionStatusDirectives(JNIEnv *env, jclass unused) {
- NYI();
+ JavaObject* asdObj = 0;
+ JavaObject* emptyStringArr = 0;
+ llvm_gcroot(asdObj, 0);
+ llvm_gcroot(emptyStringArr, 0);
+ BEGIN_JNI_EXCEPTION
+
+ Jnjvm* vm = th->getJVM();
+ UserClass * asdCl = vm->upcalls->assertionStatusDirectivesClass;
+ asdObj = asdCl->doNew(vm);
+
+ emptyStringArr = vm->upcalls->ArrayOfString->doNew(0, vm);
+
+ const UTF8 * classesName = asdCl->classLoader->hashUTF8->lookupAsciiz("classes");
+ const UTF8 * packagesName = asdCl->classLoader->hashUTF8->lookupAsciiz("packages");
+ const UTF8 * stringArrType = asdCl->classLoader->hashUTF8->lookupAsciiz("[Ljava/lang/String;");
+ JavaField* classes = asdCl->lookupFieldDontThrow(classesName, stringArrType, false, true, 0);
+ JavaField* packages = asdCl->lookupFieldDontThrow(packagesName, stringArrType, false, true, 0);
+ assert(classes);
+ assert(packages);
+
+ classes->setInstanceObjectField(asdObj, emptyStringArr);
+ packages->setInstanceObjectField(asdObj, emptyStringArr);
+
+ RETURN_REF_FROM_JNI(asdObj, jobject);
+ END_JNI_EXCEPTION
+
+ return NULL;
}
/*
More information about the vmkit-commits
mailing list