Request for reviews (XXS): 6868269 CompileTheWorld assertion failure introduced by the reexecute bit implementation

changpeng fang - Sun Microsystems - Santa Clara United States Changpeng.Fang at Sun.COM
Tue Aug 4 16:31:09 PDT 2009


Sorry, the updated webrev is 
http://cr.openjdk.java.net/~cfang/6868269/webrev.01/

Changpeng

On 08/04/09 16:28, changpeng fang - Sun Microsystems - Santa Clara 
United States wrote:
> http://cr.openjdk.java.net/~cfang/6868269/webrev.00/
>
> Done! I modified the implementation of reexecute bit for Object.clone 
> and Arrays.copyOf intrinsics,
> and kept the assertion in JVMState::same_calls_as. This means we 
> should expect only one reexecute
> state for a particular bci.
>
> Thanks,
>
> Changpeng
>
>
> On 08/04/09 10:56, Tom Rodriguez wrote:
>> That seems cleaner to me.
>>
>> tom
>>
>> On Aug 4, 2009, at 10:17 AM, Vladimir Kozlov wrote:
>>
>>> So after discussion with Changpeng I now understand what happened.
>>> The path which don't have reexecute state is uncommon trap
>>> in null_check_receiver() at the beginning of inline_native_clone()
>>> because it is not in the PreserveReexecuteState scope.
>>> So the other solution of this bug is including null_check_receiver()
>>> into the PreserveReexecuteState scope.
>>>
>>> Vladimir
>>>
>>> Vladimir Kozlov wrote:
>>>> Good.
>>>> Vladimir
>>>> changpeng fang - Sun Microsystems - Santa Clara United States wrote:
>>>>> http://cr.openjdk.java.net/~cfang/6868269/webrev.00/
>>>>>
>>>>> Problem: For inline_native_clone, there are two exceptions with 
>>>>> different reexecute states.
>>>>> This caused the assertion on JVMState::same_calls_as
>>>>>
>>>>> Solution: JVMState::same_calls_as was designed to verify the same 
>>>>> method/bci pairs. The current
>>>>> implementation of reexecute logic does not require the same 
>>>>> method/bci to have a single reexecute
>>>>> state, i.e. the implementer could change the reexecute state 
>>>>> during the parsing of a bci.
>>>>>
>>>>> So the solution is simply remove the following line in 
>>>>> JVMState::same_calls_as:
>>>>>
>>>>> -     if (p->_reexecute != q->_reexecute)  return false;
>>>>>
>>>>>
>>>>>
>>>>> Tests: JPRT, CompileTheWorld!
>>>>>
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>>
>>>>> Changpeng
>>>>>
>>
>




More information about the hotspot-compiler-dev mailing list