1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-02 02:10:19 +02:00
guile/module/system/vm
Andy Wingo d0934df1f2 Stringbufs immutable by default
* libguile/snarf.h (SCM_IMMUTABLE_STRINGBUF): Remove shared flag.
  Stringbufs are immutable by default.
* libguile/strings.c: Rewrite blurb.  Change to have stringbufs be
  immutable by default and mutable only when marked as such.  Going
  mutable means making a private copy.
  (STRINGBUF_MUTABLE, STRINGBUF_F_MUTABLE): New definitions.
  (SET_STRINGBUF_SHARED): Remove.
  (scm_i_print_stringbuf): Simplify to just alias the stringbuf as-is.
  (substring_with_immutable_stringbuf): New helper.
  (scm_i_substring, scm_i_substring_read_only, scm_i_substring_copy):
  use new helper.
  (scm_i_string_ensure_mutable_x): New helper.
  (scm_i_substring_shared): Use scm_i_string_ensure_mutable_x.
  (stringbuf_write_mutex): Remove; yaaaaaaaay.
  (scm_i_string_start_writing): Use scm_i_string_ensure_mutable_x.  No
  more mutex.
  (scm_i_string_stop_writing): Now a no-op.
  (scm_i_make_symbol): Use substring/copy.
  (scm_sys_string_dump, scm_sys_symbol_dump): Update.
* libguile/strings.h (SCM_I_STRINGBUF_F_SHARED): Remove.
  (SCM_I_STRINGBUF_F_MUTABLE): Add.
* module/system/vm/assembler.scm (link-data): Don't add shared flag any
  more.  Existing compiled flags are harmless tho.
* test-suite/tests/strings.test ("string internals"): Update.
2017-02-16 13:11:29 +01:00
..
assembler.scm Stringbufs immutable by default 2017-02-16 13:11:29 +01:00
coverage.scm No more VM objects visible to Scheme 2013-11-21 16:45:03 +01:00
debug.scm Add support for unboxed s64 values 2015-12-01 15:42:19 +01:00
disassembler.scm Add unboxed floating point comparison instructions. 2017-01-12 09:27:43 -05:00
dwarf.scm Rename "RTL" to "bytecode" 2013-12-02 21:31:47 +01:00
elf.scm elf: Add missing argument in 'elf-segment'. 2015-03-30 15:19:58 +02:00
frame.scm Fix frame-call-representation for change to <binding>. 2016-02-02 11:09:00 +01:00
inspect.scm Remove assembly language. 2013-11-08 16:45:10 +01:00
linker.scm Assembler works on byte offsets, not u32 offsets 2015-12-26 22:12:09 +01:00
loader.scm Rename objcodes?.{scm,c,h} to loader.{scm,c,h} 2013-11-19 21:45:07 +01:00
program.scm Check for missing debug info in print-program 2016-09-02 21:04:20 -04:00
trace.scm frame-call-representation has #:top-frame? as keyword argument 2014-05-04 11:18:54 +02:00
trap-state.scm No more VM objects visible to Scheme 2013-11-21 16:45:03 +01:00
traps.scm VM traps don't match on value of slot 0 2015-12-01 11:30:54 +01:00
vm.scm Remove default soft stack limit; add call-with-stack-overflow-handler 2014-03-12 17:18:13 +01:00