1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-18 18:40:22 +02:00
Commit graph

8 commits

Author SHA1 Message Date
Andy Wingo
8b2a96d044 Contify returns via calls to "values"
* module/language/cps/contification.scm: Returns from contified
  functions should primcall to 'values, as in general the return
  continuation is a multiple value context ($ktrunc or $ktail).  A later
  pass can elide the primcall if appropriate.
2013-10-22 22:29:56 +02:00
Andy Wingo
0620d6b4d2 Fix contification bugs
* module/language/cps/contification.scm (compute-contification): Rewrite
  to avoid mutating the DFG and the function while we are rewriting.
  Instead we compute a contification, and if it is not empty, we apply
  it and loop.
2013-10-21 22:24:18 +02:00
Andy Wingo
e92e0bbe9c More robust contification
* module/language/cps/contification.scm (contify): It could be that
  visiting pending contifications could enqueue more contifications, so
  iterate to a fixed point.  Signal an error if there are any pending
  contifications at the end of an iteration.
2013-10-21 16:59:42 +02:00
Andy Wingo
f22979db66 DFG refactor to allow dominator tree construction
* module/language/cps/dfg.scm: Refactor so that we can think about
  building a dominator tree.  Split continuations out of use maps and
  put them in a separate table, which will have more flow information.
  (visit-fun): Mark clauses as using their bodies.
  (lookup-predecessors, lookup-successors): New exports.
  (find-defining-expression): Add an exception for clauses, now that
  clauses are in the flow graph.
  (continuation-bound-in?): Rename from variable-bound-in?, as it can
  currently only be used for continuations.

* module/language/cps/contification.scm (contify): Adapt to use
  lookup-predecessors and continuation-bound-in?.
2013-10-10 12:42:50 +02:00
Andy Wingo
fea115c33f Fix nested contification bugs
* module/language/cps/contification.scm (contify): Exhaustively replace
  contified tail continuations, to fix a bug in nested tail-recursive
  contifications.  Likewise, call lookup-return-cont when searching for
  common return continuations.
2013-10-04 18:03:29 +02:00
Andy Wingo
7ea00e230a Contify functions in the scope of their continuation.
* module/language/cps/contification.scm (contify): Fix to contify
  functions in the scope of their continuation.
2013-10-04 14:08:52 +02:00
Andy Wingo
d51fb1e67b dfg: variable-free-in?, add variable-bound-in?
* module/language/cps/dfg.scm (variable-free-in?): Rename from
  variable-used-in?, to match CWCC language.
  (variable-bound-in?): New interface.

* module/language/cps/contification.scm (contify): Adapt caller.  Add
  more comments.
2013-10-04 14:07:36 +02:00
Andy Wingo
8ac8e2dfeb Add contification pass
* module/Makefile.am:
* module/language/cps/contification.scm: New pass.

* module/language/cps/compile-rtl.scm (optimize): Wire it into the
  compiler.
2013-08-31 09:40:56 +02:00