diff options
Diffstat (limited to 'src/lib_ffi.c')
-rw-r--r-- | src/lib_ffi.c | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/lib_ffi.c b/src/lib_ffi.c index 8032411e..b3da1f3e 100644 --- a/src/lib_ffi.c +++ b/src/lib_ffi.c | |||
@@ -720,50 +720,47 @@ LJLIB_CF(ffi_fill) LJLIB_REC(.) | |||
720 | return 0; | 720 | return 0; |
721 | } | 721 | } |
722 | 722 | ||
723 | #define H_(le, be) LJ_ENDIAN_SELECT(0x##le, 0x##be) | ||
724 | |||
725 | /* Test ABI string. */ | 723 | /* Test ABI string. */ |
726 | LJLIB_CF(ffi_abi) LJLIB_REC(.) | 724 | LJLIB_CF(ffi_abi) LJLIB_REC(.) |
727 | { | 725 | { |
728 | GCstr *s = lj_lib_checkstr(L, 1); | 726 | GCstr *s = lj_lib_checkstr(L, 1); |
729 | int b = 0; | 727 | int b = lj_cparse_case(s, |
730 | switch (s->hash) { | ||
731 | #if LJ_64 | 728 | #if LJ_64 |
732 | case H_(849858eb,ad35fd06): b = 1; break; /* 64bit */ | 729 | "\00564bit" |
733 | #else | 730 | #else |
734 | case H_(662d3c79,d0e22477): b = 1; break; /* 32bit */ | 731 | "\00532bit" |
735 | #endif | 732 | #endif |
736 | #if LJ_ARCH_HASFPU | 733 | #if LJ_ARCH_HASFPU |
737 | case H_(e33ee463,e33ee463): b = 1; break; /* fpu */ | 734 | "\003fpu" |
738 | #endif | 735 | #endif |
739 | #if LJ_ABI_SOFTFP | 736 | #if LJ_ABI_SOFTFP |
740 | case H_(61211a23,c2e8c81c): b = 1; break; /* softfp */ | 737 | "\006softfp" |
741 | #else | 738 | #else |
742 | case H_(539417a8,8ce0812f): b = 1; break; /* hardfp */ | 739 | "\006hardfp" |
743 | #endif | 740 | #endif |
744 | #if LJ_ABI_EABI | 741 | #if LJ_ABI_EABI |
745 | case H_(2182df8f,f2ed1152): b = 1; break; /* eabi */ | 742 | "\004eabi" |
746 | #endif | 743 | #endif |
747 | #if LJ_ABI_WIN | 744 | #if LJ_ABI_WIN |
748 | case H_(4ab624a8,4ab624a8): b = 1; break; /* win */ | 745 | "\003win" |
749 | #endif | 746 | #endif |
750 | #if LJ_TARGET_UWP | 747 | #if LJ_TARGET_UWP |
751 | case H_(a40f0bcb,a40f0bcb): b = 1; break; /* uwp */ | 748 | "\003uwp" |
749 | #endif | ||
750 | #if LJ_LE | ||
751 | "\002le" | ||
752 | #else | ||
753 | "\002be" | ||
752 | #endif | 754 | #endif |
753 | case H_(3af93066,1f001464): b = 1; break; /* le/be */ | ||
754 | #if LJ_GC64 | 755 | #if LJ_GC64 |
755 | case H_(9e89d2c9,13c83c92): b = 1; break; /* gc64 */ | 756 | "\004gc64" |
756 | #endif | 757 | #endif |
757 | default: | 758 | ) >= 0; |
758 | break; | ||
759 | } | ||
760 | setboolV(L->top-1, b); | 759 | setboolV(L->top-1, b); |
761 | setboolV(&G(L)->tmptv2, b); /* Remember for trace recorder. */ | 760 | setboolV(&G(L)->tmptv2, b); /* Remember for trace recorder. */ |
762 | return 1; | 761 | return 1; |
763 | } | 762 | } |
764 | 763 | ||
765 | #undef H_ | ||
766 | |||
767 | LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */ | 764 | LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */ |
768 | 765 | ||
769 | LJLIB_CF(ffi_metatype) | 766 | LJLIB_CF(ffi_metatype) |