You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/11/13 10:00:14 UTC

svn commit: r474197 - in /incubator/harmony/enhanced/drlvm/trunk/vm: em/src/ include/ vmcore/include/ vmcore/src/class_support/ vmcore/src/init/ vmcore/src/jni/

Author: geirm
Date: Mon Nov 13 01:00:14 2006
New Revision: 474197

URL: http://svn.apache.org/viewvc?view=rev&rev=474197
Log:
tweaks to work better embedded w/o our launcher.

I also learned a bit about embedding, and will 
post notes on wiki tomorrow


Added:
    incubator/harmony/enhanced/drlvm/trunk/vm/include/vm_properties.h   (with props)
Modified:
    incubator/harmony/enhanced/drlvm/trunk/vm/em/src/DrlEMImpl.cpp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/classpath_const.h
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/properties.cpp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni.cpp

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/em/src/DrlEMImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/em/src/DrlEMImpl.cpp?view=diff&rev=474197&r1=474196&r2=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/em/src/DrlEMImpl.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/em/src/DrlEMImpl.cpp Mon Nov 13 01:00:14 2006
@@ -30,6 +30,8 @@
 #include "ini.h"
 #include "cxxlog.h"
 
+#include "vm_properties.h"
+
 #include <assert.h>
 #include <algorithm>
 #include <sstream>
@@ -325,7 +327,8 @@
     }
 
     if (configFileName.find('/') == configFileName.npos && configFileName.find('\\') == configFileName.npos ) {
-        std::string defaultConfigDir = vm_get_property_value("org.apache.harmony.vm.vmdir");
+        std::string defaultConfigDir = vm_get_property_value(O_A_H_VM_VMDIR);
+        
         configFileName = defaultConfigDir + "/" + configFileName;
     }
     std::string config = readFile(configFileName);

Added: incubator/harmony/enhanced/drlvm/trunk/vm/include/vm_properties.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/include/vm_properties.h?view=auto&rev=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/include/vm_properties.h (added)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/include/vm_properties.h Mon Nov 13 01:00:14 2006
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+#ifndef VM_PROPERTIES_H_
+#define VM_PROPERTIES_H_
+
+/**
+ *   Constants used for VM properties
+ */
+
+#define O_A_H_BOOT_CLASS_PATH  "org.apache.harmony.boot.class.path"
+#define O_A_H_VM_VMDIR         "org.apache.harmony.vm.vmdir"
+
+#define VM_BOOT_CLASS_PATH     "vm.boot.class.path"
+#define SUN_BOOT_CLASS_PATH    "sun.boot.class.path"
+
+#endif /*VM_PROPERTIES_H_*/

Propchange: incubator/harmony/enhanced/drlvm/trunk/vm/include/vm_properties.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/classpath_const.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/classpath_const.h?view=diff&rev=474197&r1=474196&r2=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/classpath_const.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/include/classpath_const.h Mon Nov 13 01:00:14 2006
@@ -17,6 +17,8 @@
 #ifndef CLASSPATH_CONST_H_
 #define CLASSPATH_CONST_H_
 
+#include "vm_properties.h"
+
 /**
  *   Constants used for classpath definition and manipulation
  */
@@ -25,13 +27,7 @@
 #define XBOOTCLASSPATH_A       "-Xbootclasspath/a:"
 #define XBOOTCLASSPATH_P       "-Xbootclasspath/p:"
 
-#define O_A_H_BOOT_CLASS_PATH  "org.apache.harmony.boot.class.path"
-#define O_A_H_VM_VMDIR         "org.apache.harmony.vm.vmdir"
-
 #define KERNEL_JAR             "kernel.jar"
-
-#define VM_BOOT_CLASS_PATH     "vm.boot.class.path"
-#define SUN_BOOT_CLASS_PATH    "sun.boot.class.path"
 
 #endif /*CLASSPATH_CONST_H_*/
 

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?view=diff&rev=474197&r1=474196&r2=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Mon Nov 13 01:00:14 2006
@@ -1316,7 +1316,9 @@
         properties_get_string_property(
             reinterpret_cast<PropertiesHandle>(m_env->properties),
             "vm.other_natives_dlls" );
+             
     size_t len = strlen( lib_list ) + 1;
+
     char *libraries = (char*)STD_ALLOCA( len );
     memcpy( libraries, lib_list, len );
 
@@ -1359,8 +1361,8 @@
         /* not overridden, so lets build, adding the kernel to what luni made for us */
         
         const char *kernel_dir_path = properties_get_string_property(hProps, O_A_H_VM_VMDIR);
