You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by mc...@apache.org on 2008/03/05 08:13:43 UTC

svn commit: r633782 - in /harmony/enhanced/drlvm/trunk: make/build-java.xml make/resources/harmonyvm.properties make/tests/reg-test.xml make/vm/gc_gen.xml make/vm/kernel.xml vm/vmcore/src/class_support/classloader.cpp

Author: mcfirst
Date: Tue Mar  4 23:13:42 2008
New Revision: 633782

URL: http://svn.apache.org/viewvc?rev=633782&view=rev
Log:
Applying patch from HARMONY-5474 [drlvm] Keep DRLVM dependent jars inside VM directory

Modified:
    harmony/enhanced/drlvm/trunk/make/build-java.xml
    harmony/enhanced/drlvm/trunk/make/resources/harmonyvm.properties
    harmony/enhanced/drlvm/trunk/make/tests/reg-test.xml
    harmony/enhanced/drlvm/trunk/make/vm/gc_gen.xml
    harmony/enhanced/drlvm/trunk/make/vm/kernel.xml
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp

Modified: harmony/enhanced/drlvm/trunk/make/build-java.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/build-java.xml?rev=633782&r1=633781&r2=633782&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/build-java.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/build-java.xml Tue Mar  4 23:13:42 2008
@@ -52,31 +52,4 @@
             </jar>
         </sequential>
     </macrodef>
-    
-    <macrodef name="add-bcp-entry">
-        <attribute name="name"/>
-        <attribute name="ordinal"/>
-        <sequential>
-            <loadfile srcFile="${drlvm.deploy.dir}/jdk/jre/lib/boot/bootclasspath.properties" property="boot.jar.@{name}" />
-            <condition property="@{name}.is.bcp">
-                <contains string="${boot.jar.@{name}}" substring="=@{name}"/>
-            </condition>
-            <antcall target="-patch-bcp-properties">
-                <param name="bcp.patch.ordinal" value="@{ordinal}"/>
-                <param name="bcp.patch.name" value="@{name}"/>
-                <propertyset>
-                  <propertyref name="@{name}.is.bcp"/>
-                  <globmapper from="@{name}.is.bcp" to="bcp.is.patched"/>
-                </propertyset>
-            </antcall>
-        </sequential>
-    </macrodef>
-
-    <target name="-patch-bcp-properties" unless="bcp.is.patched">
-        <concat append="true" destfile="${drlvm.deploy.dir}/jdk/jre/lib/boot/bootclasspath.properties"
-            >bootclasspath.${bcp.patch.ordinal}=${bcp.patch.name}
-        </concat>
-        <fixcrlf srcdir="${drlvm.deploy.dir}/jdk/jre/lib/boot" includes="bootclasspath.properties"/>
-    </target>
-
 </project>

Modified: harmony/enhanced/drlvm/trunk/make/resources/harmonyvm.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/resources/harmonyvm.properties?rev=633782&r1=633781&r2=633782&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/resources/harmonyvm.properties (original)
+++ harmony/enhanced/drlvm/trunk/make/resources/harmonyvm.properties Tue Mar  4 23:13:42 2008
@@ -1,6 +1,7 @@
 # This file contains additional options passed to vm by launcher
 
-# These are to help the Eclipse plug-in find the kernel classes info
+# These are used to construct boot class path with VM specific classes
+# They are also to help the Eclipse plug-in find the kernel classes info
 bootclasspath.kernel.1=%LAUNCHER_HOME%/%VM_DIR%/kernel.jar
 bootclasspath.kernel.source.1=%LAUNCHER_HOME%/%VM_DIR%/kernel-src.jar
 bootclasspath.kernel.source.packageroot.1=/
@@ -16,5 +17,9 @@
 bootclasspath.kernel.4=%LAUNCHER_HOME%/%VM_DIR%/gc_gen.jar
 bootclasspath.kernel.source.4=%LAUNCHER_HOME%/%VM_DIR%/gc_gen-src.jar
 bootclasspath.kernel.source.packageroot.4=/
+
+bootclasspath.kernel.5=%LAUNCHER_HOME%/%VM_DIR%/vmmagic-20070207.jar
+
+bootclasspath.kernel.6=%LAUNCHER_HOME%/%VM_DIR%/antlr-2.7.5.jar
 
 # end of file

