[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