Request for reviews (M): 6833129 : specjvm98 fails with NullPointerException in the compiler with -XX:DeoptimizeALot

changpeng fang - Sun Microsystems - Santa Clara United States Changpeng.Fang at Sun.COM
Mon Jul 6 17:21:46 PDT 2009


http://cr.openjdk.java.net/~cfang/6833129/webrev.01/

On 07/06/09 15:49, Vladimir Kozlov wrote:
> I would put "restart" variable at the same scope as
> the call since it is not used in
> src/share/vm/classfile/javaClasses.cpp
>
> I would add a comment about new decoding/encoding in
> src/share/vm/code/debugInfo.hpp
>
> The new code in src/share/vm/opto/bytecodeInfo.cpp
> should be an assert (not the flag setting) since
> the restart bytecode should be the top frame.
> assert(!caller_jvms->is_restart(), "there should be no restart 
> bytecode with inlining");
>
Thanks.

> Also in src/share/vm/opto/callnode.hpp add an assert
> to check that bci is no changed when _restart is set
> void set_bci(int bci) { assert(!_restart, ""); _bci = bci; }
Do you meant the restart bit must be false at the time that we
set up bci?

> We talked about using  PreserveJVMState pjvms(this) instead
> of restoring stack and restart flag in intrinsics?
> Why you did not use it?
 Just as we discussed a moment ago, I added an assert restart false before
we set it to true.

Here is the updated webrev link!
http://cr.openjdk.java.net/~cfang/6833129/webrev.01/

Thanks,

Changpeng

> thanks,
> Vladimir
>
> changpeng fang - Sun Microsystems - Santa Clara United States wrote:
>> http://cr.openjdk.java.net/~cfang/6833129/webrev.00/
>>
>> Problem:
>> The problem is in intrinsics Object.clone and Arrays.copyOf. When 
>> de-optimization occurs on the slow path for array/instance
>> allocation, the Interpreter will continue execution in next bc after 
>> the slow allocation calls without actual copying.
>>
>> Solution:
>> Add a restart bit in debuginfo to direct the deopt to restart 
>> execution of the bytecode  that invokes  Object.clone/Arrays.copyOf.
>> The restart bit is set up in Inline Intrinsics of 
>> Object.clone/Arrays.copyOf.
>>
>> Tests:
>> Passed specjvm98, JPRT and the test case of clone in the bug report.
>>
>> Thanks,
>>
>> Changpeng
>>




More information about the hotspot-compiler-dev mailing list