NEW299166
Missing llint op_instanceof handler in LowLevelInterpreter32_64.asm breaks 32-bit C-loop builds
https://bugs.webkit.org/show_bug.cgi?id=299166
Summary Missing llint op_instanceof handler in LowLevelInterpreter32_64.asm breaks 32...
amaxcz
Reported 2025-09-19 02:33:43 PDT
Created attachment 476797 [details] original compiler bug Product: JavaScriptCore Component: LLInt / OfflineASM Version: 2.50.0 Platform: ARMv7 (32-bit, e.g. -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard) no NEON Summary: Building WebKitGTK 2.50.0 with ENABLE(C_LOOP)=ON on 32-bit ARM targets fails because the C loop interpreter now references the labels op_instanceof_return_location op_instanceof_return_location_wide16 op_instanceof_return_location_wide32 but the 32-bit offlineasm file (LowLevelInterpreter32_64.asm) never defines them. Steps to Reproduce: 1. Configure WebKitGTK 2.50.0 for armv7 with ENABLE(C_LOOP)=ON (Gentoo, gcc 13.2, -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard). 2. Run the build so that JavaScriptCore/llint/LowLevelInterpreter.cpp is compiled. Expected Results: Compilation succeeds; the LLInt C loop backend provides all required opcode return labels. Actual Results: Compilation stops with errors similar to: Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:286: error: label 'op_instanceof_return_location' used but not defined ... The new opcode return helper was added to BytecodeList.rb and LLIntOpcode.h, so LowLevelInterpreter.cpp assumes the labels exist, but LowLevelInterpreter32_64.asm still only has llintSlowPathOp(instanceof) and therefore never emits the labels for the C loop build. Additional Notes: * LowLevelInterpreter64.asm in 2.50.0 already contains a full llintOpWithMetadata(op_instanceof, ...) implementation that generates the return labels. * Copying/porting that block into LowLevelInterpreter32_64.asm restores the missing labels and fixes the build on armv7. * The issue affects any 32-bit ARM build that enables the LLInt C loop (confirmed on Gentoo cross-distcc armv7 setup). Suggested Fix: Port the op_instanceof handler from LowLevelInterpreter64.asm into LowLevelInterpreter32_64.asm so that offlineasm emits _return_location labels for all operand widths in 32-bit builds.
Attachments
original compiler bug (4.45 MB, text/plain)
2025-09-19 02:33 PDT, amaxcz
no flags
Bugfix for 32bit builds (3.87 KB, patch)
2025-09-19 02:35 PDT, amaxcz
no flags
Bugfix for 32bit builds v2 (3.88 KB, patch)
2025-09-19 03:36 PDT, amaxcz
no flags
Bugfix for 32bit builds v3 (4.23 KB, patch)
2025-09-19 04:57 PDT, amaxcz
no flags
amaxcz
Comment 1 2025-09-19 02:35:53 PDT
Created attachment 476798 [details] Bugfix for 32bit builds
amaxcz
Comment 2 2025-09-19 03:36:56 PDT
Created attachment 476799 [details] Bugfix for 32bit builds v2
amaxcz
Comment 3 2025-09-19 04:57:31 PDT
Created attachment 476800 [details] Bugfix for 32bit builds v3
Radar WebKit Bug Importer
Comment 4 2025-09-26 02:34:19 PDT
Note You need to log in before you can comment on or make changes to this bug.