looks good!<br><br><div class="gmail_quote">On Tue, Oct 25, 2011 at 12:48 AM, Will Dietz <span dir="ltr"><<a href="mailto:wdietz2@illinois.edu">wdietz2@illinois.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Inlined below.<br>
<br>
~Will<br>
<br>
>From 2dc8172b60301f98bf98d1ab2e17237f5da8540c Mon Sep 17 00:00:00 2001<br>
From: Will Dietz <<a href="mailto:w@wdtz.org">w@wdtz.org</a>><br>
Date: Fri, 14 Oct 2011 04:08:44 -0500<br>
Subject: [PATCH 12/29] Refactor out property-setting from GNUCP to shared<br>
 'SetProperties.inc'.<br>
<br>
---<br>
 .../GNUClasspath/ClasspathVMSystemProperties.inc   |  105 +-----------------<br>
 lib/J3/ClassLib/SetProperties.inc                  |  117 ++++++++++++++++++++<br>
 2 files changed, 121 insertions(+), 101 deletions(-)<br>
 create mode 100644 lib/J3/ClassLib/SetProperties.inc<br>
<br>
diff --git a/lib/J3/ClassLib/GNUClasspath/ClasspathVMSystemProperties.inc<br>
b/lib/J3/ClassLib/GNUClasspath/ClasspathVMSystemProperties.inc<br>
index 7e9e5c1..e126122 100644<br>
--- a/lib/J3/ClassLib/GNUClasspath/ClasspathVMSystemProperties.inc<br>
+++ b/lib/J3/ClassLib/GNUClasspath/ClasspathVMSystemProperties.inc<br>
@@ -20,41 +20,12 @@<br>
 #include "JavaUpcalls.h"<br>
 #include "Jnjvm.h"<br>
<br>
+#include "SetProperties.inc"<br>
+<br>
 using namespace j3;<br>
