1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
guile/module
Andy Wingo 02c624fc09 More precise stack marking via .guile.frame-maps section
* module/language/cps/slot-allocation.scm (lookup-dead-slot-map)
  (allocate-slots): For each non-tail call in a function, compute the
  set of slots that are dead after the function has begun the call.

* module/language/cps/compile-bytecode.scm (compile-fun): Emit the
  `dead-slot-map' macro instruction for non-tail calls.

* module/system/vm/assembler.scm (<asm>): Add `dead-slot-maps' member.
  (dead-slot-map): New macro-instruction.
  (link-frame-maps, link-dynamic-section, link-objects): Write dead
  slots information into .guile.frame-maps sections of ELF files.
* module/system/vm/elf.scm (DT_GUILE_FRAME_MAPS): New definition.

* libguile/loader.h:
* libguile/loader.c (DT_GUILE_FRAME_MAPS, process_dynamic_segment):
  (load_thunk_from_memory, register_elf): Arrange to parse
  DT_GUILE_FRAME_MAPS out of the dynamic section.
  (find_mapped_elf_image_unlocked, find_mapped_elf_image): New helpers.
  (scm_find_mapped_elf_image): Refactor.
  (scm_find_dead_slot_map_unlocked): New interface.

* libguile/vm.c (scm_i_vm_mark_stack): Mark the hottest frame
  conservatively, as before.  Otherwise use the dead slots map, if
  available, to avoid marking data that isn't live.
2014-01-26 20:55:04 +01:00
..
ice-9 Merge branch 'stable-2.0' 2014-01-21 03:57:04 -05:00
language More precise stack marking via .guile.frame-maps section 2014-01-26 20:55:04 +01:00
oop Remove GOOPS-internal @slot-ref and @slot-set! 2013-11-30 18:46:14 +01:00
rnrs Merge commit '8571dbde63' 2013-11-28 15:00:17 +01:00
scripts Rename "RTL" to "bytecode" 2013-12-02 21:31:47 +01:00
srfi Merge branch 'stable-2.0' 2014-01-14 03:18:34 -05:00
sxml Remove duplicate definitions of call/ec' and let/ec'. 2013-04-06 15:40:19 +02:00
system More precise stack marking via .guile.frame-maps section 2014-01-26 20:55:04 +01:00
texinfo texinfo plain-text: Use match' for stexi->plain-text'. 2013-03-22 22:09:05 +01:00
web Merge branch 'stable-2.0' 2014-01-21 03:57:04 -05:00
Makefile.am Add simplification pass 2014-01-11 16:01:18 +01:00
rnrs.scm Add missing R6RS `open-file-input/output-port' procedure 2012-11-12 20:47:57 +01:00
statprof.scm VM accessors take VM as implicit argument, not explicit argument 2013-11-21 16:10:41 +01:00
texinfo.scm texinfo: Recognize `@:'. 2013-03-21 18:52:29 +01:00