1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 04:40:29 +02:00
guile/module/rnrs
Julian Graham fe15364988 Improve performance of R6RS records implementation
Reimplement record-type descriptors as vtables for record structs, saving
us what was an expensive inspection of a record's vtable layout string to
determine its type.

* module/rnrs/records/inspection.scm (record-field-mutable?): Check
  mutability using the bit field stored in the record-type descriptor
  instead of the record struct's vtable.
* module/rnrs/records/procedural.scm (record-internal?): Reimplement as a
  delegation to a check of the passed struct's vtable against
  `record-type-descriptor?'.
  (record-type-vtable): Modify to include base vtable layout as a prefix
  of the record-type-descriptor layout so that all record-type instances
  are now also vtables.
  (make-record-type-descriptor): Remove field vtable; build up a mutability
  bit field to use for fast mutability checks.
  (record-accessor, record-mutator): Use field struct and mutability bit
  field.
2010-10-22 14:34:49 -04:00
..
arithmetic Several fixes to R6RS libraries 2010-08-28 10:16:30 -07:00
io ensure unicode-capable rnrs string ports 2010-06-20 23:15:29 +02:00
records Improve performance of R6RS records implementation 2010-10-22 14:34:49 -04:00
base.scm Several fixes to R6RS libraries 2010-08-28 10:16:30 -07:00
bytevectors.scm add #:version (6) to rnrs bytevectors and ports 2010-06-02 22:19:40 +02:00
conditions.scm Several fixes to R6RS libraries 2010-08-28 10:16:30 -07:00
control.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00
enums.scm Several fixes to R6RS libraries 2010-08-28 10:16:30 -07:00
eval.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00
exceptions.scm Several fixes to R6RS libraries 2010-08-28 10:16:30 -07:00
files.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00
hashtables.scm Fix argument passing for external hash functions in `(rnrs hashtables)'. 2010-07-14 01:16:19 -04:00
lists.scm Explicit definitions for memp' and assp' in `(rnrs list)'; the predicate 2010-08-08 20:23:14 -04:00
mutable-pairs.scm fix ^L typo 2010-06-19 14:45:03 +02:00
mutable-strings.scm typo in mutable-strings 2010-06-19 15:40:25 +02:00
programs.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00
r5rs.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00
sorting.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00
syntax-case.scm Fix make-variable-transformer export 2010-09-19 12:15:37 +02:00
unicode.scm remove encoding of versions into the file system (for now?) 2010-06-16 22:20:28 +02:00