From e21865a4407495a5724798a59276e4f276bc93f6 Mon Sep 17 00:00:00 2001 From: Roy Frostig Date: Mon, 12 Jul 2010 23:55:44 -0700 Subject: Begin moving closure-or-obj pointer out to front of call args by changing the order within the call-arg tup referent type. This breaks the world quite a bit, since it remains to fix custom call paths: glue, upcalls, natives. --- src/boot/be/abi.ml | 10 +++++----- src/boot/me/layout.ml | 3 ++- src/boot/me/semant.ml | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/boot/be/abi.ml b/src/boot/be/abi.ml index 44f9761b..18c49460 100644 --- a/src/boot/be/abi.ml +++ b/src/boot/be/abi.ml @@ -68,17 +68,17 @@ let vec_elt_data = 3;; let calltup_elt_out_ptr = 0;; let calltup_elt_task_ptr = 1;; -let calltup_elt_ty_params = 2;; -let calltup_elt_args = 3;; -let calltup_elt_iterator_args = 4;; -let calltup_elt_indirect_args = 5;; +let calltup_elt_indirect_args = 2;; +let calltup_elt_ty_params = 3;; +let calltup_elt_args = 4;; +let calltup_elt_iterator_args = 5;; let iterator_args_elt_block_fn = 0;; let iterator_args_elt_outer_frame_ptr = 1;; let indirect_args_elt_closure = 0;; -(* ty_params, src, dst, tydesc, taskptr. *) +(* dst, taskptr, closure-ptr, ty_params, src, src2=target_task *) let worst_case_glue_call_args = 5;; type abi = diff --git a/src/boot/me/layout.ml b/src/boot/me/layout.ml index dcb03f21..e1a7ff47 100644 --- a/src/boot/me/layout.ml +++ b/src/boot/me/layout.ml @@ -21,7 +21,8 @@ let layout_visitor * |... | * |... | * +----------------------------+ <-- fp + abi_frame_base_sz - * |task ptr (implicit arg) | + abi_implicit_args_sz + * |closure/obj ptr (impl. arg) | + abi_implicit_args_sz + * |task ptr (implicit arg) | * |output ptr (implicit arg) | * +----------------------------+ <-- fp + abi_frame_base_sz * |return pc | diff --git a/src/boot/me/semant.ml b/src/boot/me/semant.ml index 2672aee9..7b18a5bc 100644 --- a/src/boot/me/semant.ml +++ b/src/boot/me/semant.ml @@ -2027,10 +2027,10 @@ let call_args_referent_type_full [| out_ptr_rty; (* Abi.calltup_elt_out_ptr *) task_ptr_rty; (* Abi.calltup_elt_task_ptr *) + Il.StructTy indirect_arg_rtys; (* Abi.calltup_elt_indirect_args *) ty_param_rtys; (* Abi.calltup_elt_ty_params *) arg_rtys; (* Abi.calltup_elt_args *) - Il.StructTy iterator_arg_rtys; (* Abi.calltup_elt_iterator_args *) - Il.StructTy indirect_arg_rtys (* Abi.calltup_elt_indirect_args *) + Il.StructTy iterator_arg_rtys (* Abi.calltup_elt_iterator_args *) |] ;; -- cgit v1.2.3