On Thu, 1 Sep 2022 21:12:08 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

>> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java
>>  line 242:
>> 
>>> 240:   private boolean canUsePageCacheFor64bitRead(long address) {
>>> 241:     long pageMask = ~(pageSize - 1);
>>> 242:     if ((address & pageMask) != ((address + 4) & pageMask)) {
>> 
>> This looks a bit over-complicated.
>> Maybe something like
>> `    long pageMask = pageSize - 1;
>>     if ((address & pageMask) > (pageSize - 8)) {
>>       return false;
>>     }`
>
> I tinkered with this code quite a bit before I had something that both worked 
> and I liked. I don't know that your approach is actually any simpler, and at 
> the moment I still prefer mine, but that might just be because I'm more 
> familiar with it. However, it does seem that there should be a more elegant 
> way of doing this.

Your code works only for the exact case - address of 64bit value points to the 
last 32bit of the page.

My idea is to use more generic approach - check that the whole value is in the 
page, i.e. this is special case of more common

boolean canUsePageCacheForRead(long address, int bits) {
   long pageMask = pageSize - 1;
   return ((address & pageMask) <= (pageSize - bits/8));
}


But I have no strong objections, feel free to keep your version

-------------

PR: https://git.openjdk.org/jdk/pull/10090

Reply via email to