Commit db84777
committed
fix: x86_64 string comparison ABI mismatch — js_string_equals returned bool not i32
js_string_equals and js_bigint_eq were declared as returning bool (1 byte
in al register on x86_64) but the Cranelift codegen declared them as
returning I32 (reads full eax). On x86_64 Linux, the upper 24 bits of eax
contain garbage from previous operations, making every string === comparison
return true. This broke typeof checks, switch/case on strings, and any
string equality in compiled code.
Changed both functions to return i32 with explicit 0/1 values, and updated
all internal callers to handle i32 returns.
Fixes Bug #12 ABI string generation returning empty on x86_64.1 parent 10dead0 commit db84777
4 files changed
Lines changed: 21 additions & 22 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
792 | 792 | | |
793 | 793 | | |
794 | 794 | | |
795 | | - | |
| 795 | + | |
796 | 796 | | |
797 | 797 | | |
798 | 798 | | |
799 | | - | |
| 799 | + | |
800 | 800 | | |
801 | 801 | | |
802 | | - | |
| 802 | + | |
803 | 803 | | |
804 | 804 | | |
805 | 805 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
968 | 968 | | |
969 | 969 | | |
970 | 970 | | |
971 | | - | |
| 971 | + | |
972 | 972 | | |
973 | 973 | | |
974 | 974 | | |
| |||
1120 | 1120 | | |
1121 | 1121 | | |
1122 | 1122 | | |
1123 | | - | |
| 1123 | + | |
1124 | 1124 | | |
1125 | 1125 | | |
1126 | 1126 | | |
| |||
1266 | 1266 | | |
1267 | 1267 | | |
1268 | 1268 | | |
1269 | | - | |
| 1269 | + | |
1270 | 1270 | | |
1271 | 1271 | | |
1272 | 1272 | | |
| |||
1365 | 1365 | | |
1366 | 1366 | | |
1367 | 1367 | | |
1368 | | - | |
| 1368 | + | |
1369 | 1369 | | |
1370 | 1370 | | |
1371 | 1371 | | |
| |||
1443 | 1443 | | |
1444 | 1444 | | |
1445 | 1445 | | |
1446 | | - | |
| 1446 | + | |
1447 | 1447 | | |
1448 | 1448 | | |
1449 | 1449 | | |
| |||
1699 | 1699 | | |
1700 | 1700 | | |
1701 | 1701 | | |
1702 | | - | |
| 1702 | + | |
1703 | 1703 | | |
1704 | 1704 | | |
1705 | 1705 | | |
| |||
1827 | 1827 | | |
1828 | 1828 | | |
1829 | 1829 | | |
1830 | | - | |
| 1830 | + | |
1831 | 1831 | | |
1832 | 1832 | | |
1833 | 1833 | | |
| |||
1989 | 1989 | | |
1990 | 1990 | | |
1991 | 1991 | | |
1992 | | - | |
| 1992 | + | |
1993 | 1993 | | |
1994 | 1994 | | |
1995 | 1995 | | |
| |||
2487 | 2487 | | |
2488 | 2488 | | |
2489 | 2489 | | |
2490 | | - | |
| 2490 | + | |
2491 | 2491 | | |
2492 | 2492 | | |
2493 | 2493 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
439 | 439 | | |
440 | 440 | | |
441 | 441 | | |
442 | | - | |
| 442 | + | |
443 | 443 | | |
444 | 444 | | |
445 | | - | |
| 445 | + | |
446 | 446 | | |
447 | 447 | | |
448 | 448 | | |
449 | 449 | | |
450 | 450 | | |
451 | | - | |
| 451 | + | |
452 | 452 | | |
453 | 453 | | |
454 | | - | |
| 454 | + | |
455 | 455 | | |
456 | 456 | | |
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | 460 | | |
461 | | - | |
| 461 | + | |
462 | 462 | | |
463 | 463 | | |
464 | 464 | | |
465 | 465 | | |
466 | 466 | | |
467 | 467 | | |
468 | 468 | | |
469 | | - | |
| 469 | + | |
470 | 470 | | |
471 | 471 | | |
472 | 472 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
965 | 965 | | |
966 | 966 | | |
967 | 967 | | |
968 | | - | |
969 | | - | |
| 968 | + | |
970 | 969 | | |
971 | 970 | | |
972 | 971 | | |
973 | 972 | | |
974 | 973 | | |
975 | 974 | | |
976 | | - | |
| 975 | + | |
977 | 976 | | |
978 | 977 | | |
979 | 978 | | |
| |||
1181 | 1180 | | |
1182 | 1181 | | |
1183 | 1182 | | |
1184 | | - | |
| 1183 | + | |
1185 | 1184 | | |
1186 | 1185 | | |
1187 | 1186 | | |
| |||
0 commit comments