Request for review (URGENT!!) 7033141: assert(has_cp_cache(i)) failed: oob

Karen Kinnear karen.kinnear at oracle.com
Thu May 19 08:17:32 PDT 2011


Coleen,

Code looks good. Thank you for the latest update and testing.

Question - why did you remove the comments in instanceKlass.cpp lines  
368-375
for rewrite_class? Are those three cases no longer true? I did think  
there were perhaps
more cases if you include redefineclasses and the new rewrite/un- 
rewrite/rewrite on retry :-)

rewriter.cpp: line 412 - I think the comment would be "if there are  
exceptions rewriting bytecodes
or allocating the cpcache, not "or relocating bytecodes"

thanks,
Karen

On May 18, 2011, at 4:14 PM, Coleen Phillimore wrote:

>
> The last code change I sent out was not complete, and would not work  
> if there was an exception in the relocator.  The code was structured  
> as:
>
>   if klass->is_rewritten() flag {
>       verify - exit if exception
>       rewrite bytecodes to point to (to be created) cpCache rather  
> than constant pool
>       create constant pool cache  - (added restore_bytecodes and)  
> exit if exception
>       run relocator for jsr/ret    - exit if exception
>       link method entry points  - exit if exception
>       set rewritten flag
>  }
>
> Any exceptions will cause the whole block to be retried if the  
> exception is handled and class loading is attempted again for this  
> class.  This latest code effectively changes this ordering to:
>
>   if klass->is_rewritten() flag {
>     verify - exit if exception
>     rewrite bytecodes to point to cpCache rather than constant pool  
> entries
>      create constant pool  {
>          if exception restore bytecodes to point to constant pool
>          exit }
>      set rewritten flag
>  }
>  run relocator for jsr/ret - exit if exception
>  link method entry points - exit if exception
>
> If there's an exception in relocator and linking method stages,  
> these two actions are restartable if the VM handles the exception  
> and has to retry loading that class.   The actions under the  
> rewritten flag are not restartable.
>
> This is tested with invokedynamic tests, RedefineClasses tests and  
> class data sharing.  There was special testing to throw OOM at each  
> part and testing to rerun the relocator.
>
> This didn't make the deadline, but please review (again) for the  
> next stage of the jdk7 release.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/7033141_2/
> bug link at http://bugs.sun.com/view_bug.do?bug_id=7033141_2
>
> Thanks,
> Coleen
>
>
> On 5/17/2011 4:44 PM, Coleen Phillimore wrote:
>> Summary: Unrewrite bytecodes for OOM error allocating the constant  
>> pool cache.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/7033141/
>> bug link at http://bugs.sun.com/view_bug.do?bug_id=7033141
>>
>> This bug fix also moves linking methods outside of the rewriting  
>> code so that when the code cache is full, the vm can attempt to  
>> link the methods again.   (also fixes bug 6947901)
>>
>> Tested with oom errors inserted for random cpCache allocation and  
>> also tested with invokedynamic test.
>>
>> This is somewhat urgent.  If acceptable, I would like to put it  
>> back today for code freeze (if not, it'll wait).
>>
>> Thanks,
>> Coleen
>



More information about the hotspot-runtime-dev mailing list