[vmkit-commits] [PATCH] Hook JnjvmClassLoader to make use of appropriate Classpath

Will Dietz wdietz2 at illinois.edu
Tue Oct 25 17:31:47 PDT 2011


Inlined below.

Note that even with the previous versioning patch this still fails to
load libjava.so because we don't actually export the required JVM_*
symbols yet :).

~Will

>From 955540d76d1b0e4e819e1cc70ee8b306da2f05f9 Mon Sep 17 00:00:00 2001
From: Will Dietz <w at wdtz.org>
Date: Fri, 14 Oct 2011 05:19:58 -0500
Subject: [PATCH 3/3] Hook JnjvmClassLoader to make use of OpenJDK stuff for
 an OpenJDK build.

---
 lib/J3/ClassLib/Classpath.h.in          |    6 ++++++
 lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp |    4 ++++
 lib/J3/VMCore/JnjvmClassLoader.cpp      |    4 ++--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/J3/ClassLib/Classpath.h.in b/lib/J3/ClassLib/Classpath.h.in
index 67a3f9f..e0e628f 100644
--- a/lib/J3/ClassLib/Classpath.h.in
+++ b/lib/J3/ClassLib/Classpath.h.in
@@ -17,6 +17,9 @@
 #define GNUClasspathGlibj "@classpathglibj@"
 #define GNUClasspathVersion "@classpathversion@"

+#define ClasslibBootEnv GNUClasspathGlibj
+#define ClasslibLibEnv GNUClasspathLibs
+
 #else

 // OpenJDK values
@@ -45,4 +48,7 @@
   ":" "/usr/lib" \
   ":" "/usr/lib64"

+#define ClasslibBootEnv OpenJDKBootPath
+#define ClasslibLibEnv OpenJDKLibPaths
+
 #endif // USE_OPENJDK
diff --git a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
index 11226b3..7ffe434 100644
--- a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
+++ b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
@@ -7,6 +7,7 @@
 //
 //===----------------------------------------------------------------------===//

+#include "Classpath.h"
 #include "ClasspathReflect.h"
 #include "JavaAccess.h"
 #include "JavaClass.h"
@@ -538,6 +539,9 @@ extern "C" JavaString*
Java_java_lang_VMSystem_getenv__Ljava_lang_String_2(JavaS

 void Classpath::initialiseClasspath(JnjvmClassLoader* loader) {

+  // Load OpenJDK's libjava.so
+  assert(loader->loadLib(OpenJDKLibJava));
+
   newClassLoader =
     UPCALL_CLASS(loader, "java/lang/ClassLoader");

diff --git a/lib/J3/VMCore/JnjvmClassLoader.cpp
b/lib/J3/VMCore/JnjvmClassLoader.cpp
index 98d9897..f5d01c5 100644
--- a/lib/J3/VMCore/JnjvmClassLoader.cpp
+++ b/lib/J3/VMCore/JnjvmClassLoader.cpp
@@ -61,8 +61,8 @@
JnjvmBootstrapLoader::JnjvmBootstrapLoader(mvm::BumpPtrAllocator&
Alloc,
   javaSignatures = new(allocator, "SignMap") SignMap();
   strings = new(allocator, "StringList") StringList();

-  bootClasspathEnv = GNUClasspathGlibj;
-  libClasspathEnv = GNUClasspathLibs;
+  bootClasspathEnv = ClasslibBootEnv;
+  libClasspathEnv = ClasslibLibEnv;

   upcalls = new(allocator, "Classpath") Classpath();
   bootstrapLoader = this;
-- 
1.7.5.1



More information about the vmkit-commits mailing list