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.
This commit is contained in:
parent
44d719d5fb
commit
e21865a440
@ -68,17 +68,17 @@ let vec_elt_data = 3;;
|
|||||||
|
|
||||||
let calltup_elt_out_ptr = 0;;
|
let calltup_elt_out_ptr = 0;;
|
||||||
let calltup_elt_task_ptr = 1;;
|
let calltup_elt_task_ptr = 1;;
|
||||||
let calltup_elt_ty_params = 2;;
|
let calltup_elt_indirect_args = 2;;
|
||||||
let calltup_elt_args = 3;;
|
let calltup_elt_ty_params = 3;;
|
||||||
let calltup_elt_iterator_args = 4;;
|
let calltup_elt_args = 4;;
|
||||||
let calltup_elt_indirect_args = 5;;
|
let calltup_elt_iterator_args = 5;;
|
||||||
|
|
||||||
let iterator_args_elt_block_fn = 0;;
|
let iterator_args_elt_block_fn = 0;;
|
||||||
let iterator_args_elt_outer_frame_ptr = 1;;
|
let iterator_args_elt_outer_frame_ptr = 1;;
|
||||||
|
|
||||||
let indirect_args_elt_closure = 0;;
|
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;;
|
let worst_case_glue_call_args = 5;;
|
||||||
|
|
||||||
type abi =
|
type abi =
|
||||||
|
@ -21,7 +21,8 @@ let layout_visitor
|
|||||||
* |... |
|
* |... |
|
||||||
* |... |
|
* |... |
|
||||||
* +----------------------------+ <-- fp + abi_frame_base_sz
|
* +----------------------------+ <-- 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) |
|
* |output ptr (implicit arg) |
|
||||||
* +----------------------------+ <-- fp + abi_frame_base_sz
|
* +----------------------------+ <-- fp + abi_frame_base_sz
|
||||||
* |return pc |
|
* |return pc |
|
||||||
|
@ -2027,10 +2027,10 @@ let call_args_referent_type_full
|
|||||||
[|
|
[|
|
||||||
out_ptr_rty; (* Abi.calltup_elt_out_ptr *)
|
out_ptr_rty; (* Abi.calltup_elt_out_ptr *)
|
||||||
task_ptr_rty; (* Abi.calltup_elt_task_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 *)
|
ty_param_rtys; (* Abi.calltup_elt_ty_params *)
|
||||||
arg_rtys; (* Abi.calltup_elt_args *)
|
arg_rtys; (* Abi.calltup_elt_args *)
|
||||||
Il.StructTy iterator_arg_rtys; (* Abi.calltup_elt_iterator_args *)
|
Il.StructTy iterator_arg_rtys (* Abi.calltup_elt_iterator_args *)
|
||||||
Il.StructTy indirect_arg_rtys (* Abi.calltup_elt_indirect_args *)
|
|
||||||
|]
|
|]
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user