1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 12:20:26 +02:00
guile/module/language
Andy Wingo 0083cb5ec4 fix self tail recursion to different case-lambda clauses
http://savannah.gnu.org/bugs/?33362

* module/language/tree-il/compile-glil.scm (flatten-lambda-case): Rename
  from flatten, as it really just takes a particular case.  Instead of
  iteratively compiling lambda cases through `comp', tail-call through
  flatten-lambda-case.  This allows code to see which case it's being
  compiled in.  Take advantage of that to limit the self-tail-call
  optimization to self-calls to the same case -- otherwise we might be
  jumping to a label without having reserved the right number of
  locals.
  (flatten-lambda): Adapt the caller.

* test-suite/tests/compiler.test ("case-lambda"): Add a test.
2011-06-17 17:08:06 +02:00
..
assembly compile-bytecode uses target-endianness 2011-05-31 11:18:28 +02:00
brainfuck remove `version' field from <language> 2010-05-02 11:19:13 +02:00
bytecode remove `version' field from <language> 2010-05-02 11:19:13 +02:00
ecmascript Parse Decimal Numbers 2011-01-26 23:47:29 +01:00
elisp core modules use (ice-9 binary-ports) instead of (rnrs io ports) 2011-02-18 16:01:25 +01:00
glil fix some duplication in object tables 2011-05-08 22:55:05 +02:00
objcode fix error message on ,disassemble "non-procedure" 2011-03-29 12:38:18 +02:00
scheme read-enable 'positions by default 2011-02-13 15:06:11 +01:00
tree-il fix self tail recursion to different case-lambda clauses 2011-06-17 17:08:06 +02:00
value remove `version' field from <language> 2010-05-02 11:19:13 +02:00
assembly.scm silly "optimization" in (language assembly) 2011-05-05 11:43:12 +02:00
glil.scm prompt handlers are always inline 2010-02-19 15:30:34 +01:00
objcode.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
tree-il.scm tree-il->scheme fix 2011-03-27 14:44:20 +02:00