diff --git a/C/absmi.c b/C/absmi.c index d337332ca..dbdec12f1 100755 --- a/C/absmi.c +++ b/C/absmi.c @@ -1493,12 +1493,16 @@ spy_goal( USES_REGS1 ) HR += 2; { PredEntry *pt0; +#if THREADS LOCK(GLOBAL_ThreadHandlesLock); +#endif pt0 = SpyCode; P_before_spy = P; P = pt0->CodeOfPred; /* for profiler */ +#if THREADS UNLOCK(GLOBAL_ThreadHandlesLock); +#endif #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) low_level_trace(enter_pred,pt0,XREGS+1); diff --git a/C/c_interface.c b/C/c_interface.c index 8137800a0..65b8b5a54 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -3096,7 +3096,7 @@ YAP_Init(YAP_init_args *yap_init) /* slaves, waiting for work */ CurrentModule = USER_MODULE; P = GETWORK_FIRST_TIME; - Yap_exec_absmi(FALSE); + Yap_exec_absmi(FALSE, YAP_EXEC_ABSMI); Yap_Error(INTERNAL_ERROR, TermNil, "abstract machine unexpected exit (YAP_Init)"); } #endif /* YAPOR */ diff --git a/H/dlmalloc.h b/H/dlmalloc.h index de84b3df2..1df96e7ef 100644 --- a/H/dlmalloc.h +++ b/H/dlmalloc.h @@ -179,8 +179,10 @@ extern "C" { #if DEBUG_DLMALLOC #include #else +#ifndef assert #define assert(x) ((void)0) #endif +#endif /* The unsigned integer type used for comparing any two chunk sizes. diff --git a/OPTYap/locks_x86.h b/OPTYap/locks_x86.h index ca0c42caa..012972a6b 100644 --- a/OPTYap/locks_x86.h +++ b/OPTYap/locks_x86.h @@ -71,10 +71,10 @@ extern int debug_locks; __BASE_FILE__, __LINE__,&(LOCK_VAR)); \ spin_unlock((spinlock_t *)&(LOCK_VAR)) #else -#define LOCK(LOCK_VAR) do { \ +#define LOCK(LOCK_VAR) { do { \ if (TRY_LOCK(&(LOCK_VAR))) break; \ while (IS_LOCKED(LOCK_VAR)) continue; \ - } while (1) + } while (1); } #define IS_LOCKED(LOCK_VAR) ((LOCK_VAR) != 0) #define IS_UNLOCKED(LOCK_VAR) ((LOCK_VAR) == 0) #define UNLOCK(LOCK_VAR) spin_unlock((spinlock_t *)&(LOCK_VAR))