Modified: harmony/enhanced/drlvm/trunk/make/tests/reg-test.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/tests/reg-test.xml?rev=633782&r1=633781&r2=633782&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/tests/reg-test.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/tests/reg-test.xml Tue Mar  4 23:13:42 2008
@@ -78,7 +78,7 @@
     <target name="compile-reg-tests-java"
             depends="compile-reg-tests-prepare, compile-reg-tests-j">
         <basename file="${vmmagic}" property="vmmagic.basename"/>
-        <property name="vmmagic.dep" location="${test.jre.home}/lib/boot/${vmmagic.basename}"/>
+        <property name="vmmagic.dep" location="${test.jre.home}/bin/default/${vmmagic.basename}"/>
         <ensure-resource name="vmmagic.dep"/>
         <compile-java src="${reg.test.src}" dest="${reg.test.class.path}">
             <depend targetdir="${reg.test.class.path}">

Modified: harmony/enhanced/drlvm/trunk/make/vm/gc_gen.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/vm/gc_gen.xml?rev=633782&r1=633781&r2=633782&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/vm/gc_gen.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/vm/gc_gen.xml Tue Mar  4 23:13:42 2008
@@ -32,6 +32,7 @@
             manifest="${vm.home}/gc_gen/resource/MANIFEST.MF">
             <classpath>
                 <fileset dir="${drlvm.deploy.dir}/jdk/jre/lib/boot" includes="*.jar" />
+                <fileset dir="${drlvm.deploy.dir}/jdk/jre/bin/default" includes="vmmagic*.jar" />
                 <pathelement location="${drlvm.bin.dir}/kernel.jar"/>
             </classpath>
         </make-java>

Modified: harmony/enhanced/drlvm/trunk/make/vm/kernel.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/vm/kernel.xml?rev=633782&r1=633781&r2=633782&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/vm/kernel.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/vm/kernel.xml Tue Mar  4 23:13:42 2008
@@ -32,10 +32,10 @@
     
     <target name="check-setup">
         <basename file="${vmmagic}" property="vmmagic.basename"/>
-        <available file="${drlvm.deploy.dir}/jdk/jre/lib/boot/${vmmagic.basename}" 
+        <available file="${drlvm.deploy.dir}/jdk/jre/bin/default/${vmmagic.basename}" 
             property="vmmagic.available"/>
         <basename file="${antlr}" property="antlr.basename"/>
-        <available file="${drlvm.deploy.dir}/jdk/jre/lib/boot/${antlr.basename}" 
+        <available file="${drlvm.deploy.dir}/jdk/jre/bin/default/${antlr.basename}" 
             property="antlr.available"/>
         <condition property="setup.complete">
             <and>
@@ -48,10 +48,8 @@
     <target name="setup" depends="check-setup" unless="setup.complete">
         <check-one-file dest="${antlr}" src="${antlr.url}"/>
         <check-one-file dest="${vmmagic}" src="${vmmagic.url}"/>
-        <copy todir="${drlvm.deploy.dir}/jdk/jre/lib/boot" file="${vmmagic}"/>
-        <add-bcp-entry name="vmmagic-20070207.jar" ordinal="100"/>
-        <copy todir="${drlvm.deploy.dir}/jdk/jre/lib/boot" file="${antlr}"/>
-        <add-bcp-entry name="antlr-2.7.5.jar" ordinal="101"/>
+        <copy todir="${drlvm.deploy.dir}/jdk/jre/bin/default" file="${vmmagic}"/>
+        <copy todir="${drlvm.deploy.dir}/jdk/jre/bin/default" file="${antlr}"/>
     </target>
 
     <target name="build" depends="setup">
@@ -60,6 +58,8 @@
             manifest="${vm.home}/vmcore/src/kernel_classes/resource/MANIFEST.MF">
             <classpath>
                 <fileset dir="${drlvm.deploy.dir}/jdk/jre/lib/boot" includes="*.jar" />
+                <fileset dir="${drlvm.deploy.dir}/jdk/jre/bin/default" includes="vmmagic*.jar" />
+                <fileset dir="${drlvm.deploy.dir}/jdk/jre/bin/default" includes="antlr*.jar" />
             </classpath>
     
             <!-- 

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?rev=633782&r1=633781&r2=633782&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Tue Mar  4 23:13:42 2008
@@ -47,6 +47,7 @@
 #include "port_filepath.h"
 #include <apr_file_io.h>
 #include <apr_file_info.h>
