Re: [rvm-core] [rvm-commits] SF.net SVN: jikesrvm:[15767] rvmroot/trunk

View: New views
2 Messages — Rating Filter:   Alert me  

Parent Message unknown Re: [rvm-core] [rvm-commits] SF.net SVN: jikesrvm:[15767] rvmroot/trunk

by Steve Blackburn :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Just to be clear....

1.  DaCapo xalan desires to use xalan as a benchmark.  It is essential  
that all JVMs use the same version when under test.   Therefore DaCapo  
asserts that the version provided by the harness is used.

2.  The IBM JVM and the Harmony JVM are unique in my experience in  
injecting the use of their own bundled version ahead of the supplied  
version.  Sun, JRockit and Jikes RVM JVMs have all until now always  
correctly used the provided version in preference to the bundled  
version.

3.  As far as I am aware, it is an error that Harmony and IBM place  
their bundled version of xalan ahead of the provided one.

4.  I discussed the above at some length with both IBM and Harmony  
development teams some time ago, and with Kev Jones, who was then at  
Intel and is an expert in this area, and who co-wrote the xalan  
workload for us.  To the best of my knowledge the IBM/Harmony behavior  
is incorrect.

--Steve


On 15/08/2009, at 7:19 AM, dgrove-oss@... wrote:

