Mark in stacks.h the error conditions with ecl_unlikely().
authorJuan Jose Garcia Ripoll <jjgarcia@jjgr-2.local>
Mon, 8 Feb 2010 20:49:31 +0000 (21:49 +0100)
committerJuan Jose Garcia Ripoll <jjgarcia@jjgr-2.local>
Mon, 8 Feb 2010 20:49:31 +0000 (21:49 +0100)
src/h/stacks.h

index e9cc843..a5fb885 100755 (executable)
@@ -274,7 +274,7 @@ extern ECL_API ecl_frame_ptr _ecl_frs_push(register cl_env_ptr, register cl_obje
 #define cl_va_end(a) \
        va_end(a[0].args)
 #define        check_arg(n) \
-       do { if (narg != (n)) FEwrong_num_arguments_anonym();} while(0)
+       do { if (ecl_unlikely(narg != (n))) FEwrong_num_arguments_anonym();} while(0)
 
 /***********************
  * RETURN VALUES STACK
@@ -313,13 +313,13 @@ extern ECL_API ecl_frame_ptr _ecl_frs_push(register cl_env_ptr, register cl_obje
 
 #define ECL_STACK_INDEX(env) ((env)->stack_top - (env)->stack)
 
-#define ECL_STACK_PUSH(the_env,o) do {                          \
-                const cl_env_ptr __env = (the_env);             \
-                cl_object *__new_top = __env->stack_top;        \
-                if (__new_top >= __env->stack_limit) {          \
-                        __new_top = ecl_stack_grow(__env);      \
-                }                                               \
-                *__new_top = (o);                               \
+#define ECL_STACK_PUSH(the_env,o) do {                                  \
+                const cl_env_ptr __env = (the_env);                     \
+                cl_object *__new_top = __env->stack_top;                \
+                if (ecl_unlikely(__new_top >= __env->stack_limit)) {    \
+                        __new_top = ecl_stack_grow(__env);              \
+                }                                                       \
+                *__new_top = (o);                                       \
                 __env->stack_top = __new_top+1; } while (0)
 
 #define ECL_STACK_POP_UNSAFE(env) *(--((env)->stack_top))
@@ -329,14 +329,15 @@ extern ECL_API ecl_frame_ptr _ecl_frs_push(register cl_env_ptr, register cl_obje
 #define ECL_STACK_SET_INDEX(the_env,ndx) do {                   \
                 const cl_env_ptr __env = (the_env);             \
                 cl_object *__new_top = __env->stack + (ndx);    \
-                if (__new_top > __env->stack_top)               \
+                if (ecl_unlikely(__new_top > __env->stack_top)) \
                         FEstack_advance();                      \
                 __env->stack_top = __new_top; } while (0)
 
 #define ECL_STACK_POP_N(the_env,n) do {                         \
                 const cl_env_ptr __env = (the_env);             \
                 cl_object *__new_top = __env->stack_top - (n);  \
-                if (__new_top < __env->stack) FEstack_underflow();      \
+                if (ecl_unlikely(__new_top < __env->stack))     \
+                        FEstack_underflow();                    \
                 __env->stack_top = __new_top; } while (0)
 
 #define ECL_STACK_POP_N_UNSAFE(the_env,n) ((the_env)->stack_top -= (n))
@@ -345,7 +346,7 @@ extern ECL_API ecl_frame_ptr _ecl_frs_push(register cl_env_ptr, register cl_obje
                 const cl_env_ptr __env = (the_env) ;                    \
                 cl_index __aux = (n);                                   \
                 cl_object *__new_top = __env->stack_top;                \
-                while ((__env->stack_limit - __new_top) <= __aux) {     \
+                while (ecl_unlikely((__env->stack_limit - __new_top) <= __aux)) { \
                         __new_top = ecl_stack_grow(__env);              \
                 }                                                       \
                 __env->stack_top = __new_top + __aux; } while (0)