<div dir="ltr"><div class="gmail-contents_d3ae0d" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:16px;vertical-align:baseline;outline:0px"><div id="gmail-message-content-1235769657676271646" class="gmail-markup_a7e664 gmail-messageContent_abea64" style="margin-top:0px;margin-right:0px;margin-bottom:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:1rem;vertical-align:baseline;outline:0px;line-height:1.375rem;overflow:hidden"><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">Hello everyone</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">,</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
I</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">'m a simulator developer working on ARM </span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px"><</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">-</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">> X86 simulator development</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
I</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">'ve run into an issue , the crash occurred while running an x86 version of dbeaver on an ARM processor. </span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">(</span><a class="gmail-anchor_c8ddc0 gmail-anchorUnderlineOnHover__03b72" href="https://github.com/dbeaver/dbeaver" rel="noreferrer noopener" target="_blank" title="https://github.com/dbeaver/dbeaver" role="button" tabindex="0" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px;word-break:break-word"><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">https://github.com/dbeaver/dbeaver</span></a><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">)</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
As a Java novice</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, I tried debugging with jdb and initially found that the instanceof operation returns different results on x86 and ARM architectures</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
So</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, I wanted to examine the specific execution process of instanceof using the </span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">-Xint mode</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">. However</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, I could only find the instanceof execution during the JIT process </span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">(</span><a class="gmail-anchor_c8ddc0 gmail-anchorUnderlineOnHover__03b72" href="https://github.com/openjdk/jdk/blob/6bef0474c8b8773d0d20c0f25c36a2ce9cdbd7e8/src/hotspot/cpu/x86/templateTable_x86.cpp#L4243" rel="noreferrer noopener" target="_blank" title="https://github.com/openjdk/jdk/blob/6bef0474c8b8773d0d20c0f25c36a2ce9cdbd7e8/src/hotspot/cpu/x86/templateTable_x86.cpp#L4243" role="button" tabindex="0" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px;word-break:break-word"><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">https://github.com/openjdk/jdk/blob/6bef0474c8b8773d0d20c0f25c36a2ce9cdbd7e8/src/hotspot/cpu/x86/templateTable_x86.cpp#L4243</span></a><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">)</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
I couldn</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">'t locate where instanceof is executed in the interpreter</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">. I tried searching all files within the project containing instanceof and adding print statements</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, but to no avail</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">. Perhaps I made a mistake somewhere</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
I thought the most likely place where the interpreter executes instanceof would be</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">: </span><a class="gmail-anchor_c8ddc0 gmail-anchorUnderlineOnHover__03b72" href="https://github.com/openjdk/jdk/blob/6bef0474c8b8773d0d20c0f25c36a2ce9cdbd7e8/src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp#L2079" rel="noreferrer noopener" target="_blank" title="https://github.com/openjdk/jdk/blob/6bef0474c8b8773d0d20c0f25c36a2ce9cdbd7e8/src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp#L2079" role="button" tabindex="0" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px;word-break:break-word"><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">https://github.com/openjdk/jdk/blob/6bef0474c8b8773d0d20c0f25c36a2ce9cdbd7e8/src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp#L2079</span></a><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
However</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, it seems that it didn</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">'t execute there either</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">.</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">
So</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, my question is</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">, where does the openjdk JVM interpreter execute the bytecode instanceof operation</span><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px">?</span></div><div id="gmail-message-content-1235769657676271646" class="gmail-markup_a7e664 gmail-messageContent_abea64" style="margin-top:0px;margin-right:0px;margin-bottom:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:1rem;vertical-align:baseline;outline:0px;line-height:1.375rem;overflow:hidden"><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px"><br></span></div><div id="gmail-message-content-1235769657676271646" class="gmail-markup_a7e664 gmail-messageContent_abea64" style="margin-top:0px;margin-right:0px;margin-bottom:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:1rem;vertical-align:baseline;outline:0px;line-height:1.375rem;overflow:hidden"><span style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;outline:0px"><br></span></div></div></div>