Request for reviews (XXS): 6868269 CompileTheWorld assertion failure introduced by the reexecute bit implementation
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Tue Aug 4 16:34:03 PDT 2009
looks good.
tom
On Aug 4, 2009, at 4:31 PM, changpeng fang - Sun Microsystems - Santa
Clara United States wrote:
> 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