[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