aboutsummaryrefslogtreecommitdiff
path: root/src/boot/me
diff options
context:
space:
mode:
authorRoy Frostig <[email protected]>2010-07-12 23:55:44 -0700
committerRoy Frostig <[email protected]>2010-07-15 12:30:46 -0700
commite21865a4407495a5724798a59276e4f276bc93f6 (patch)
treecd69733ab8b2f4bdb25edc4c820f6ef8e6def069 /src/boot/me
parentMake the call args referent type always have a closure word (non-optional, nu... (diff)
downloadrust-e21865a4407495a5724798a59276e4f276bc93f6.tar.xz
rust-e21865a4407495a5724798a59276e4f276bc93f6.zip
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.
Diffstat (limited to 'src/boot/me')
-rw-r--r--src/boot/me/layout.ml3
-rw-r--r--src/boot/me/semant.ml4
2 files changed, 4 insertions, 3 deletions
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 *)
|]
;;