[12] RFR(S) 8210220: [AOT] jdwp test cases are failing with error # ERROR: TEST FAILED: Cought IOException while receiving event packet
dean.long at oracle.com
dean.long at oracle.com
Thu Sep 13 19:44:07 UTC 2018
No it's fine. I wasn't looking at the full context. Sorry for the
confusion. This version is good.
dl
On 9/13/18 12:25 PM, Vladimir Kozlov wrote:
> No, first PauseNoSafepointVerifier is on the path where we exit
> function without publishing AOT method.
> May be my comment there is not clear. Do you have better suggestion
> for comment?
>
> Thanks,
> Vladimir
>
> On 9/13/18 11:59 AM, dean.long at oracle.com wrote:
>> After the first PauseNoSafepointVerifier, I think you need to check
>> mh->number_of_breakpoints() again, because it could have changed.
>>
>> dl
>>
>> On 9/13/18 9:01 AM, Vladimir Kozlov wrote:
>>> Updated changes with NoSafepointVerifier:
>>>
>>> http://cr.openjdk.java.net/~kvn/8210220/webrev.01/
>>>
>>> Vladimir
>>>
>>> On 9/12/18 9:00 PM, Vladimir Kozlov wrote:
>>>> Yes, you are right I will add NoSafepointVerifier and will rerun
>>>> testing.
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 9/12/18 6:51 PM, dean.long at oracle.com wrote:
>>>>> On 9/12/18 6:25 PM, Vladimir Kozlov wrote:
>>>>>> Thank you, Dean
>>>>>>
>>>>>> Breakpoint is set at safepoint:
>>>>>>
>>>>>> http://hg.openjdk.java.net/jdk/jdk/file/b7bfd64e43a6/src/hotspot/share/prims/jvmtiImpl.cpp#l411
>>>>>>
>>>>>>
>>>>>> But why it is important to not be at safepoint in publish_aot().
>>>>>> If AOT is registered first and then breakpoint is set AOT methods
>>>>>> will be deoptimized by CodeCache::flush_dependents_on_method()
>>>>>> which is called from BreakpointInfo::set().
>>>>>
>>>>> I mean you can't do this:
>>>>>
>>>>> 1) check breakpoint count
>>>>> 2) safepoint
>>>>> 3) register code
>>>>>
>>>>> The AOT code is not visible to
>>>>> CodeCache::flush_dependents_on_method() until the cmpxchg().
>>>>> NoSafepointVerifier would catch any changes in the future that
>>>>> introduce a safepoint.
>>>>>
>>>>> dl
>>>>>
>>>>>>
>>>>>> Vladimir
>>>>>>
>>>>>> On 9/12/18 5:45 PM, dean.long at oracle.com wrote:
>>>>>>> Hi Vladimir. C1 and C2 use ciEnv which also grabs locks and
>>>>>>> checks JvmtiExport::can_hotswap_or_post_breakpoint() and
>>>>>>> Dependencies::check_evol_method(). But if the breakpoint count
>>>>>>> can only be changed by the VM thread at a safepoint, then your
>>>>>>> fix looks good as long as we don't enter a safepoint before the
>>>>>>> code is registered. How about adding a NoSafepointVerifier to
>>>>>>> publish_aot()?
>>>>>>>
>>>>>>> dl
>>>>>>>
>>>>>>>
>>>>>>> On 9/12/18 1:52 PM, Vladimir Kozlov wrote:
>>>>>>>> http://cr.openjdk.java.net/~kvn/8210220/webrev.00/
>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8210220
>>>>>>>>
>>>>>>>> Don't register AOT method if corresponding java method has
>>>>>>>> breakpoints (for debugging) otherwise AOT method will be
>>>>>>>> executed which do not stop at breakpoint. JIT has similar check
>>>>>>>> [1].
>>>>>>>>
>>>>>>>> I also removed AOT code which is not used and we forgot to remove.
>>>>>>>>
>>>>>>>> Tested hs-tier1-3.
>>>>>>>>
>>>>>>>> thanks,
>>>>>>>> Vladimir
>>>>>>>>
>>>>>>>> [1]
>>>>>>>> http://hg.openjdk.java.net/jdk/jdk/file/75261571c13d/src/hotspot/share/oops/method.cpp#l845
>>>>>>>
>>>>>
>>
More information about the hotspot-compiler-dev
mailing list