[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: hs25 review request: 8007037 JSR 292: the VM_RedefineClasses::append_entry()
From: "serguei.spitsyn () oracle ! com" <serguei ! spitsyn () oracle ! com>
Date: 2013-03-27 23:45:04
Message-ID: 51538480.4010504 () oracle ! com
[Download RAW message or body]
Please, review the hs25 fix below.
Open webrev:
http://cr.openjdk.java.net/~sspitsyn/webrevs/2013/hotspot/8007037-JVMTI-JSR292.1/
CR:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8007037
https://jbs.oracle.com/bugs/browse/JDK-8007037
References from INDY bootstrap method specifier operands to CP entries
and back must be correctly merged at class redefinition.
Some background.
An invokedynamic bytecode spec:
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.invokedynamic
A invokedynamic instruction has an argument which is an index to the
*Constant Pool* item.
That index must be a symbolic reference to a *call-site specifier*:
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.10
A CP item of the type *CONSTANT_InvokeDynamic_inf* has an index into
the *bootstrap method attribute* of the class file:
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.21
The *|BootstrapMethods|* attribute elements normally have references to
other *Constant Pool* items.
In VM the *bootstrap method attribute* is represented by the *operands*
array of the *ConstantPool*.
The problem is is that all the force and back cross links between
*ConstantPool* elements
and *operands* array elements must be correctly merged at class
redefinition.
Test coverage:
vm.mlvm, nsk.jvmti, nsk.jdi tests on multiple platforms (32 vs 64-bit
too).
The testing looks good so far.
One difficulty is that new vm.mlvm tests are currently failed because
of multiple reasons.
Thanks,
Serguei
[Attachment #3 (text/html)]
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Please, review the hs25 fix below.<br>
<br>
Open webrev:<br>
<a class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Esspitsyn/webrevs/2013/hotspot/8008511-JVMTI-JSR292 \
.1/">http://cr.openjdk.java.net/~sspitsyn/webrevs/2013/hotspot/8007037-JVMTI-JSR292.1/</a><br>
<br>
CR:<br>
<a class="moz-txt-link-freetext"
href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8008511">http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8007037</a><br>
<a class="moz-txt-link-freetext"
href="https://jbs.oracle.com/bugs/browse/JDK-8008511">https://jbs.oracle.com/bugs/browse/JDK-8007037</a><br>
<br>
<br>
References from INDY bootstrap method specifier operands to CP
entries<br>
and back must be correctly merged at class redefinition.<br>
<br>
Some background.<br>
<br>
An invokedynamic bytecode spec:<br>
<a class="moz-txt-link-freetext" \
href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.invokedyn \
amic">http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.invokedynamic</a><br>
<br>
A invokedynamic instruction has an argument which is an index to the
<b>Constant Pool</b> item.<br>
That index must be a symbolic reference to a <b>call-site specifier</b>:<br>
<a class="moz-txt-link-freetext" \
href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.10">http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.10</a><br>
<br>
A CP item
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
of the type <b>CONSTANT_InvokeDynamic_inf</b> has an index into<br>
the <b>bootstrap method attribute</b> of the class file:<br>
<a class="moz-txt-link-freetext" \
href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.21">http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.21</a><br>
<br>
The
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<b><code class="literal">BootstrapMethods</code></b> attribute
elements normally have references to other <b>Constant Pool</b>
items.<br>
<br>
In VM the <b>bootstrap method attribute</b> is represented by the <b>operands</b>
array of the <b>ConstantPool</b>.<br>
<br>
The problem is is that all the force and back cross links between \
<b>ConstantPool</b> elements<br>
and <b>operands</b> array elements must be correctly merged at
class redefinition.<br>
<br>
Test coverage:<br>
vm.mlvm, nsk.jvmti, nsk.jdi tests on multiple platforms (32 vs
64-bit too).<br>
The testing looks good so far.<br>
One difficulty is that new vm.mlvm tests are currently failed
because of multiple reasons.<br>
<br>
<br>
Thanks,<br>
Serguei<br>
<br>
<br>
</body>
</html>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic