On Thu, 15 Jan 2026 08:13:17 GMT, Yasumasa Suenaga <[email protected]> wrote:

>> The binary I have was built with VS2022-17.13.2.
>
> I saw same lines on [GHA 
> results](https://github.com/YaSuenag/jdk/actions/runs/20984170537/artifacts/5123260970)
>  - it used VS 2022 to build. Repeats of 
> `NoFramePointer!Java_LingeredAppWithNativeMethod_callJNI` is expected. It is 
> inlined `fib()` as you said.
> 
> I saw callJNI + 0xdb and 0xd0 are repeated as following:
> 
> 
> 0x00007ffa9b0e10db    NoFramePointer!Java_LingeredAppWithNativeMethod_callJNI 
> + 0xdb
> 0x00007ffa9b0e10d0    NoFramePointer!Java_LingeredAppWithNativeMethod_callJNI 
> + 0xd0
> 0x00007ffa9b0e10db    NoFramePointer!Java_LingeredAppWithNativeMethod_callJNI 
> + 0xdb
> 0x00007ffa9b0e10d0    NoFramePointer!Java_LingeredAppWithNativeMethod_callJNI 
> + 0xd0
> 
> 
> I got [GHA artifacts of debug 
> build](https://github.com/YaSuenag/jdk/actions/runs/20984170537/artifacts/5122848054)
>  and disassembled NoFramePointer.dll, then I saw following code around 
> callJNI + 0xdb and 0xd0:
> 
>   00000001800010A8: 48 89 5C 24 08     mov         qword ptr [rsp+8],rbx
>   00000001800010AD: 57                 push        rdi
>   00000001800010AE: 48 83 EC 20        sub         rsp,20h
>   00000001800010B2: 8B F9              mov         edi,ecx
>   00000001800010B4: 85 C9              test        ecx,ecx
>   00000001800010B6: 75 04              jne         00000001800010BC
>   00000001800010B8: 33 C0              xor         eax,eax
>   00000001800010BA: EB 22              jmp         00000001800010DE
>   00000001800010BC: 83 FF 02           cmp         edi,2
>   00000001800010BF: 7F 07              jg          00000001800010C8
>   00000001800010C1: B8 01 00 00 00     mov         eax,1
>   00000001800010C6: EB 16              jmp         00000001800010DE
>   00000001800010C8: 83 C1 FE           add         ecx,0FFFFFFFEh
>   00000001800010CB: E8 D8 FF FF FF     call        00000001800010A8
>   00000001800010D0: 8D 4F FF           lea         ecx,[rdi-1]
>   00000001800010D3: 48 8B D8           mov         rbx,rax
>   00000001800010D6: E8 CD FF FF FF     call        00000001800010A8
>   00000001800010DB: 48 03 C3           add         rax,rbx
> 
> 
> It makes recursive call to 0x1800010A8 (callJNI + 0xa8) until the condition 
> is met. According to NoFramePointer.dll.map in build artifact, callJNI + 0xa8 
> is `fib()` in libNoFramePointer.c.

Ok. thanks for looking into this.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29019#discussion_r2695610922

Reply via email to