mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 23:40:29 +02:00
Add FIXMEs about misaligned objcode-metas.
* libguile/objcodes.c (scm_c_make_objcode_slice): Add comment about misaligned `objcode-meta'. * module/language/assembly/compile-bytecode.scm (write-bytecode): Likewise.
This commit is contained in:
parent
5bd047cefa
commit
ec99fe8ecb
2 changed files with 9 additions and 0 deletions
|
@ -138,6 +138,12 @@ scm_c_make_objcode_slice (SCM parent, const scm_t_uint8 *ptr)
|
||||||
scm_from_uint32 (parent_data->len),
|
scm_from_uint32 (parent_data->len),
|
||||||
scm_from_uint32 (parent_data->metalen)));
|
scm_from_uint32 (parent_data->metalen)));
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* FIXME: We currently generate bytecode where the objcode-meta isn't
|
||||||
|
suitable aligned, which is an issue on some arches (e.g., SPARC). */
|
||||||
|
assert ((((uintptr_t) ptr) & (__alignof__ (struct scm_objcode) - 1UL)) == 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
data = (struct scm_objcode*)ptr;
|
data = (struct scm_objcode*)ptr;
|
||||||
if (data->base + data->len + data->metalen > parent_data->base + parent_data->len + parent_data->metalen)
|
if (data->base + data->len + data->metalen > parent_data->base + parent_data->len + parent_data->metalen)
|
||||||
abort ();
|
abort ();
|
||||||
|
|
|
@ -110,6 +110,9 @@
|
||||||
(set! i (1+ i))
|
(set! i (1+ i))
|
||||||
(if (> i 0) (write-byte x))))
|
(if (> i 0) (write-byte x))))
|
||||||
(get-addr (lambda () i)))
|
(get-addr (lambda () i)))
|
||||||
|
;; FIXME: We should add padding here so that META's bytecode
|
||||||
|
;; meets the alignment requirements of `scm_objcode'. See
|
||||||
|
;; `scm_c_make_objcode_slice ()'.
|
||||||
(write-bytecode meta write get-addr '()))))
|
(write-bytecode meta write get-addr '()))))
|
||||||
((load-unsigned-integer ,str) (write-loader str))
|
((load-unsigned-integer ,str) (write-loader str))
|
||||||
((load-integer ,str) (write-loader str))
|
((load-integer ,str) (write-loader str))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue