hs25 review request: 8007037 JSR 292: the VM_RedefineClasses::append_entry() should do cross-checks with indy operands
coleen.phillimore at oracle.com
Tue Apr 2 15:45:35 PDT 2013
This looks good from how much I understand of these two things. There is
one problem that I found though. In ConstantPool::extend_operands() and
shrink_operands() when you allocate a new Array<u2>* and assign it to
the from_cp, you have to explicitly deallocate the operands that were
there with MetadataFactory::free_array<u2>() or they will leak. This
isn't true if you backport this code to 7u.
On 03/27/2013 07:45 PM, serguei.spitsyn at oracle.com wrote:
> Please, review the hs25 fix below.
> Open webrev:
> 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:
> 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*:
> A CP item of the type *CONSTANT_InvokeDynamic_inf* has an index into
> the *bootstrap method attribute* of the class file:
> 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
> 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.
More information about the hotspot-dev