1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 12:20:26 +02:00
guile/module
Andy Wingo 987c1f5ff3 Rewrite slot allocation pass
* module/language/cps/slot-allocation.scm ($allocation): Refactor
  internal format of allocations.  Instead of an allocation being a hash
  table of small $allocation objects, it is an $allocation object that
  contains packed vectors.
  (find-first-trailing-zero): Rework to not need a maximum.
  (lookup-maybe-slot): New interface.
  (lookup-slot): Raise an error if a var has no slot.
  (lookup-call-allocation): New helper.
  (lookup-constant-value, lookup-maybe-constant-value):
  (lookup-call-proc-slot, lookup-parallel-moves): Adapt to $allocation
  change

  (allocate-slots): Rewrite so that instead of being recursive, it
  traverses the blocks in CFA order.  Also, procedure call frames are
  now allocated with respect to the live set after using arguments (and
  killing any dead-after-use vars); this should make call frames more
  compact but it does necessitate a parallel move solution.  Therefore
  parallel moves are recorded for all calls, for arguments; also if the
  continuation is a $ktrunc, the continuation gets parallel moves for
  the results.

  This rewrite is in preparation to allocating call args directly in the
  appropriate slots, where possible.

* module/language/cps/compile-rtl.scm (compile-fun): Adapt to slot
  allocation changes, using lookup-maybe-slot where appropriate,
  performing parallel moves when calling functions, and expecting return
  moves to be associated with $ktrunc continuations.
2013-11-15 11:17:18 +01:00
..
ice-9 Effects analysis sees match-error, throw-bad-structs as bailouts 2013-11-10 10:17:44 +01:00
language Rewrite slot allocation pass 2013-11-15 11:17:18 +01:00
oop Merge remote-tracking branch 'origin/stable-2.0' 2013-01-31 11:52:42 +01:00
rnrs Merge remote-tracking branch 'origin/stable-2.0' 2013-08-11 22:46:22 -04:00
scripts Miscellaneous fixups related to objcode removal. 2013-11-08 17:42:54 +01:00
srfi Effects analysis sees match-error, throw-bad-structs as bailouts 2013-11-10 10:17:44 +01:00
sxml Remove duplicate definitions of call/ec' and let/ec'. 2013-04-06 15:40:19 +02:00
system Add specialize-primcalls pass; bump objcode version. 2013-11-10 19:27:19 +01:00
texinfo texinfo plain-text: Use match' for stexi->plain-text'. 2013-03-22 22:09:05 +01:00
web Merge remote-tracking branch 'origin/stable-2.0' 2013-09-13 00:24:04 -04:00
Makefile.am Add specialize-primcalls pass; bump objcode version. 2013-11-10 19:27:19 +01:00
rnrs.scm Add missing R6RS `open-file-input/output-port' procedure 2012-11-12 20:47:57 +01:00
statprof.scm Remove stack programs, objcode, and the old VM. 2013-11-08 18:28:24 +01:00
texinfo.scm texinfo: Recognize `@:'. 2013-03-21 18:52:29 +01:00