summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/objcodes.c6
-rw-r--r--module/language/assembly/compile-bytecode.scm3
2 files changed, 9 insertions, 0 deletions
diff --git a/libguile/objcodes.c b/libguile/objcodes.c
index 69e464c3b..a2105530f 100644
--- a/libguile/objcodes.c
+++ b/libguile/objcodes.c
@@ -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->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;
if (data->base + data->len + data->metalen > parent_data->base + parent_data->len + parent_data->metalen)
abort ();
diff --git a/module/language/assembly/compile-bytecode.scm b/module/language/assembly/compile-bytecode.scm
index 73ed620d6..4b9f7b701 100644
--- a/module/language/assembly/compile-bytecode.scm
+++ b/module/language/assembly/compile-bytecode.scm
@@ -110,6 +110,9 @@
(set! i (1+ i))
(if (> i 0) (write-byte x))))
(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 '()))))
((load-unsigned-integer ,str) (write-loader str))
((load-integer ,str) (write-loader str))