[vmkit-commits] [vmkit] r70854 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMClassLoader.cpp VMCore/JavaUpcalls.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon May 4 05:40:20 PDT 2009


Author: geoffray
Date: Mon May  4 07:40:11 2009
New Revision: 70854

URL: http://llvm.org/viewvc/llvm-project?rev=70854&view=rev
Log:
Implement getBootPackages.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp?rev=70854&r1=70853&r2=70854&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp Mon May  4 07:40:11 2009
@@ -15,6 +15,7 @@
 #include "JavaObject.h"
 #include "JavaString.h"
 #include "JavaThread.h"
+#include "JavaUpcalls.h"
 #include "Jnjvm.h"
 
 using namespace jnjvm;
@@ -158,4 +159,188 @@
   END_NATIVE_EXCEPTION
 }
 
+#define NUM_BOOT_PACKAGES 168
+
+static const char* bootPackages[NUM_BOOT_PACKAGES] = {
+				"java.applet",
+				"java.awt",
+				"java.awt.color",
+				"java.awt.datatransfer",
+				"java.awt.dnd",
+				"java.awt.dnd.peer",
+				"java.awt.event",
+				"java.awt.font",
+				"java.awt.geom",
+				"java.awt.im",
+				"java.awt.im.spi",
+				"java.awt.image",
+				"java.awt.image.renderable",
+				"java.awt.peer",
+				"java.awt.print",
+				"java.beans",
+				"java.beans.beancontext",
+				"java.io",
+				"java.lang",
+				"java.lang.annotation",
+				"java.lang.instrument",
+				"java.lang.management",
+				"java.lang.ref",
+				"java.lang.reflect",
+				"java.math",
+				"java.net",
+				"java.nio",
+				"java.nio.channels",
+				"java.nio.channels.spi",
+				"java.nio.charset",
+				"java.nio.charset.spi",
+				"java.rmi",
+				"java.rmi.activation",
+				"java.rmi.dgc",
+				"java.rmi.registry",
+				"java.rmi.server",
+				"java.security",
+				"java.security.acl",
+				"java.security.cert",
+				"java.security.interfaces",
+				"java.security.spec",
+				"java.sql",
+				"java.text",
+				"java.util",
+				"java.util.concurrent",
+				"java.util.concurrent.atomic",
+				"java.util.concurrent.locks",
+				"java.util.jar",
+				"java.util.logging",
+				"java.util.prefs",
+				"java.util.regex",
+				"java.util.zip",
+				"javax.accessibility",
+				"javax.activity",
+				"javax.crypto",
+				"javax.crypto.interfaces",
+				"javax.crypto.spec",
+				"javax.imageio",
+				"javax.imageio.event",
+				"javax.imageio.metadata",
+				"javax.imageio.plugins.bmp",
+				"javax.imageio.plugins.jpeg",
+				"javax.imageio.spi",
+				"javax.imageio.stream",
+				"javax.management",
+				"javax.management.loading",
+				"javax.management.modelmbean",
+				"javax.management.monitor",
+				"javax.management.openmbean",
+				"javax.management.relation",
+				"javax.management.remote",
+				"javax.management.remote.rmi",
+				"javax.management.timer",
+				"javax.naming",
+				"javax.naming.directory",
+				"javax.naming.event",
+				"javax.naming.ldap",
+				"javax.naming.spi",
+				"javax.net",
+				"javax.net.ssl",
+				"javax.print",
+				"javax.print.attribute",
+				"javax.print.attribute.standard",
+				"javax.print.event",
+				"javax.rmi",
+				"javax.rmi.CORBA",
+				"javax.rmi.ssl",
+				"javax.security.auth",
+				"javax.security.auth.callback",
+				"javax.security.auth.kerberos",
+				"javax.security.auth.login",
+				"javax.security.auth.spi",
+				"javax.security.auth.x500",
+				"javax.security.cert",
+				"javax.security.sasl",
+				"javax.sound.midi",
+				"javax.sound.midi.spi",
+				"javax.sound.sampled",
+				"javax.sound.sampled.spi",
+				"javax.sql",
+				"javax.sql.rowset",
+				"javax.sql.rowset.serial",
+				"javax.sql.rowset.spi",
+				"javax.swing",
+				"javax.swing.border",
+				"javax.swing.colorchooser",
+				"javax.swing.event",
+				"javax.swing.filechooser",
+				"javax.swing.plaf",
+				"javax.swing.plaf.basic",
+				"javax.swing.plaf.metal",
+				"javax.swing.plaf.multi",
+				"javax.swing.plaf.synth",
+				"javax.swing.table",
+				"javax.swing.text",
+				"javax.swing.text.html",
+				"javax.swing.text.html.parser",
+				"javax.swing.text.rtf",
+				"javax.swing.tree",
+				"javax.swing.undo",
+				"javax.transaction",
+				"javax.transaction.xa",
+				"javax.xml",
+				"javax.xml.datatype",
+				"javax.xml.namespace",
+				"javax.xml.parsers",
+				"javax.xml.transform",
+				"javax.xml.transform.dom",
+				"javax.xml.transform.sax",
+				"javax.xml.transform.stream",
+				"javax.xml.validation",
+				"javax.xml.xpath",
+				"org.ietf.jgss",
+				"org.omg.CORBA",
+				"org.omg.CORBA_2_3",
+				"org.omg.CORBA_2_3.portable",
+				"org.omg.CORBA.DynAnyPackage",
+				"org.omg.CORBA.ORBPackage",
+				"org.omg.CORBA.portable",
+				"org.omg.CORBA.TypeCodePackage",
+				"org.omg.CosNaming",
+				"org.omg.CosNaming.NamingContextExtPackage",
+				"org.omg.CosNaming.NamingContextPackage",
+				"org.omg.Dynamic",
+				"org.omg.DynamicAny",
+				"org.omg.DynamicAny.DynAnyFactoryPackage",
+				"org.omg.DynamicAny.DynAnyPackage",
+				"org.omg.IOP",
+				"org.omg.IOP.CodecFactoryPackage",
+				"org.omg.IOP.CodecPackage",
+				"org.omg.Messaging",
+				"org.omg.PortableInterceptor",
+				"org.omg.PortableInterceptor.ORBInitInfoPackage",
+				"org.omg.PortableServer",
+				"org.omg.PortableServer.CurrentPackage",
+				"org.omg.PortableServer.POAManagerPackage",
+				"org.omg.PortableServer.POAPackage",
+				"org.omg.PortableServer.portable",
+				"org.omg.PortableServer.ServantLocatorPackage",
+				"org.omg.SendingContext",
+				"org.omg.stub.java.rmi",
+				"org.w3c.dom",
+				"org.w3c.dom.bootstrap",
+				"org.w3c.dom.events",
+				"org.w3c.dom.ls",
+				"org.xml.sax",
+				"org.xml.sax.ext",
+				"org.xml.sax.helpers"
+};
+
+extern "C" ArrayObject* nativeGetBootPackages() {
+  Jnjvm* vm = JavaThread::get()->getJVM();
+  ArrayObject* obj = 
+    (ArrayObject*)vm->upcalls->ArrayOfString->doNew(NUM_BOOT_PACKAGES, vm);
+  for (uint32 i = 0; i < NUM_BOOT_PACKAGES; ++i) {
+    obj->elements[i] = vm->asciizToStr(bootPackages[i]);
+  }
+  return obj;
+}
+
+
 }

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=70854&r1=70853&r2=70854&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp Mon May  4 07:40:11 2009
@@ -344,6 +344,9 @@
   JavaObjectVMThread::staticDestructor(obj);
 }
 
+// Defined in Classpath/ClasspathVMClassLoader.cpp
+extern "C" ArrayObject* nativeGetBootPackages();
+
 void Classpath::initialiseClasspath(JnjvmClassLoader* loader) {
 
   newClassLoader = 
@@ -745,6 +748,12 @@
   getAnnotations->setCompiledPtr((void*)(intptr_t)nativeGetDeclaredAnnotations,
                                  "nativeGetDeclaredAnnotations");
   
+  JavaMethod* getBootPackages =
+    UPCALL_METHOD(loader, "java/lang/VMClassLoader", "getBootPackages",
+                  "()[Ljava/lang/String;", ACC_STATIC);
+  getBootPackages->setCompiledPtr((void*)(intptr_t)nativeGetBootPackages,
+                                  "nativeGetBootPackages");
+  
   //===----------------------------------------------------------------------===//
   //
   // To make classes non GC-allocated, we have to bypass the tracer functions of





More information about the vmkit-commits mailing list