aboutsummaryrefslogtreecommitdiff
path: root/src/lib_ffi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib_ffi.c')
-rw-r--r--src/lib_ffi.c35
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. */
726LJLIB_CF(ffi_abi) LJLIB_REC(.) 724LJLIB_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
767LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */ 764LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */
768 765
769LJLIB_CF(ffi_metatype) 766LJLIB_CF(ffi_metatype)