Oliver Deakin wrote:
Mark Hindess wrote:
In message <4a7031f1.3020...@apache.org>, Gregory Shimansky writes:
Oliver Deakin said the following on 29.07.2009 15:20:
Hi all,

After determining the cause of HARMONY-6246 [1] I discovered that it has already been fixed in the Java 6 branch, where I recently applied the contribution in HARMONY-6187 [2]. This got me thinking - there have been a number of bug fixes, performance improvements and portability changes made which were applied in that contribution and it is likely we will hit some of the same issues again in the Java 5 branch which have already been fixed in Java 6.

Is it possible for us just to use the updated Java 6 branch JDWP in our Java 5 builds as well? Not only would we benefit from the code improvements made there, we would have one unified code base for JDWP (and possibly the whole of jdktools?).

Any comments on this idea?
If JDWP agent with Java6 update doesn't demand that VM support new features of JVMTI (that is it can work with Java5 VM), I think it is a good idea. Backporting all of the bugfixes may be quite difficult since it is necessary to separate pure bugfixes from Java6 enhancements in [2].

[1] https://issues.apache.org/jira/browse/HARMONY-6246
[2] https://issues.apache.org/jira/browse/HARMONY-6187

Does the current combination of DRLVM and java6 branch JDWP work
consistently?  That is, do all of hardcoded (?) capabilities[0] that
JDWP claims are supported work with DRLVM as expected?

Does any of the Java 5 JDWP functionality require 6.0 JVMTI calls?

I need to do a bit more investigation on this - I would hope the Java 5 functionality wouldn't require any JVMTI calls from Java 6, but will need to confirm that. When I get a chance Ill have a look at the new JVMTI functions introduced into Java 6 and where they are used in JDWP.

Ok, I wrote a quick Java class to scan all the source from the Java 5 and 6 JDWP trees and pull out the JVMTI functions called, then compare the two lists to each other to see the differences. I found that in the Java 6 version we use the following 10 functions not available in Java 5 JVMTI:

GetClassVersionNumbers
ForceEarlyReturnDouble/Float/Void/Long/Int/Object
GetOwnedMonitorStackDepthInfo
FollowReferences
GetConstantPool

I had a scan through the JDWP source containing these function calls and they all reside in JDWP event handlers which are Java 6 only, so I believe in a Java 5 debugging environment no Java 6 JVMTI calls should ever be made.

Im going to start investigating the test failures I see running the JDWP suites with the Java 6 agent to make sure they are not caused by any other use of Java 6 features I may have missed.

Regards,
Oliver


Regards,
Oliver

Assuming the answers to the above are yes, yes and no, then I see no
problem.  If anyone needs a JDWP for a Java 5 VM then we'd just need
to #ifdef the reporting of the capabilities to stop 6.0 calls being
invoked.

Regards,
 Mark.

[0] particularly java 6 ones such as canGetInstanceInfo,
    canRequestMonitorEvents, canGetMonitorFrameInfo,
   canUseSourceNameFilters, canGetConstantPool, and canForceEarlyReturn





--
Oliver Deakin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU

Reply via email to