> Revision: 15767
>          http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15767&view=rev
> Author:   dgrove-oss
> Date:     2009-08-14 21:19:29 +0000 (Fri, 14 Aug 2009)
>
> Log Message:
> -----------
> DaCapo xalan requires the VM to use a specific version of xalan,
> which is not the same version found in modern JVM class libraries.
> Add plumbing to tests.xml to allow test-specific settings of the
> VM's bootclasspath and then use this mechanism in the dacapo build.xml
> to ensure that the xalan code taken from the xalan.jar extracted from
> dacapo.jar is loaded in preference to whatever xalan version may be
> built-in to the classlibarary.
>
> Modified Paths:
> --------------
>    rvmroot/trunk/build/tests.xml
>    rvmroot/trunk/testing/tests/dacapo/build.xml
>
> Modified: rvmroot/trunk/build/tests.xml
> ===================================================================
> --- rvmroot/trunk/build/tests.xml 2009-08-12 18:36:49 UTC (rev 15766)
> +++ rvmroot/trunk/build/tests.xml 2009-08-14 21:19:29 UTC (rev 15767)
> @@ -409,6 +409,7 @@
>     <attribute name="class"/>
>     <attribute name="args" default=""/>
>     <attribute name="classpath" default=""/>
> +    <attribute name="bootclasspath" default=""/>
>     <attribute name="processors" default=""/>
>     <attribute name="initialHeapSize" default=""/>
>     <attribute name="maxHeapSize" default=""/>
> @@ -423,6 +424,7 @@
>                   class="@{class}"
>                   args="@{args}"
>                   classpath="@{classpath}"
> +                  bootclasspath="@{bootclasspath}"
>                   processors="@{processors}"
>                   initialHeapSize="@{initialHeapSize}"
>                   maxHeapSize="@{maxHeapSize}"
> @@ -441,6 +443,7 @@
>     <attribute name="class"/>
>     <attribute name="args" default=""/>
>     <attribute name="classpath" default=""/>
> +    <attribute name="bootclasspath" default=""/>
>     <attribute name="processors" default=""/>
>     <attribute name="initialHeapSize" default=""/>
>     <attribute name="maxHeapSize" default=""/>
> @@ -474,6 +477,7 @@
>       <setTestProperty tag="@{tag}" key="extra.args"  
> default="@{rvmArgs}"/>
>       <setTestProperty tag="@{tag}" key="extra.rvm.args" default=""/>
>       <setTestProperty tag="@{tag}" key="class.path" default="$
> {default.test.@{tag}.classpath}"/>
> +      <setTestProperty tag="@{tag}" key="bootclass.path"  
> default="@{bootclasspath}"/>
>       <setTestProperty tag="@{tag}" key="time.limit" default="$
> {default.test.@{tag}.timeLimit}"/>
>       <setTestProperty tag="@{tag}" key="initial.heapsize" default="$
> {default.test.@{tag}.initialHeapSize}"/>
>       <setTestProperty tag="@{tag}" key="max.heapsize" default="$
> {default.test.@{tag}.maxHeapSize}"/>
> @@ -512,7 +516,7 @@
>       <property name="test.@{tag}.rvm.wrapper-args" value=""/>
>
>       <property name="test.@{tag}.command"
> -                value='${rvm.exe} ${test.@{tag}.rvm.args} -
> classpath "${test.@{tag}.class.path}" ${test.@{tag}.class} $
> {test.@{tag}.args}'/>
> +                value='${rvm.exe} ${test.@{tag}.rvm.args} $
> {test.@{tag}.bootclass.path} -classpath "${test.@{tag}.class.path}" $
> {test.@{tag}.class} ${test.@{tag}.args}'/>
>     </sequential>
>   </macrodef>
>
> @@ -557,7 +561,7 @@
>             <arg line="-o ${test.@{tag}.@{execution}.output.file}"/>
>
>             <!-- The RVM execution -->
> -            <arg line="${rvm.exe} ${test.@{tag}.rvm.args}"/>
> +            <arg line="${rvm.exe} ${test.@{tag}.rvm.args} $
> {test.@{tag}.bootclass.path}"/>
>             <arg value="-classpath"/>
>             <arg value="${test.@{tag}.class.path}"/>
>             <arg line="${test.@{tag}.class} ${test.@{tag}.args}"/>
> @@ -613,6 +617,7 @@
>     <attribute name="tag"/>
>     <attribute name="class"/>
>     <attribute name="classpath" default=""/>
> +    <attribute name="bootclasspath" default=""/>
>     <attribute name="args" default=""/>
>     <attribute name="execution" default="default"/>
>     <attribute name="initialHeapSize" default=""/>
> @@ -624,6 +629,7 @@
>            class="@{class}"
>            args="@{args}"
>            classpath="@{classpath}"
> +           bootclasspath="@{bootclasspath}"
>            initialHeapSize="@{initialHeapSize}"
>            maxHeapSize="@{maxHeapSize}"
>            rvmArgs="@{rvmArgs}"
>
> Modified: rvmroot/trunk/testing/tests/dacapo/build.xml
> ===================================================================
> --- rvmroot/trunk/testing/tests/dacapo/build.xml 2009-08-12 18:36:49  
> UTC (rev 15766)
> +++ rvmroot/trunk/testing/tests/dacapo/build.xml 2009-08-14 21:19:29  
> UTC (rev 15767)
> @@ -25,13 +25,23 @@
>
>   <property name="test.class.path" value="${dacapo.jar}"/>
>
> +  <target name="extract-xalan-jar" depends="init">
> +    <test-file name="dacapo.jar" location="$
> {jikesrvm.dir}/.ant.properties"/>
> +    <unzip src="${dacapo.jar}" dest="${build.tests.dir}">
> +      <patternset>
> +        <include name="xalan.jar"/>
> +      </patternset>
> +    </unzip>
> +  </target>
> +
>   <macrodef name="dacapo">
>     <attribute name="name"/>
>     <attribute name="timeLimit" default=""/>
>     <attribute name="heapsize" default=""/>
>     <attribute name="requires-display" default="false"/>
> +    <attribute name="bootclasspath" default=""/>
>     <sequential>
> -      <rvm tag="@{name}" class="Harness" requires-
> display="@{requires-display}" args="@{name}"  
> timeLimit="@{timeLimit}" maxHeapSize="@{heapsize}"/>
> +      <rvm tag="@{name}" class="Harness" requires-
> display="@{requires-display}" args="@{name}"  
> timeLimit="@{timeLimit}" maxHeapSize="@{heapsize}"  
> bootclasspath="@{bootclasspath}"/>
>       <outputSingleStatisticResults tag="@{name}" key="time"  
> pattern="===== DaCapo @{name} PASSED in (.*) msec ====="/>
>     </sequential>
>   </macrodef>
> @@ -42,7 +52,7 @@
>   <!--  
> *                                                                          * -->
>   <!--  
> **************************************************************************** -->
>
> -  <target name="test" depends="init">
> +  <target name="test" depends="init,extract-xalan-jar">
>     <test-file name="dacapo.jar" location="$
> {jikesrvm.dir}/.ant.properties"/>
>
>     <startResults/>
> @@ -58,7 +68,7 @@
>     <dacapo name="luindex"  heapsize="120"/>
>     <dacapo name="lusearch" heapsize="300"/>
>     <dacapo name="pmd"      heapsize="200"/>
> -    <dacapo name="xalan"    heapsize="150"/>
> +    <dacapo name="xalan"    heapsize="150" bootclasspath="-
> Xbootclasspath/p:xalan.jar" />
>
>     <finishResults/>
>   </target>
>
>
> This was sent by the SourceForge.net collaborative development  
> platform, the world's largest Open Source development site.
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008  
> 30-Day
> trial. Simplify your report design, integration and deployment - and  
> focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-commits mailing list
> Jikesrvm-commits@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-commits


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-core mailing list
Jikesrvm-core@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-core

Re: [rvm-core] [rvm-commits] SF.net SVN: jikesrvm:[15767] rvmroot/trunk

by Robin Garner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Also, the next release of the dacapo benchmarks won't have this problem
- it uses a custom classloader that gives preference to the benchmark
classes over the class library/boot classpath.

Robin

