+ /* Re-fetch all of the values in case something moved */
+ lambda = ao_lisp_poly_lambda(ao_lisp_v);
+ cons = ao_lisp_poly_cons(ao_lisp_stack->values);
+ code = ao_lisp_poly_cons(lambda->code);
+ args = ao_lisp_poly_cons(ao_lisp_arg(code, 0));
+ vals = ao_lisp_poly_cons(cons->cdr);
+
+ next_frame->prev = lambda->frame;
+ ao_lisp_frame_current = next_frame;
+ ao_lisp_stack->frame = ao_lisp_frame_poly(ao_lisp_frame_current);
+
+ switch (lambda->args) {
+ case AO_LISP_FUNC_LAMBDA: