[vmkit-commits] [vmkit] r198525 - Begin to setup system properties.
Gael Thomas
gael.thomas at lip6.fr
Sat Jan 4 16:21:28 PST 2014
Author: gthomas
Date: Sat Jan 4 18:21:28 2014
New Revision: 198525
URL: http://llvm.org/viewvc/llvm-project?rev=198525&view=rev
Log:
Begin to setup system properties.
Modified:
vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc?rev=198525&r1=198524&r2=198525&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc Sat Jan 4 18:21:28 2014
@@ -10,6 +10,7 @@
#include "jvm.h"
#include <dlfcn.h>
+#include <sys/utsname.h>
using namespace j3;
@@ -104,7 +105,17 @@ void JNICALL JVM_ArrayCopy(JNIEnv* env,
jobject JNICALL JVM_InitProperties(JNIEnv* env, jobject p) {
enterJVM();
-#if 0
+ J3* vm = J3Thread::get()->vm();
+ J3Class* pcl = p->vt()->type()->asClass();
+ J3Method* _setProp = pcl->findMethod(0,
+ vm->names()->get("setProperty"),
+ pcl->loader()
+ ->getSignature(0,
+ vm->names()->get("(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;")));
+
+#define setProp(key, val) _setProp->invokeVirtual(p, vm->utfToString(key), vm->utfToString(val));
+#define setEnvProp(key, val) ({ const char* tmp = getenv(val); if(!tmp) tmp = ""; setProp(key, val); })
+
/*
* <dt>java.version <dd>Java version number
* <dt>java.vendor <dd>Java vendor specific string
@@ -122,38 +133,36 @@ jobject JNICALL JVM_InitProperties(JNIEn
* <dt>user.home <dd>User home directory
* <dt>user.dir <dd>User's current working directory
*/
- JavaObject * prop = *(JavaObject**)p;
- llvm_gcroot(prop, 0);
- setProperty(vm, prop, "java.vm.specification.version", "1.0");
- setProperty(vm, prop, "java.vm.specification.vendor",
- "Sun Microsystems, Inc");
- setProperty(vm, prop, "java.vm.specification.name",
- "Java Virtual Machine Specification");
- setProperty(vm, prop, "java.specification.version", "1.5");
- setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");
- setProperty(vm, prop, "java.specification.name",
- "Java Platform API Specification");
- setProperty(vm, prop, "java.version", "1.5");
- setProperty(vm, prop, "java.runtime.version", "1.5");
- setProperty(vm, prop, "java.vendor", "The VMKit Project");
- setProperty(vm, prop, "java.vendor.url", "http://vmkit.llvm.org");
-
- tmp = getenv("JAVA_HOME");
- if (!tmp) tmp = "";
- setProperty(vm, prop, "java.home", tmp);
+ setProp("java.vm.specification.version", "1.2");
+ setProp("java.vm.specification.vendor", "Sun Microsystems, Inc");
+ setProp("java.vm.specification.name", "Java Virtual Machine Specification");
+ setProp("java.specification.version", "1.8");
+ setProp("java.specification.vendor", "Sun Microsystems, Inc");
+ setProp("java.specification.name", "Java Platform API Specification");
+ setProp("java.version", "1.8");
+ setProp("java.runtime.version", "1.8");
+ setProp("java.vendor", "The VMKit Project");
+ setProp("java.vendor.url", "http://vmkit.llvm.org");
+ setEnvProp("java.home", "JAVA_HOME");
+ setProp("java.class.version", "52.0");
+ setProp("java.vm.version", "0.5");
+ setProp("java.vm.vendor", "The VMKit Project");
+ setProp("java.vm.name", "J3");
+ setProp("java.specification.version", "1.8");
+
+ struct utsname infos;
+ uname(&infos);
+ setProp("os.name", infos.sysname);
+ setProp("os.arch", infos.machine);
+ setProp("os.version", infos.release);
+#if 0
+ setProp("java.io.tmpdir", "/tmp");
JnjvmBootstrapLoader* JCL = vm->bootstrapLoader;
- setProperty(vm, prop, "java.class.version", "49.0");
setProperty(vm, prop, "java.class.path", vm->classpath);
setProperty(vm, prop, "java.boot.class.path", JCL->bootClasspathEnv);
setProperty(vm, prop, "sun.boot.class.path", JCL->bootClasspathEnv);
- setProperty(vm, prop, "java.vm.version", "0.28");
- setProperty(vm, prop, "java.vm.vendor", "The VMKit Project");
- setProperty(vm, prop, "java.vm.name", "J3");
- setProperty(vm, prop, "java.specification.version", "1.5");
- setProperty(vm, prop, "java.io.tmpdir", "/tmp");
-
setProperty(vm, prop, "build.compiler", "gcj");
setProperty(vm, prop, "gcj.class.path", JCL->bootClasspathEnv);
@@ -165,7 +174,11 @@ jobject JNICALL JVM_InitProperties(JNIEn
// Align behavior with GNU Classpath for now, to pass mauve test
setProperty(vm, prop, "sun.lang.ClassLoader.allowArraySyntax", "true");
- setUnameProp(vm, prop);
+ if (!strcmp(infos.machine, "ppc")) {
+ setProperty(vm, prop, "gnu.cpu.endian","big");
+ } else {
+ setProperty(vm, prop, "gnu.cpu.endian","little");
+ }
setProperty(vm, prop, "file.separator", vm->dirSeparator);
setProperty(vm, prop, "path.separator", vm->envSeparator);
More information about the vmkit-commits
mailing list