Improve multiple-value support
commit3c8c6bed42049daa376a64aef6eed720736227f3
authorJason Miller <aidenn0@geocities.com>
Thu, 18 Feb 2016 06:01:47 +0000 (17 22:01 -0800)
committerJason Miller <aidenn0@geocities.com>
Thu, 18 Feb 2016 06:01:47 +0000 (17 22:01 -0800)
tree94b2f2a9d3fe3bfdc873d1fd4bca7745457ca42b
parentb51f35a70fe4da8dce1530afece1fb52d575378e
Improve multiple-value support

Previously multiple-values were very fragile.

Examples of things that didn't work, but now do:

  (multiple-value-bind (x y) (values 1 2) y)

  (defun foo () (values 1 2))
  (defun bar () foo)
  (multiple-value-bind (x y) (bar) y)

Biggest downside of this change is that every return statement must be
prefixed by a clearing of the MV register.
src/macros.lisp
src/special-operators.lisp