-    
-        char *kernel_path = (char *) malloc(strlen(kernel_dir_path) 
+
+        char *kernel_path = (char *) malloc(strlen(kernel_dir_path == NULL ? "" : kernel_dir_path) 
                                         + strlen(PORT_FILE_SEPARATOR_STR) 
                                         + strlen(KERNEL_JAR) + 1);
     
@@ -1370,7 +1372,8 @@
         
         const char *luni_path = properties_get_string_property(hProps,O_A_H_BOOT_CLASS_PATH);
         
-        char *vmboot = (char *) malloc(strlen(luni_path) + strlen(kernel_path) + strlen(PORT_PATH_SEPARATOR_STR) + 1);
+        char *vmboot = (char *) malloc(strlen(luni_path == NULL ? "" : luni_path) 
+                                + strlen(kernel_path) + strlen(PORT_PATH_SEPARATOR_STR) + 1);
         
         strcpy(vmboot, kernel_path);
         strcat(vmboot, PORT_PATH_SEPARATOR_STR);

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/properties.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/properties.cpp?view=diff&rev=474197&r1=474196&r2=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/properties.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/properties.cpp Mon Nov 13 01:00:14 2006
@@ -33,6 +33,8 @@
 #include "port_filepath.h"
 #include "port_sysinfo.h"
 
+#include "vm_properties.h"
+
 #define PROP_ENV_NAME  "VM_PROPERTIES"
 #define PROP_FILE_NAME "vm.properties"
 #define BOOT_PROPS_FILE_NAME "bootclasspath.properties"
@@ -252,12 +254,29 @@
      *  launched in a mariad of ways, so just set to empty string.
      */
     add_pair_to_properties(properties, "vm.boot.library.path", "");
-    TRACE( "vm.boot.library.path = " << base_path_buf);
+    TRACE( "vm.boot.library.path = ");
     
     // Added for compatibility with the external java JDWP agent
     add_pair_to_properties(properties, "sun.boot.library.path", base_path_buf);
     TRACE( "sun.boot.library.path = " << base_path_buf);
 
+    /*
+     *  it's possible someone forgot to set this property - set to default of .
+     */
+    if (properties_get_string_property(reinterpret_cast<PropertiesHandle>(&properties), O_A_H_VM_VMDIR) == NULL) {
+        TRACE2("init", "o.a.h.vm.vmdir not set - setting predefined value of as '.'");
+        add_pair_to_properties(properties, O_A_H_VM_VMDIR, ".");
+    }
+    
+    /*
+     *  also, do the same for java.class.path
+     */
+     
+    if (properties_get_string_property(reinterpret_cast<PropertiesHandle>(&properties), "java.class.path") == NULL) {
+        TRACE2("init", "java.class.path not set - setting predefined value of '.'");
+        add_pair_to_properties(properties, "java.class.path", ".");
+    }
+    
     // vm.dlls initialization, the value is location of VM executable +
     // GC_DLL and on IPF JIT_DLL
     // FIXME, add JIT_DLL on other architectures when we have JIT in a dll on ia32

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp?view=diff&rev=474197&r1=474196&r2=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp Mon Nov 13 01:00:14 2006
@@ -318,12 +318,14 @@
     Class* GenericDeclaration_Class    = preload_class(vm_env, "java/lang/reflect/GenericDeclaration");
     Class* Type_Class                  = preload_class(vm_env, "java/lang/reflect/Type");
     vm_env->JavaLangClass_Class        = preload_class(vm_env, vm_env->JavaLangClass_String);
+
     vm_env->FinishVMBootstrap();
 
     // Now create the java_lang_Class instance.
     create_instance_for_class(vm_env, vm_env->JavaLangClass_Class);
 
     ClassTable* table = vm_env->bootstrap_class_loader->GetLoadedClasses();
+    
     unsigned num = 0;
     for (ClassTable::const_iterator it = table->begin(), end = table->end(); 
         it != end; ++it, ++num)

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni.cpp?view=diff&rev=474197&r1=474196&r2=474197
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni.cpp Mon Nov 13 01:00:14 2006
@@ -446,8 +446,8 @@
     jthread java_thread;
     jint status;
 
-
-    status = jni_init();
+    status = jni_init();        
+    
     if (status != JNI_OK) return status;
 
     apr_thread_mutex_lock(GLOBAL_LOCK);
@@ -492,7 +492,7 @@
     java_vm->vm_env = vm_env;
     java_vm->reserved = (void *)0x1234abcd;
     *p_vm = java_vm;
-    
+        
     status = vm_init1(java_vm, vm_args);
     if (status != JNI_OK) {
         goto done;