Steve Blackburn wrote:

> Just to be clear....
>
> 1.  DaCapo xalan desires to use xalan as a benchmark.  It is essential  
> that all JVMs use the same version when under test.   Therefore DaCapo  
> asserts that the version provided by the harness is used.
>
> 2.  The IBM JVM and the Harmony JVM are unique in my experience in  
> injecting the use of their own bundled version ahead of the supplied  
> version.  Sun, JRockit and Jikes RVM JVMs have all until now always  
> correctly used the provided version in preference to the bundled  
> version.
>
> 3.  As far as I am aware, it is an error that Harmony and IBM place  
> their bundled version of xalan ahead of the provided one.
>
> 4.  I discussed the above at some length with both IBM and Harmony  
> development teams some time ago, and with Kev Jones, who was then at  
> Intel and is an expert in this area, and who co-wrote the xalan  
> workload for us.  To the best of my knowledge the IBM/Harmony behavior  
> is incorrect.
>
> --Steve
>
>
> On 15/08/2009, at 7:19 AM, dgrove-oss@... wrote:
>
>  
>> Revision: 15767
>>          http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15767&view=rev
>> Author:   dgrove-oss
>> Date:     2009-08-14 21:19:29 +0000 (Fri, 14 Aug 2009)
>>
>> Log Message:
>> -----------
>> DaCapo xalan requires the VM to use a specific version of xalan,
>> which is not the same version found in modern JVM class libraries.
>> Add plumbing to tests.xml to allow test-specific settings of the
>> VM's bootclasspath and then use this mechanism in the dacapo build.xml
>> to ensure that the xalan code taken from the xalan.jar extracted from
>> dacapo.jar is loaded in preference to whatever xalan version may be
>> built-in to the classlibarary.
>>
>> Modified Paths:
>> --------------
>>    rvmroot/trunk/build/tests.xml
>>    rvmroot/trunk/testing/tests/dacapo/build.xml
>>
>> Modified: rvmroot/trunk/build/tests.xml
>> ===================================================================
>> --- rvmroot/trunk/build/tests.xml 2009-08-12 18:36:49 UTC (rev 15766)
>> +++ rvmroot/trunk/build/tests.xml 2009-08-14 21:19:29 UTC (rev 15767)
>> @@ -409,6 +409,7 @@
>>     <attribute name="class"/>
>>     <attribute name="args" default=""/>
>>     <attribute name="classpath" default=""/>
>> +    <attribute name="bootclasspath" default=""/>
>>     <attribute name="processors" default=""/>
>>     <attribute name="initialHeapSize" default=""/>
>>     <attribute name="maxHeapSize" default=""/>
>> @@ -423,6 +424,7 @@
>>                   class="@{class}"
>>                   args="@{args}"
>>                   classpath="@{classpath}"
>> +                  bootclasspath="@{bootclasspath}"
>>                   processors="@{processors}"
>>                   initialHeapSize="@{initialHeapSize}"
>>                   maxHeapSize="@{maxHeapSize}"
>> @@ -441,6 +443,7 @@
>>     <attribute name="class"/>
>>     <attribute name="args" default=""/>
>>     <attribute name="classpath" default=""/>
>> +    <attribute name="bootclasspath" default=""/>
>>     <attribute name="processors" default=""/>
>>     <attribute name="initialHeapSize" default=""/>
>>     <attribute name="maxHeapSize" default=""/>
>> @@ -474,6 +477,7 @@
>>       <setTestProperty tag="@{tag}" key="extra.args"  
>> default="@{rvmArgs}"/>
>>       <setTestProperty tag="@{tag}" key="extra.rvm.args" default=""/>
>>       <setTestProperty tag="@{tag}" key="class.path" default="$
>> {default.test.@{tag}.classpath}"/>
>> +      <setTestProperty tag="@{tag}" key="bootclass.path"  
>> default="@{bootclasspath}"/>
>>       <setTestProperty tag="@{tag}" key="time.limit" default="$
>> {default.test.@{tag}.timeLimit}"/>
>>       <setTestProperty tag="@{tag}" key="initial.heapsize" default="$
>> {default.test.@{tag}.initialHeapSize}"/>
>>       <setTestProperty tag="@{tag}" key="max.heapsize" default="$
>> {default.test.@{tag}.maxHeapSize}"/>
>> @@ -512,7 +516,7 @@
>>       <property name="test.@{tag}.rvm.wrapper-args" value=""/>
>>
>>       <property name="test.@{tag}.command"
>> -                value='${rvm.exe} ${test.@{tag}.rvm.args} -
>> classpath "${test.@{tag}.class.path}" ${test.@{tag}.class} $
>> {test.@{tag}.args}'/>
>> +                value='${rvm.exe} ${test.@{tag}.rvm.args} $
>> {test.@{tag}.bootclass.path} -classpath "${test.@{tag}.class.path}" $
>> {test.@{tag}.class} ${test.@{tag}.args}'/>
>>     </sequential>
>>   </macrodef>
>>
>> @@ -557,7 +561,7 @@
>>             <arg line="-o ${test.@{tag}.@{execution}.output.file}"/>
>>
>>             <!-- The RVM execution -->
>> -            <arg line="${rvm.exe} ${test.@{tag}.rvm.args}"/>
>> +            <arg line="${rvm.exe} ${test.@{tag}.rvm.args} $
>> {test.@{tag}.bootclass.path}"/>
>>             <arg value="-classpath"/>
>>             <arg value="${test.@{tag}.class.path}"/>
>>             <arg line="${test.@{tag}.class} ${test.@{tag}.args}"/>
>> @@ -613,6 +617,7 @@
>>     <attribute name="tag"/>
>>     <attribute name="class"/>
>>     <attribute name="classpath" default=""/>
>> +    <attribute name="bootclasspath" default=""/>
>>     <attribute name="args" default=""/>
>>     <attribute name="execution" default="default"/>
>>     <attribute name="initialHeapSize" default=""/>
>> @@ -624,6 +629,7 @@
>>            class="@{class}"
>>            args="@{args}"
>>            classpath="@{classpath}"
>> +           bootclasspath="@{bootclasspath}"
>>            initialHeapSize="@{initialHeapSize}"
>>            maxHeapSize="@{maxHeapSize}"
>>            rvmArgs="@{rvmArgs}"
>>
>> Modified: rvmroot/trunk/testing/tests/dacapo/build.xml
>> ===================================================================
>> --- rvmroot/trunk/testing/tests/dacapo/build.xml 2009-08-12 18:36:49  
>> UTC (rev 15766)
>> +++ rvmroot/trunk/testing/tests/dacapo/build.xml 2009-08-14 21:19:29  
>> UTC (rev 15767)
>> @@ -25,13 +25,23 @@
>>
>>   <property name="test.class.path" value="${dacapo.jar}"/>
>>
>> +  <target name="extract-xalan-jar" depends="init">
>> +    <test-file name="dacapo.jar" location="$
>> {jikesrvm.dir}/.ant.properties"/>
>> +    <unzip src="${dacapo.jar}" dest="${build.tests.dir}">
>> +      <patternset>
>> +        <include name="xalan.jar"/>
>> +      </patternset>
>> +    </unzip>
>> +  </target>
>> +
>>   <macrodef name="dacapo">
>>     <attribute name="name"/>
>>     <attribute name="timeLimit" default=""/>
>>     <attribute name="heapsize" default=""/>
>>     <attribute name="requires-display" default="false"/>
>> +    <attribute name="bootclasspath" default=""/>
>>     <sequential>
>> -      <rvm tag="@{name}" class="Harness" requires-
>> display="@{requires-display}" args="@{name}"  
>> timeLimit="@{timeLimit}" maxHeapSize="@{heapsize}"/>
>> +      <rvm tag="@{name}" class="Harness" requires-
>> display="@{requires-display}" args="@{name}"  
>> timeLimit="@{timeLimit}" maxHeapSize="@{heapsize}"  
>> bootclasspath="@{bootclasspath}"/>
>>       <outputSingleStatisticResults tag="@{name}" key="time"  
>> pattern="===== DaCapo @{name} PASSED in (.*) msec ====="/>
>>     </sequential>
>>   </macrodef>
>> @@ -42,7 +52,7 @@
>>   <!--  
>> *                                                                          * -->
>>   <!--  
>> **************************************************************************** -->
>>
>> -  <target name="test" depends="init">
>> +  <target name="test" depends="init,extract-xalan-jar">
>>     <test-file name="dacapo.jar" location="$
>> {jikesrvm.dir}/.ant.properties"/>
>>
>>     <startResults/>
>> @@ -58,7 +68,7 @@
>>     <dacapo name="luindex"  heapsize="120"/>
>>     <dacapo name="lusearch" heapsize="300"/>
>>     <dacapo name="pmd"      heapsize="200"/>
>> -    <dacapo name="xalan"    heapsize="150"/>
>> +    <dacapo name="xalan"    heapsize="150" bootclasspath="-
>> Xbootclasspath/p:xalan.jar" />
>>
>>     <finishResults/>
>>   </target>
>>
>>
>> This was sent by the SourceForge.net collaborative development  
>> platform, the world's largest Open Source development site.
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008  
>> 30-Day
>> trial. Simplify your report design, integration and deployment - and  
>> focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> Jikesrvm-commits mailing list
>> Jikesrvm-commits@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-commits
>>    
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-core mailing list
> Jikesrvm-core@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-core
>  


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-core mailing list
Jikesrvm-core@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-core