diff options
| author | Roy Frostig <[email protected]> | 2010-07-16 11:17:25 -0700 |
|---|---|---|
| committer | Roy Frostig <[email protected]> | 2010-07-16 11:17:25 -0700 |
| commit | 348e434cee42cc2be0a4f5a6e6df8709d3490ff5 (patch) | |
| tree | c85dc5a5a139ca3950d93b160de42a71f41e0a40 /src/boot/be | |
| parent | Merge branch 'contrib' (diff) | |
| download | rust-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.ml | 36 | ||||
| -rw-r--r-- | src/boot/be/x86.ml | 6 |
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; |