altos/lisp: Eliminate compiler warning about array bounds at -O3
[fw/altos] / src / lisp / ao_lisp.h
index bcb0a17fa7dfd8ba102d52f295b0e79abe5a97fc..25d13fa3f7c94a51e14ddbc8ce721f7982cf6aa4 100644 (file)
@@ -118,9 +118,6 @@ ao_lisp_is_const(ao_poly poly) {
        return poly & AO_LISP_CONST;
 }
 
-#define AO_LISP_POOL_BASE      (ao_lisp_pool - 4)
-#define AO_LISP_CONST_BASE     (ao_lisp_const - 4)
-
 #define AO_LISP_IS_CONST(a)    (ao_lisp_const <= ((uint8_t *) (a)) && ((uint8_t *) (a)) < ao_lisp_const + AO_LISP_POOL_CONST)
 #define AO_LISP_IS_POOL(a)     (ao_lisp_pool <= ((uint8_t *) (a)) && ((uint8_t *) (a)) < ao_lisp_pool + AO_LISP_POOL)
 
@@ -421,7 +418,9 @@ ao_lisp_builtin_poly(struct ao_lisp_builtin *b)
 
 /* memory functions */
 
-extern int ao_lisp_collects;
+extern int ao_lisp_collects[2];
+extern int ao_lisp_freed[2];
+extern int ao_lisp_loops[2];
 
 /* returns 1 if the object was already marked */
 int
@@ -445,8 +444,11 @@ ao_lisp_move_memory(const struct ao_lisp_type *type, void **ref);
 void *
 ao_lisp_alloc(int size);
 
-void
-ao_lisp_collect(void);
+#define AO_LISP_COLLECT_FULL           1
+#define AO_LISP_COLLECT_INCREMENTAL    0
+
+int
+ao_lisp_collect(uint8_t style);
 
 void
 ao_lisp_cons_stash(int id, struct ao_lisp_cons *cons);