- DBG(" moved cdr %d -> %d\n", OFFSET(ao_lisp_poly_cons(cons->cdr)), OFFSET(cdr));
- cons->cdr = ao_lisp_cons_poly(cdr);
+ ret = ao_lisp_move_memory(&ao_lisp_cons_type, (void **) &cdr);
+ if (cdr != ao_lisp_poly_cons(cons->cdr))
+ cons->cdr = ao_lisp_cons_poly(cdr);
+ MDBG_MOVE("cons_move end %d (%d, %d)\n",
+ MDBG_OFFSET(cons), MDBG_OFFSET(ao_lisp_ref(cons->car)), MDBG_OFFSET(ao_lisp_ref(cons->cdr)));
+ if (ret)
+ break;