瀏覽代碼

Rearrange defines for workarounds to embedded operating systems.

Mike Pall 14 年之前
父節點
當前提交
e80478c44b
共有 5 個文件被更改,包括 19 次插入10 次删除
  1. 2 4
      src/buildvm_asm.c
  2. 12 0
      src/lj_arch.h
  3. 1 2
      src/lj_err.c
  4. 2 2
      src/lj_vm.h
  5. 2 2
      src/lj_vmmath.c

+ 2 - 4
src/buildvm_asm.c

@@ -191,8 +191,7 @@ void emit_asm(BuildCtx *ctx)
   if (ctx->mode != BUILD_machasm)
     fprintf(ctx->fp, ".Lbegin:\n");
 
-#if LJ_TARGET_ARM && defined(__GNUC__) && !defined(__symbian__) && \
-    !LJ_TARGET_OSX
+#if LJ_TARGET_ARM && defined(__GNUC__) && !defined(LUAJIT_NO_UNWIND)
   /* This should really be moved into buildvm_arm.dasc. */
   fprintf(ctx->fp,
 	  ".fnstart\n"
@@ -228,8 +227,7 @@ void emit_asm(BuildCtx *ctx)
 #endif
   }
 
-#if LJ_TARGET_ARM && defined(__GNUC__) && !defined(__symbian__) && \
-    !LJ_TARGET_OSX
+#if LJ_TARGET_ARM && defined(__GNUC__) && !defined(LUAJIT_NO_UNWIND)
   fprintf(ctx->fp,
 	  ".globl lj_err_unwind_arm\n"
 	  ".personality lj_err_unwind_arm\n"

+ 12 - 0
src/lj_arch.h

@@ -279,4 +279,16 @@
 #define LJ_64			1
 #endif
 
+/* Various workarounds for embedded operating systems. */
+#if defined(__ANDROID__) || defined(__symbian__)
+#define LUAJIT_NO_LOG2
+#endif
+#if defined(__symbian__)
+#define LUAJIT_NO_EXP2
+#endif
+
+#if defined(__symbian__) || (LJ_TARGET_ARM && LJ_TARGET_OSX)
+#define LUAJIT_NO_UNWIND
+#endif
+
 #endif

+ 1 - 2
src/lj_err.c

@@ -178,8 +178,7 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
 
 /* -- External frame unwinding -------------------------------------------- */
 
-#if defined(__GNUC__) && !defined(__symbian__) && \
-    !(LJ_TARGET_ARM && LJ_TARGET_OSX)
+#if defined(__GNUC__) && !defined(LUAJIT_NO_UNWIND)
 
 #ifdef __clang__
 /* http://llvm.org/bugs/show_bug.cgi?id=8703 */

+ 2 - 2
src/lj_vm.h

@@ -66,12 +66,12 @@ LJ_ASMF void lj_vm_powi_sse(void);
 #else
 LJ_ASMF double lj_vm_trunc(double);
 LJ_ASMF double lj_vm_powi(double, int32_t);
-#if defined(__ANDROID__) || defined(__symbian__)
+#ifdef LUAJIT_NO_LOG2
 LJ_ASMF double lj_vm_log2(double);
 #else
 #define lj_vm_log2	log2
 #endif
-#if defined(__symbian__)
+#ifdef LUAJIT_NO_EXP2
 LJ_ASMF double lj_vm_exp2(double);
 #else
 #define lj_vm_exp2	exp2

+ 2 - 2
src/lj_vmmath.c

@@ -25,14 +25,14 @@ LJ_FUNCA double lj_vm_tanh(double x) { return tanh(x); }
 
 #if LJ_HASJIT
 
-#if defined(__ANDROID__) || defined(__symbian__)
+#ifdef LUAJIT_NO_LOG2
 double lj_vm_log2(double a)
 {
   return log(a) * 1.4426950408889634074;
 }
 #endif
 
-#if defined(__symbian__)
+#ifdef LUAJIT_NO_EXP2
 double lj_vm_exp2(double a)
 {
   return exp(a * 0.6931471805599453);