aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-06-25 20:47:16 -0700
committerGraydon Hoare <[email protected]>2010-06-25 20:47:16 -0700
commit37180552769b316e7239d047008f187127e630e6 (patch)
treeaad9385cf2d4d6b0d78c7d5e179ab50ad7e42cc1 /src
parentFix bad register use in GC sweep pass. (diff)
downloadrust-37180552769b316e7239d047008f187127e630e6.tar.xz
rust-37180552769b316e7239d047008f187127e630e6.zip
Align emitted DATA_* elements -- tydescs in particular -- to 16 byte boundaries, so we can get our tag bit freed up.
Diffstat (limited to 'src')
-rw-r--r--src/boot/me/trans.ml7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/boot/me/trans.ml b/src/boot/me/trans.ml
index a8b74fcf..98bf6bab 100644
--- a/src/boot/me/trans.ml
+++ b/src/boot/me/trans.ml
@@ -1016,6 +1016,9 @@ let trans_visitor
let (cell, _) = trans_lval flv in
(Il.Cell cell, fty)
+ and align x =
+ Asm.ALIGN_FILE (16, Asm.ALIGN_MEM(16, x))
+
and trans_crate_rel_data_operand
(d:data)
(thunk:unit -> Asm.frag)
@@ -1025,7 +1028,7 @@ let trans_visitor
begin
fun _ ->
let fix = new_fixup "data item" in
- let frag = Asm.DEF (fix, thunk()) in
+ let frag = align (Asm.DEF (fix, thunk())) in
(fix, frag)
end
in
@@ -1037,7 +1040,7 @@ let trans_visitor
begin
fun _ ->
let fix = new_fixup "data item" in
- let frag = Asm.DEF (fix, thunk()) in
+ let frag = align (Asm.DEF (fix, thunk())) in
(fix, frag)
end
in