[vmkit-commits] [PATCH] Move runtime-specific Jnjvm initialization to new JavaUpcalls method
Will Dietz
wdietz2 at illinois.edu
Wed Oct 26 18:13:20 PDT 2011
Inlined below.
OpenJDK's method for this will later include the call to
System.intializeSystemClass(), for what it's worth.
~Will
>From 88f4d3f9facb73f9a55614284f45c09bef812953 Mon Sep 17 00:00:00 2001
From: Will Dietz <w at wdtz.org>
Date: Wed, 26 Oct 2011 20:01:24 -0500
Subject: [PATCH 3/3] Move runtime-specific Jnjvm initialization to new
JavaUpcalls method.
---
lib/J3/ClassLib/GNUClasspath/JavaUpcalls.cpp | 10 ++++++++++
lib/J3/ClassLib/GNUClasspath/JavaUpcalls.h | 1 +
lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp | 5 +++++
lib/J3/ClassLib/OpenJDK/JavaUpcalls.h | 1 +
lib/J3/VMCore/Jnjvm.cpp | 5 +++--
5 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.cpp
b/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.cpp
index 3ebac59..bc797d1 100644
--- a/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.cpp
+++ b/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.cpp
@@ -1061,6 +1061,16 @@ void
Classpath::initialiseClasspath(JnjvmClassLoader* loader) {
initPhantomReference->setNative();
}
+void Classpath::InitializeSystem(Jnjvm * jvm) {
+#define LOAD_CLASS(cl) \
+ cl->resolveClass(); \
+ cl->initialiseClass(jvm);
+ LOAD_CLASS(newVMThread);
+ LOAD_CLASS(newVMThrowable);
+#undef LOAD_CLASS
+
+}
+
#include "ClasspathConstructor.inc"
#include "Classpath.inc"
#include "ClasspathField.inc"
diff --git a/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.h
b/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.h
index f30f3ac..2c355f9 100644
--- a/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.h
+++ b/lib/J3/ClassLib/GNUClasspath/JavaUpcalls.h
@@ -275,6 +275,7 @@ private:
public:
ISOLATE_STATIC void InitializeThreading(Jnjvm* vm);
+ ISOLATE_STATIC void InitializeSystem(Jnjvm* vm);
};
diff --git a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
index 99bcce5..6b68703 100644
--- a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
+++ b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp
@@ -1069,6 +1069,11 @@ void
Classpath::initialiseClasspath(JnjvmClassLoader* loader) {
initPhantomReference->setNative();
}
+void Classpath::InitializeSystem(Jnjvm * jvm) {
+ // TODO: Implement me!
+}
+
+
#include "ClasspathConstructor.inc"
#include "Classpath.inc"
#include "ClasspathField.inc"
diff --git a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h
b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h
index ae5eb63..7bb5c8e 100644
--- a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h
+++ b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.h
@@ -275,6 +275,7 @@ private:
public:
ISOLATE_STATIC void InitializeThreading(Jnjvm* vm);
+ ISOLATE_STATIC void InitializeSystem(Jnjvm* vm);
};
diff --git a/lib/J3/VMCore/Jnjvm.cpp b/lib/J3/VMCore/Jnjvm.cpp
index 4ed8bc3..4961694 100644
--- a/lib/J3/VMCore/Jnjvm.cpp
+++ b/lib/J3/VMCore/Jnjvm.cpp
@@ -1105,9 +1105,7 @@ void Jnjvm::loadBootstrap() {
LOAD_CLASS(upcalls->newConstructor);
LOAD_CLASS(upcalls->newField);
LOAD_CLASS(upcalls->newMethod);
- LOAD_CLASS(upcalls->newVMThread);
LOAD_CLASS(upcalls->newStackTraceElement);
- LOAD_CLASS(upcalls->newVMThrowable);
LOAD_CLASS(upcalls->boolClass);
LOAD_CLASS(upcalls->byteClass);
LOAD_CLASS(upcalls->charClass);
@@ -1151,6 +1149,9 @@ void Jnjvm::loadBootstrap() {
LOAD_CLASS(upcalls->SystemClass);
#undef LOAD_CLASS
+ // Implementation-specific end-of-bootstrap initialization
+ upcalls->InitializeSystem(this);
+
loadAppClassLoader();
obj = JavaThread::get()->currentThread();
javaLoader = appClassLoader->getJavaClassLoader();
--
1.7.5.1
More information about the vmkit-commits
mailing list