From: "Ludovic Courtès" <ludo@gnu.org>
To: guile-devel@gnu.org
Cc: Andy Wingo <wingo@pobox.com>
Subject: The mysterious ‘SCM_F_BYTEVECTOR_CONTIGUOUS’
Date: Wed, 11 Jan 2023 18:39:52 +0100 [thread overview]
Message-ID: <87tu0xj7h3.fsf@gnu.org> (raw)
In-Reply-To: <20230111150015.10219-1-ludo@gnu.org> ("Ludovic Courtès"'s message of "Wed, 11 Jan 2023 16:00:15 +0100")
[-- Attachment #1: Type: text/plain, Size: 425 bytes --]
Ludovic Courtès <ludo@gnu.org> skribis:
> This is an updated version of the ‘bytevector-slice’ primitive I used in
> the linker/assembler patch series¹ that I think is ready to go.
While working on this, I noticed I might have to pay attention to
‘SCM_F_BYTEVECTOR_CONTIGUOUS’, as noted in the patch.
But it turns out that flag isn’t really used. I found two places that
should add it and do not:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1766 bytes --]
diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
index 6b920c88a..fd7fdad0b 100644
--- a/libguile/bytevectors.c
+++ b/libguile/bytevectors.c
@@ -274,7 +274,8 @@ make_bytevector_from_buffer (size_t len, void *contents,
c_len = len * (scm_i_array_element_type_sizes[element_type] / 8);
- SCM_SET_BYTEVECTOR_FLAGS (ret, element_type);
+ SCM_SET_BYTEVECTOR_FLAGS (ret,
+ element_type | SCM_F_BYTEVECTOR_CONTIGUOUS);
SCM_BYTEVECTOR_SET_LENGTH (ret, c_len);
SCM_BYTEVECTOR_SET_CONTENTS (ret, contents);
SCM_BYTEVECTOR_SET_PARENT (ret, SCM_BOOL_F);
diff --git a/module/system/repl/debug.scm b/module/system/repl/debug.scm
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index 165976363..61e0460ff 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -1857,8 +1857,9 @@ should be .data or .rodata), and return the resulting linker object.
(define tc7-program #x45)
(define tc7-bytevector #x4d)
- ;; This flag is intended to be left-shifted by 7 bits.
+ ;; These flags are intended to be left-shifted by 7 bits.
(define bytevector-immutable-flag #x200)
+ (define bytevector-contiguous-flag #x100)
(define tc7-array #x5d)
@@ -2026,6 +2027,7 @@ should be .data or .rodata), and return the resulting linker object.
;; Bytevector immutable flag also shifted
;; left.
(ash (logior bytevector-immutable-flag
+ bytevector-contiguous-flag
(array-type-code obj))
7)))))
(case word-size
[-- Attachment #3: Type: text/plain, Size: 372 bytes --]
There are probably more.
Fundamentally, I’m not sure what this flag is supposed to mean. AFAICS,
there’s no way to create a non-contiguous bytevector (or SRFI-4 vector).
This flag was added in 7ed54fd36d2e381aa46ef8a7d2fc13a6776b573a. My
guess is that it was part of plan that wasn’t carried out in the end.
Andy, thoughts? :-)
Thanks,
Ludo’.
next prev parent reply other threads:[~2023-01-11 17:39 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-11 15:00 [PATCH] Add 'bytevector-slice' Ludovic Courtès
2023-01-11 15:21 ` Thompson, David
2023-01-11 15:29 ` Jean Abou Samra
2023-01-11 17:34 ` Ludovic Courtès
2023-01-11 17:37 ` [EXT] " Thompson, David
2023-01-11 19:05 ` [EXT] " lloda
2023-01-12 22:27 ` Ludovic Courtès
2023-01-13 9:30 ` lloda
2023-01-11 17:39 ` Ludovic Courtès [this message]
2023-01-11 18:51 ` The mysterious ‘SCM_F_BYTEVECTOR_CONTIGUOUS’ lloda
2023-01-11 19:00 ` lloda
2023-01-12 0:10 ` [PATCH] Add 'bytevector-slice' Maxime Devos
2023-01-13 11:32 ` Ludovic Courtès
2023-01-13 11:56 ` Maxime Devos
2023-01-13 23:48 ` Ludovic Courtès
2023-01-14 14:45 ` Maxime Devos
2023-01-14 15:19 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87tu0xj7h3.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=guile-devel@gnu.org \
--cc=wingo@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).