+#include <apr_mmap.h>
 
 #include "jarfile_util.h"
 #include "jni_utils.h"
@@ -1135,12 +1136,11 @@
     assert(bcp);
 
     // set bootclasspath elements
-    const char separator[2] = {PORT_PATH_SEPARATOR, 0};
-    char *path_name = strtok(bcp, separator);
+    char *path_name = strtok(bcp, PORT_PATH_SEPARATOR_STR);
     while (path_name)
     {
         SetBCPElement(path_name, tmp_pool);
-        path_name = strtok(NULL, separator);
+        path_name = strtok(NULL, PORT_PATH_SEPARATOR_STR);
     }
 
     return;
@@ -1341,17 +1341,207 @@
 }
 
 
+static int calculate_subst_len(const char* value,
+                             const char* subst, const int subst_len,
+                             const char* substby, const int substby_len)
+{
+    int len = strlen(value);
+    for(; *value; value++) {
+        if(*value != '%') {
+            continue;
+        }
+        if(strstr(value, subst) == value) {
+            len += substby_len - subst_len;
+            value += subst_len - 1; // -1 to cover ++ in loop
+            break;
+        }
+    }
+    return len;
+}
+
+
+static void fillin_with_subst(char* bootClassPath, const char* path_elem,
+                              const int max_len,
+                              const char* subst, const int subst_len,
+                              const char* substby, const int substby_len)
+{
+    int pos = strlen(bootClassPath);
+    for(; *path_elem; path_elem++) {
+        assert(pos < max_len);
+        if(*path_elem != '%') {
+            // just copy a char
+            bootClassPath[pos] = *path_elem;
+            pos++;
+            continue;
+        }
+        if (strstr(path_elem, subst) == path_elem) {
+            // make substitution
+            strcat(bootClassPath, substby);
+            // -1 for next iteration of outer loop
+            path_elem += subst_len - 1;
+            pos += substby_len;
+        }
+    }
+    bootClassPath[pos] = '\0';
+}
+
+
+static char* construct_kernel_BCP(const char* vm_dir, Properties& props)
+{
+    static const char* subst_item = "%LAUNCHER_HOME%/%VM_DIR%";
+    static const int subst_len = 24;
+    int subst_value_len = strlen(vm_dir);
+
+    char** keys = props.get_keys();
+    char** cur_key = keys;
+    int bcpVmLen = 0, bcpElemId;
+    while(*cur_key) {
+        char* value = props.get(*cur_key);
+        if(sscanf(*cur_key, "bootclasspath.kernel.%d",
+                &bcpElemId) == 1)
+        {
+            bcpVmLen +=
+                calculate_subst_len(value, subst_item, subst_len, vm_dir, subst_value_len)
+                + strlen(PORT_PATH_SEPARATOR_STR);
+        }
+        props.destroy(value);
+        cur_key++;
+    }
+
+    char* bootClassPath = NULL;
+    if(bcpVmLen != 0) {
+        bootClassPath = (char*)STD_MALLOC(bcpVmLen);
+        bootClassPath[0] = '\0';
+        cur_key = keys;
+        for(int l = 0; *cur_key; cur_key++)
+        {
+            char* value = props.get(*cur_key);
+            if(sscanf(*cur_key, "bootclasspath.kernel.%d",
+                    &bcpElemId) == 1)
+            {
+                if(l++ != 0) {
+                    strcat(bootClassPath, PORT_PATH_SEPARATOR_STR);
+                }
+                // fill in with substitution
+                fillin_with_subst(bootClassPath, value, bcpVmLen,
+                    subst_item, subst_len, vm_dir, subst_value_len);
+            }
+            props.destroy(value);
+        }
+    }
+
+    props.destroy(keys);
+
+    return bootClassPath;
+}
+
+
+static void load_properties(const char* path, const char* name, Properties& props)
+{
+    apr_pool_t* tmp_pool;
+    apr_pool_create(&tmp_pool, NULL);
+    char* propfile_name =
+        (char*)apr_palloc(tmp_pool, strlen(path) + strlen(name)
+            + strlen("/.properties\0"));
+    // the last strlen is for path separator, properties file extension, and terminating zero
+    strcpy(propfile_name, path);
+    strcat(propfile_name, PORT_FILE_SEPARATOR_STR);
+    strcat(propfile_name, name);
+    strcat(propfile_name, ".properties" );
+
+    apr_file_t* propfile;
+    apr_status_t status =
+        apr_file_open(&propfile, propfile_name, APR_READ, APR_OS_DEFAULT, tmp_pool);
+    assert(!status);
+
+    apr_off_t size = 0;
+    status = apr_file_seek(propfile, APR_END, &size);
+    assert(!status);
+
+    apr_mmap_t* mmap_pf;
+    status = apr_mmap_create(&mmap_pf, propfile, 0, (apr_size_t)size,
+        APR_MMAP_READ, tmp_pool);
+    assert(!status);
+
+    char* pf_data = (char*)mmap_pf->mm;
+
+    int line_len = 0;
+    char* line_start = pf_data;
+    char* line_end;
+    int key_len = 0, value_len = 0;
+    char* key_holder = (char*)STD_MALLOC(key_len);
+    char* value_holder = (char*)STD_MALLOC(value_len);
+    for(int i = 0; i < size; i++, pf_data++) {
+        if(*pf_data == 0xA || *pf_data == 0xD) {
+            line_len = pf_data - line_start;
+            if(line_len == 0) {
+                line_start = pf_data + 1;
+                continue;
+            }
+            if(*line_start != '#') {
+                line_end = pf_data - 1;
+                // process key=value
+                char* delim = line_start;
+                for(; delim <= line_end && *delim != '='; delim++);
+                if(delim <= line_end) {
+                    int cur_key_len = delim - line_start;
+                    if(key_len < cur_key_len) {
+                        key_len = cur_key_len + 1;
+                        key_holder = (char*)STD_REALLOC(key_holder, key_len);
+                    }
+                    strncpy(key_holder, line_start, cur_key_len);
+                    key_holder[cur_key_len] = '\0';
+                    delim++; // move delimeter to point at the beginning of value
+                    char* value_end = delim;
+                    // limit value by either line_end of start of comment
+                    for(; value_end <= line_end && *value_end != '#'; value_end++);
+                    int cur_value_len = value_end - delim;
+                    if(value_len < cur_value_len) {
+                        value_len = cur_value_len + 1;
+                        value_holder = (char*)STD_REALLOC(value_holder, value_len);
+                    }
+                    strncpy(value_holder, delim, cur_value_len);
+                    value_holder[cur_value_len] = '\0';
+                    props.set(key_holder, value_holder);
+                } // else the line is malformed and we just skip it
+            }
+            // go to next line
+            line_start = pf_data + 1;
+        }
+    }
+
+    STD_FREE(key_holder);
+    STD_FREE(value_holder);
+    apr_mmap_delete(mmap_pf);
+    apr_file_close(propfile);
+    apr_pool_destroy(tmp_pool);
+}
+
+static char* get_kernel_path(Global_Env* env) {
+    char *vmdir = env->JavaProperties()->get(O_A_H_VM_VMDIR);
+    assert(vmdir);
+
+    Properties hyvmprops;
+    load_properties(vmdir, "harmonyvm", hyvmprops);
+
+    char* kernel_bcp = construct_kernel_BCP(vmdir, hyvmprops);
+
+    env->JavaProperties()->destroy(vmdir);
+
+    return kernel_bcp;
+}
+
+
 bool BootstrapClassLoader::Initialize(ManagedObject* UNREF loader)
 {
-    // init bootstrap class loader
+    // init common class loader internals
     ClassLoader::Initialize();
 
     // get list of natives libraries
     char *lib_list = m_env->VmProperties()->get("vm.other_natives_dlls");
              
     // separate natives libraries
-    const char separator[2] = {PORT_PATH_SEPARATOR, 0};
-    char *lib_name = strtok( lib_list, separator );
+    char *lib_name = strtok( lib_list, PORT_PATH_SEPARATOR_STR );
 
     while( lib_name != NULL )
     {
@@ -1359,106 +1549,93 @@
         LoadNativeLibrary( lib_name );
 
         // find next library
-        lib_name = strtok( NULL, separator );
+        lib_name = strtok( NULL, PORT_PATH_SEPARATOR_STR );
     }
     m_env->VmProperties()->destroy(lib_list);
 
     /*
-     *  at this point, LUNI is loaded, so we can use the boot classpath
-     *  generated there to set vm.boot.class.path since we didn't do
-     *  it before.  We need  to add on the kernel.jar 
-     *  and magics support jars (if any).
-     *  note that parse_arguments.cpp defers any override, append or 
-     *  prepend here, storing everything as properties.
-     */
-     
-    /*
-     * start with the boot classpath. If overridden, just use that as the basis
-     * and otherwise, construct from o.a.h.b.c.p + o.a.h.vm.vmdir to add 
-     * the kernel
+     * At this point, LUNI is loaded, so we can use the boot class path
+     * generated there to set vm.boot.class.path since we didn't do
+     * it before.  We also need to add what is listed in harmonyvm.properties
+     * DRLVM properties file.
+     * NOTE: parse_arguments.cpp defers any override, append or prepend here,
+     * storing everything as properties.
      */
-     
-    /* strdup so that it's freeable w/o extra logic */
-    char *temp = m_env->VmProperties()->get(XBOOTCLASSPATH);
-    char *bcp_value = (temp ? strdup(temp) : NULL);
-    m_env->VmProperties()->destroy(temp);
-        
-    if (bcp_value == NULL) { 
-        
-        /* not overridden, so lets build, adding the kernel to what luni made for us */
-        
-        char *kernel_dir_path = m_env->JavaProperties()->get(O_A_H_VM_VMDIR);
 
-        char* comp_path = bootstrap_components_classpath(m_env);
-        char *kernel_path = (char *) malloc(strlen(kernel_dir_path) 
-                                        + strlen(PORT_FILE_SEPARATOR_STR) 
-                                        + strlen(KERNEL_JAR) + strlen(PORT_PATH_SEPARATOR_STR)
-                                        + (comp_path ? strlen(comp_path) : 0)
-                                        + 1 );
-
-        strcpy(kernel_path, kernel_dir_path);
-        strcat(kernel_path, PORT_FILE_SEPARATOR_STR);
-        strcat(kernel_path, KERNEL_JAR);
-        strcat(kernel_path, PORT_PATH_SEPARATOR_STR);
-        m_env->JavaProperties()->destroy(kernel_dir_path);
-        if (comp_path) {
-            strcat(kernel_path, comp_path);
-            STD_FREE(comp_path);
-        }
 
+    char* xbcp = m_env->VmProperties()->get(XBOOTCLASSPATH);
+    char* prepend = m_env->VmProperties()->get(XBOOTCLASSPATH_P);
+    char* append = m_env->VmProperties()->get(XBOOTCLASSPATH_A);
+
+    size_t bcp_p_len = (prepend ? strlen(prepend) + strlen(PORT_PATH_SEPARATOR_STR) : 0);
+    size_t bcp_a_len = (append ? strlen(PORT_PATH_SEPARATOR_STR) + strlen(append) : 0);
+    char* vmboot = NULL;
+    // If boot classpath is overridden, just use that value.
+    if(xbcp) {
+        vmboot = (char*)STD_MALLOC(strlen(xbcp) + bcp_a_len + bcp_p_len + 1);
+        strcpy(vmboot + bcp_p_len, xbcp);
+        m_env->VmProperties()->destroy(xbcp);
+    }
+
+    if(vmboot == NULL) { 
+        // Not overridden, so lets build
+        // First, helper jars
+        char* comp_path = bootstrap_components_classpath(m_env);
+        // Second, read in harmonyvm.properties
+        char* kernel_bcp = get_kernel_path(m_env);
+        // Third, what is provided by LUNI as class library classes
         char *luni_path = m_env->JavaProperties()->get(O_A_H_BOOT_CLASS_PATH);
 
-        char *vmboot = (char *) malloc(strlen(luni_path == NULL ? "" : luni_path) 
-                                + strlen(kernel_path) + 1);
+        vmboot = (char*)STD_MALLOC(
+            bcp_p_len
+            + (comp_path ? strlen(comp_path) : 0)
+            + strlen(kernel_bcp)
+            + (luni_path ? strlen(PORT_PATH_SEPARATOR_STR) + strlen(luni_path) : 0)
+            + bcp_a_len
+            + 1);
+        char* vmboot_start = vmboot + bcp_p_len;
+        *vmboot = '\0'; // make allocated buffer look like a C-string
+        *vmboot_start = '\0';
+
+        if(comp_path != NULL) {
+            strcpy(vmboot_start, comp_path);
+            STD_FREE(comp_path);
+        }
+        strcat(vmboot_start, kernel_bcp);
+        STD_FREE(kernel_bcp);
 
-        strcpy(vmboot, kernel_path);
         if(luni_path != NULL) {
-            strcat(vmboot, luni_path);
+            strcat(vmboot_start, PORT_PATH_SEPARATOR_STR);
+            strcat(vmboot_start, luni_path);
             m_env->JavaProperties()->destroy(luni_path);
         }
-
-        free(kernel_path);
-        bcp_value = vmboot;
     }
 
     /*
      *  now if there a pre or post bootclasspath, add those
      */
 
-    char *prepend = m_env->VmProperties()->get(XBOOTCLASSPATH_P);
-    char *append = m_env->VmProperties()->get(XBOOTCLASSPATH_A);
-
     if (prepend || append) {
-        char *temp = (char *) malloc(strlen(bcp_value) 
-                                    + (prepend ? strlen(prepend) + strlen(PORT_PATH_SEPARATOR_STR) : 0 )
-                                    + (append  ? strlen(append) + strlen(PORT_PATH_SEPARATOR_STR) : 0 ) + 1);
-
-        if (prepend) { 
-            strcpy(temp, prepend);
-            strcat(temp, PORT_PATH_SEPARATOR_STR);
-            strcat(temp, bcp_value);
-        } else {
-            strcpy(temp, bcp_value);
+        if (prepend) {
+            strcpy(vmboot, prepend);
+            vmboot[bcp_p_len-1] = PORT_PATH_SEPARATOR;
+            m_env->VmProperties()->destroy(prepend);
         }
 
         if (append) {
-            strcat(temp, PORT_PATH_SEPARATOR_STR);
-            strcat(temp, append);
+            strcat(vmboot, PORT_PATH_SEPARATOR_STR);
+            strcat(vmboot, append);
+            m_env->VmProperties()->destroy(append);
         }
-
-        free(bcp_value);
-        bcp_value = temp;
     }
-    m_env->VmProperties()->destroy(prepend);
-    m_env->VmProperties()->destroy(append);
+
     /*
      *  set VM_BOOT_CLASS_PATH and SUN_BOOT_CLASS_PATH for any code 
      *  that needs it
      */
-
-    m_env->VmProperties()->set(VM_BOOT_CLASS_PATH, bcp_value);
-    m_env->JavaProperties()->set(VM_BOOT_CLASS_PATH, bcp_value);
-    m_env->JavaProperties()->set(SUN_BOOT_CLASS_PATH, bcp_value);
+    m_env->VmProperties()->set(VM_BOOT_CLASS_PATH, vmboot);
+    m_env->JavaProperties()->set(VM_BOOT_CLASS_PATH, vmboot);
+    m_env->JavaProperties()->set(SUN_BOOT_CLASS_PATH, vmboot);
 
     // create temp pool for apr functions
     apr_pool_t *tmp_pool;
@@ -1466,8 +1643,8 @@
 
     // create a bootclasspath collection
 
-    SetClasspathFromString(bcp_value, tmp_pool);
-    free(bcp_value);
+    SetClasspathFromString(vmboot, tmp_pool);
+    STD_FREE(vmboot);
 
     // check if vm.bootclasspath.appendclasspath property is set to true
     if( TRUE == get_boolean_property("vm.bootclasspath.appendclasspath", FALSE, VM_PROPERTIES) ) {
@@ -1477,8 +1654,8 @@
         m_env->JavaProperties()->destroy(cp);
     }
 
-    // get a classpath from archive files manifest and
-    // set into bootclasspath collection
+    // get a classpath from archive files manifests and
+    // set into boot class path collection
     for( BCPElement* element = m_BCPElements.m_first;
          element;
          element = element->m_next )