about summary refs log tree commit diff
path: root/src/rustc/back/abi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/rustc/back/abi.rs')
-rw-r--r--src/rustc/back/abi.rs93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/rustc/back/abi.rs b/src/rustc/back/abi.rs
new file mode 100644
index 00000000000..c02960deb00
--- /dev/null
+++ b/src/rustc/back/abi.rs
@@ -0,0 +1,93 @@
+
+
+
+// FIXME: Most of these should be uints.
+const rc_base_field_refcnt: int = 0;
+
+const task_field_refcnt: int = 0;
+
+const task_field_stk: int = 2;
+
+const task_field_runtime_sp: int = 3;
+
+const task_field_rust_sp: int = 4;
+
+const task_field_gc_alloc_chain: int = 5;
+
+const task_field_dom: int = 6;
+
+const n_visible_task_fields: int = 7;
+
+const dom_field_interrupt_flag: int = 1;
+
+const frame_glue_fns_field_mark: int = 0;
+
+const frame_glue_fns_field_drop: int = 1;
+
+const frame_glue_fns_field_reloc: int = 2;
+
+const box_field_refcnt: int = 0;
+const box_field_tydesc: int = 1;
+const box_field_prev: int = 2;
+const box_field_next: int = 3;
+const box_field_body: int = 4;
+
+const general_code_alignment: int = 16;
+
+const tydesc_field_first_param: int = 0;
+const tydesc_field_size: int = 1;
+const tydesc_field_align: int = 2;
+const tydesc_field_take_glue: int = 3;
+const tydesc_field_drop_glue: int = 4;
+const tydesc_field_free_glue: int = 5;
+const tydesc_field_unused: int = 6;
+const tydesc_field_sever_glue: int = 7;
+const tydesc_field_mark_glue: int = 8;
+const tydesc_field_unused2: int = 9;
+const tydesc_field_unused_2: int = 10;
+const tydesc_field_shape: int = 11;
+const tydesc_field_shape_tables: int = 12;
+const tydesc_field_n_params: int = 13;
+const tydesc_field_obj_params: int = 14; // FIXME unused
+const n_tydesc_fields: int = 15;
+
+const cmp_glue_op_eq: uint = 0u;
+
+const cmp_glue_op_lt: uint = 1u;
+
+const cmp_glue_op_le: uint = 2u;
+
+// The two halves of a closure: code and environment.
+const fn_field_code: int = 0;
+const fn_field_box: int = 1;
+
+// closures, see trans_closure.rs
+const closure_body_ty_params: int = 0;
+const closure_body_bindings: int = 1;
+
+const vec_elt_fill: int = 0;
+
+const vec_elt_alloc: int = 1;
+
+const vec_elt_elems: int = 2;
+
+const worst_case_glue_call_args: int = 7;
+
+const abi_version: uint = 1u;
+
+fn memcpy_glue_name() -> str { ret "rust_memcpy_glue"; }
+
+fn bzero_glue_name() -> str { ret "rust_bzero_glue"; }
+
+fn yield_glue_name() -> str { ret "rust_yield_glue"; }
+
+fn no_op_type_glue_name() -> str { ret "rust_no_op_type_glue"; }
+//
+// Local Variables:
+// mode: rust
+// fill-column: 78;
+// indent-tabs-mode: nil
+// c-basic-offset: 4
+// buffer-file-coding-system: utf-8-unix
+// End:
+//