[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>
    &nbsp;
    <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>
    &nbsp; <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>
  &nbsp; <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>
    &nbsp;&nbsp;
<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>
    &nbsp;&nbsp;
<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>
    &nbsp;&nbsp;
<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>
    &nbsp; vm.mlvm, nsk.jvmti, nsk.jdi tests on multiple platforms (32 vs
    64-bit too).<br>
    &nbsp; The testing looks good so far.<br>
    &nbsp; 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