aboutsummaryrefslogtreecommitdiff
path: root/src/boot/be
diff options
context:
space:
mode:
authorRoy Frostig <[email protected]>2010-07-16 11:17:25 -0700
committerRoy Frostig <[email protected]>2010-07-16 11:17:25 -0700
commit348e434cee42cc2be0a4f5a6e6df8709d3490ff5 (patch)
treec85dc5a5a139ca3950d93b160de42a71f41e0a40 /src/boot/be
parentMerge branch 'contrib' (diff)
downloadrust-348e434cee42cc2be0a4f5a6e6df8709d3490ff5.tar.xz
rust-348e434cee42cc2be0a4f5a6e6df8709d3490ff5.zip
Clean up nomenclature in the Abi constants brigade. Purge magic GEP numbers in trans. Adjust obj_closure_rty (and its consumers) to be more explicit about the fact that it is a box.
Diffstat (limited to 'src/boot/be')
-rw-r--r--src/boot/be/abi.ml36
-rw-r--r--src/boot/be/x86.ml6
2 files changed, 25 insertions, 17 deletions
diff --git a/src/boot/be/abi.ml b/src/boot/be/abi.ml
index f4c30e74..3de553f2 100644
--- a/src/boot/be/abi.ml
+++ b/src/boot/be/abi.ml
@@ -26,15 +26,15 @@ let frame_glue_fns_field_mark = 0;;
let frame_glue_fns_field_drop = 1;;
let frame_glue_fns_field_reloc = 2;;
-let box_rc_slot_field_refcnt = 0;;
-let box_rc_slot_field_body = 1;;
+let box_rc_field_refcnt = 0;;
+let box_rc_field_body = 1;;
-let box_gc_slot_alloc_base = (-3);;
-let box_gc_slot_field_prev = (-3);;
-let box_gc_slot_field_next = (-2);;
-let box_gc_slot_field_ctrl = (-1);;
-let box_gc_slot_field_refcnt = 0;;
-let box_gc_slot_field_body = 1;;
+let box_gc_alloc_base = (-3);;
+let box_gc_field_prev = (-3);;
+let box_gc_field_next = (-2);;
+let box_gc_field_ctrl = (-1);;
+let box_gc_field_refcnt = 0;;
+let box_gc_field_body = 1;;
let box_rc_header_size = 1;;
let box_gc_header_size = 4;;
@@ -45,13 +45,21 @@ let stk_field_valgrind_id = 0 + 1;;
let stk_field_limit = stk_field_valgrind_id + 1;;
let stk_field_data = stk_field_limit + 1;;
-let binding_size = 2;;
-let binding_field_item = 0;;
-let binding_field_binding = 1;;
+let obj_elt_vtbl = 0;;
+let obj_elt_body_box = 1;;
-let obj_elt_rc = 0;;
-let obj_elt_tydesc = 1;;
-let obj_elt_fields = 2;;
+let obj_body_elt_tydesc = 0;;
+let obj_body_elt_fields = 1;;
+
+let fn_elt_thunk = 0;;
+let fn_elt_closure = 1;;
+
+let closure_elt_rc = 0;;
+let closure_elt_target = 1;;
+let closure_elt_bound_args = 2;;
+
+let tag_elt_discriminant = 0;;
+let tag_elt_variant = 1;;
let general_code_alignment = 16;;
diff --git a/src/boot/be/x86.ml b/src/boot/be/x86.ml
index 811da12a..d5541eb1 100644
--- a/src/boot/be/x86.ml
+++ b/src/boot/be/x86.ml
@@ -830,7 +830,7 @@ let sweep_gc_chain
emit (Il.jmp Il.JE
(codefix exit_jmp_fix)); (* if nonzero *)
mov (rc ecx) (* Load GC ctrl word *)
- (c (edi_n Abi.box_gc_slot_field_ctrl));
+ (c (edi_n Abi.box_gc_field_ctrl));
mov (rc eax) (ro ecx);
band (rc eax) (immi 1L); (* Extract mark to eax. *)
band (* Clear mark in ecx. *)
@@ -840,7 +840,7 @@ let sweep_gc_chain
if clear_mark
then
mov (* Write-back cleared. *)
- ((edi_n Abi.box_gc_slot_field_ctrl))
+ ((edi_n Abi.box_gc_field_ctrl))
(ro ecx);
emit (Il.cmp (ro eax) (immi 0L));
@@ -872,7 +872,7 @@ let sweep_gc_chain
mark skip_jmp_fix;
mov (rc edi) (* Advance down chain *)
- (c (edi_n Abi.box_gc_slot_field_next));
+ (c (edi_n Abi.box_gc_field_next));
emit (Il.jmp Il.JMP
(codefix repeat_jmp_fix)); (* loop *)
mark exit_jmp_fix;