<br>
 extern "C" {<br>
<br>
-void setProperty(Jnjvm* vm, JavaObject* prop, const char* key,<br>
-                 const char* val) {<br>
-<br>
-  JavaString* Val = 0;<br>
-  JavaString* Key = 0;<br>
-  llvm_gcroot(prop, 0);<br>
-  llvm_gcroot(Val, 0);<br>
-  llvm_gcroot(Key, 0);<br>
-<br>
-  Val = vm->asciizToStr(val);<br>
-  Key = vm->asciizToStr(key);<br>
-<br>
-  vm->upcalls->setProperty->invokeIntSpecial(<br>
-      vm, (UserClass*)JavaObject::getClass(prop), prop, &Key, &Val);<br>
-}<br>
-<br>
-void setUnameProp(Jnjvm* vm, JavaObject* prop) {<br>
-<br>
-  llvm_gcroot(prop, 0);<br>
-<br>
-  struct utsname infos;<br>
-  uname(&infos);<br>
-  setProperty(vm, prop, "<a href="http://os.name" target="_blank">os.name</a>", infos.sysname);<br>
-  setProperty(vm, prop, "os.arch", infos.machine);<br>
-  setProperty(vm, prop, "os.version", infos.release);<br>
-  if (!strcmp(infos.machine, "ppc")) {<br>
-    setProperty(vm, prop, "gnu.cpu.endian","big");<br>
-  } else {<br>
-    setProperty(vm, prop, "gnu.cpu.endian","little");<br>
-  }<br>
-}<br>
<br>
 JNIEXPORT void JNICALL Java_gnu_classpath_VMSystemProperties_preInit(<br>
 #ifdef NATIVE_JNI<br>
@@ -67,71 +38,7 @@ JavaObject* prop) {<br>
<br>
   BEGIN_NATIVE_EXCEPTION(0)<br>
<br>
-  Jnjvm* vm = JavaThread::get()->getJVM();<br>
-  const char* tmp;<br>
-  setProperty(vm, prop, "java.vm.specification.version", "1.0");<br>
-  setProperty(vm, prop, "java.vm.specification.vendor",<br>
-              "Sun Microsystems, Inc");<br>
-  setProperty(vm, prop, "<a href="http://java.vm.specification.name" target="_blank">java.vm.specification.name</a>",<br>
-              "Java Virtual Machine Specification");<br>
-  setProperty(vm, prop, "java.specification.version", "1.5");<br>
-  setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");<br>
-  setProperty(vm, prop, "<a href="http://java.specification.name" target="_blank">java.specification.name</a>",<br>
-              "Java Platform API Specification");<br>
-  setProperty(vm, prop, "java.version", "1.5");<br>
-  setProperty(vm, prop, "java.runtime.version", "1.5");<br>
-  setProperty(vm, prop, "java.vendor", "The VMKit Project");<br>
-  setProperty(vm, prop, "java.vendor.url", "<a href="http://vmkit.llvm.org" target="_blank">http://vmkit.llvm.org</a>");<br>
-<br>
-  tmp = getenv("JAVA_HOME");<br>
-  if (!tmp) tmp = "";<br>
-  setProperty(vm, prop, "java.home", tmp);<br>
-<br>
-  JnjvmBootstrapLoader* JCL = vm->bootstrapLoader;<br>
-  setProperty(vm, prop, "java.class.version", "49.0");<br>
-  setProperty(vm, prop, "java.class.path", vm->classpath);<br>
-  setProperty(vm, prop, "java.boot.class.path", JCL->bootClasspathEnv);<br>
-  setProperty(vm, prop, "sun.boot.class.path", JCL->bootClasspathEnv);<br>
-  setProperty(vm, prop, "java.vm.version", "0.28");<br>
-  setProperty(vm, prop, "java.vm.vendor", "The VMKit Project");<br>
-  setProperty(vm, prop, "<a href="http://java.vm.name" target="_blank">java.vm.name</a>", "J3");<br>
-  setProperty(vm, prop, "java.specification.version", "1.5");<br>
-  setProperty(vm, prop, "java.io.tmpdir", "/tmp");<br>
-<br>
-  tmp = getenv("JAVA_COMPILER");<br>
-  if (!tmp) tmp = "gcj";<br>
-  setProperty(vm, prop, "java.compiler", tmp);<br>
-<br>
-  setProperty(vm, prop, "build.compiler", "gcj");<br>
-  setProperty(vm, prop, "gcj.class.path", JCL->bootClasspathEnv);<br>
-  setProperty(vm, prop, "gnu.classpath.boot.library.path",<br>
-              JCL->libClasspathEnv);<br>
-<br>
-  setUnameProp(vm, prop);<br>
-<br>
-  setProperty(vm, prop, "file.separator", vm->dirSeparator);<br>
-  setProperty(vm, prop, "path.separator", vm->envSeparator);<br>
-  setProperty(vm, prop, "line.separator", "\n");<br>
-<br>
-  tmp = getenv("USERNAME");<br>
-  if (!tmp) tmp = getenv("LOGNAME");<br>
-  if (!tmp) tmp = getenv("NAME");<br>
-  if (!tmp) tmp = "";<br>
-  setProperty(vm, prop, "<a href="http://user.name" target="_blank">user.name</a>", tmp);<br>
-<br>
-  tmp  = getenv("HOME");<br>
-  if (!tmp) tmp = "";<br>
-  setProperty(vm, prop, "user.home", tmp);<br>
-<br>
-  tmp = getenv("PWD");<br>
-  if (!tmp) tmp = "";<br>
-  setProperty(vm, prop, "user.dir", tmp);<br>
-<br>
-  // Disable this property. The Classpath iconv implementation is really<br>
-  // not optimized (it over-abuses JNI calls).<br>
-  //setProperty(vm, prop, "gnu.classpath.nio.charset.provider.iconv", "true");<br>
-  setProperty(vm, prop, "file.encoding", "ISO8859_1");<br>
-  setProperty(vm, prop, "gnu.java.util.zoneinfo.dir", "/usr/share/zoneinfo");<br>
+  setProperties(prop);<br>
<br>
   END_NATIVE_EXCEPTION<br>
 }<br>
@@ -142,11 +49,7 @@ extern "C" void<br>
Java_gnu_classpath_VMSystemProperties_postInit__Ljava_util_Prope<br>
<br>
   BEGIN_NATIVE_EXCEPTION(0)<br>
<br>
-  Jnjvm* vm = JavaThread::get()->getJVM();<br>
-  for (std::vector<std::pair<char*, char*> >::iterator i =<br>
-       vm->postProperties.begin(), e = vm->postProperties.end(); i!= e; i++) {<br>
-    setProperty(vm, prop, i->first, i->second);<br>
-  }<br>
+  setCommandLineProperties(prop);<br>
<br>
   END_NATIVE_EXCEPTION<br>
 }<br>
diff --git a/lib/J3/ClassLib/SetProperties.inc<br>
b/lib/J3/ClassLib/SetProperties.inc<br>
new file mode 100644<br>
index 0000000..7f3063f<br>
--- /dev/null<br>
+++ b/lib/J3/ClassLib/SetProperties.inc<br>
@@ -0,0 +1,117 @@<br>
+#include <sys/utsname.h><br>
+<br>
+extern "C" {<br>
+<br>
+void setProperty(Jnjvm* vm, JavaObject* prop, const char* key,<br>
+                 const char* val) {<br>
+<br>
+  JavaString* Val = 0;<br>
+  JavaString* Key = 0;<br>
+  llvm_gcroot(prop, 0);<br>
+  llvm_gcroot(Val, 0);<br>
+  llvm_gcroot(Key, 0);<br>
+<br>
+  Val = vm->asciizToStr(val);<br>
+  Key = vm->asciizToStr(key);<br>
+<br>
+  vm->upcalls->setProperty->invokeIntSpecial(<br>
+      vm, (UserClass*)JavaObject::getClass(prop), prop, &Key, &Val);<br>
+}<br>
+<br>
+void setUnameProp(Jnjvm* vm, JavaObject* prop) {<br>
+<br>
+  llvm_gcroot(prop, 0);<br>
+<br>
+  struct utsname infos;<br>
+  uname(&infos);<br>
+  setProperty(vm, prop, "<a href="http://os.name" target="_blank">os.name</a>", infos.sysname);<br>
+  setProperty(vm, prop, "os.arch", infos.machine);<br>
+  setProperty(vm, prop, "os.version", infos.release);<br>
+  if (!strcmp(infos.machine, "ppc")) {<br>
+    setProperty(vm, prop, "gnu.cpu.endian","big");<br>
+  } else {<br>
+    setProperty(vm, prop, "gnu.cpu.endian","little");<br>
+  }<br>
+}<br>
+void setProperties(JavaObject * prop) {<br>
+  llvm_gcroot(prop, 0);<br>
+  Jnjvm* vm = JavaThread::get()->getJVM();<br>
+  const char* tmp;<br>
+  setProperty(vm, prop, "java.vm.specification.version", "1.0");<br>
+  setProperty(vm, prop, "java.vm.specification.vendor",<br>
+              "Sun Microsystems, Inc");<br>
+  setProperty(vm, prop, "<a href="http://java.vm.specification.name" target="_blank">java.vm.specification.name</a>",<br>
+              "Java Virtual Machine Specification");<br>
+  setProperty(vm, prop, "java.specification.version", "1.5");<br>
+  setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");<br>
+  setProperty(vm, prop, "<a href="http://java.specification.name" target="_blank">java.specification.name</a>",<br>
+              "Java Platform API Specification");<br>
+  setProperty(vm, prop, "java.version", "1.5");<br>
+  setProperty(vm, prop, "java.runtime.version", "1.5");<br>
+  setProperty(vm, prop, "java.vendor", "The VMKit Project");<br>
+  setProperty(vm, prop, "java.vendor.url", "<a href="http://vmkit.llvm.org" target="_blank">http://vmkit.llvm.org</a>");<br>
+<br>
+  tmp = getenv("JAVA_HOME");<br>
+  if (!tmp) tmp = "";<br>
+  setProperty(vm, prop, "java.home", tmp);<br>
+<br>
+  JnjvmBootstrapLoader* JCL = vm->bootstrapLoader;<br>
+  setProperty(vm, prop, "java.class.version", "49.0");<br>
+  setProperty(vm, prop, "java.class.path", vm->classpath);<br>
+  setProperty(vm, prop, "java.boot.class.path", JCL->bootClasspathEnv);<br>
+  setProperty(vm, prop, "sun.boot.class.path", JCL->bootClasspathEnv);<br>
+  setProperty(vm, prop, "java.vm.version", "0.28");<br>
+  setProperty(vm, prop, "java.vm.vendor", "The VMKit Project");<br>
+  setProperty(vm, prop, "<a href="http://java.vm.name" target="_blank">java.vm.name</a>", "J3");<br>
+  setProperty(vm, prop, "java.specification.version", "1.5");<br>
+  setProperty(vm, prop, "java.io.tmpdir", "/tmp");<br>
+<br>
+  tmp = getenv("JAVA_COMPILER");<br>
+  if (!tmp) tmp = "gcj";<br>
+  setProperty(vm, prop, "java.compiler", tmp);<br>
+<br>
+  setProperty(vm, prop, "build.compiler", "gcj");<br>
+  setProperty(vm, prop, "gcj.class.path", JCL->bootClasspathEnv);<br>
+  setProperty(vm, prop, "gnu.classpath.boot.library.path",<br>
+              JCL->libClasspathEnv);<br>
+  //setProperty(vm, prop, "java.library.path", TODO: getenv("LD_LIBRARY_PATH"))<br>
+  setProperty(vm, prop, "sun.boot.library.path", JCL->libClasspathEnv);<br>
+<br>
+<br>
+  setUnameProp(vm, prop);<br>
+<br>
+  setProperty(vm, prop, "file.separator", vm->dirSeparator);<br>
+  setProperty(vm, prop, "path.separator", vm->envSeparator);<br>
+  setProperty(vm, prop, "line.separator", "\n");<br>
+<br>
+  tmp = getenv("USERNAME");<br>
+  if (!tmp) tmp = getenv("LOGNAME");<br>
+  if (!tmp) tmp = getenv("NAME");<br>
+  if (!tmp) tmp = "";<br>
+  setProperty(vm, prop, "<a href="http://user.name" target="_blank">user.name</a>", tmp);<br>
+<br>
+  tmp  = getenv("HOME");<br>
+  if (!tmp) tmp = "";<br>
+  setProperty(vm, prop, "user.home", tmp);<br>
+<br>
+  tmp = getenv("PWD");<br>
+  if (!tmp) tmp = "";<br>
+  setProperty(vm, prop, "user.dir", tmp);<br>
+<br>
+  // Disable this property. The Classpath iconv implementation is really<br>
+  // not optimized (it over-abuses JNI calls).<br>
+  //setProperty(vm, prop, "gnu.classpath.nio.charset.provider.iconv", "true");<br>
+  setProperty(vm, prop, "file.encoding", "ISO8859_1");<br>
+  setProperty(vm, prop, "gnu.java.util.zoneinfo.dir", "/usr/share/zoneinfo");<br>
+}<br>
+<br>
+void setCommandLineProperties(JavaObject * prop) {<br>
+  llvm_gcroot(prop, 0);<br>
+  Jnjvm* vm = JavaThread::get()->getJVM();<br>
+  for (std::vector<std::pair<char*, char*> >::iterator i =<br>
+       vm->postProperties.begin(), e = vm->postProperties.end(); i!= e; i++) {<br>
+    setProperty(vm, prop, i->first, i->second);<br>
+  }<br>
+<br>
+}<br>
+}<br>
<font color="#888888">--<br>
1.7.5.1<br>
_______________________________________________<br>
vmkit-commits mailing list<br>
<a href="mailto:vmkit-commits@cs.uiuc.edu">vmkit-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits</a><br>
</font></blockquote></div><br>