about summary refs log tree commit diff
path: root/src/boot
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-10-14 12:41:48 -0700
committerGraydon Hoare <graydon@mozilla.com>2010-10-14 12:41:48 -0700
commitf234750d802fde35f6607fd1599f805e490f3dd2 (patch)
tree8cc749712920857e9a348e72b8a7855085b893c6 /src/boot
parent668f3a90a85edc8d4e1472af0eb530fa7c4bb2ed (diff)
Fix crasher in rustc.
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/be/abi.ml6
-rw-r--r--src/boot/me/semant.ml7
2 files changed, 8 insertions, 5 deletions
diff --git a/src/boot/be/abi.ml b/src/boot/be/abi.ml
index 9ea085b5550..13df33cdb07 100644
--- a/src/boot/be/abi.ml
+++ b/src/boot/be/abi.ml
@@ -62,10 +62,12 @@ let obj_body_elt_fields = 1;;
 let fn_field_code = binding_field_dispatch;;
 let fn_field_box = binding_field_bound_data;;
 
+(* NB: bound ty params come last to facilitate ignoring them on
+ * closure-dropping. *)
 let closure_body_elt_bound_args_tydesc = 0;;
 let closure_body_elt_target = 1;;
-let closure_body_elt_bound_ty_params = 2;;
-let closure_body_elt_bound_args = 3;;
+let closure_body_elt_bound_args = 2;;
+let closure_body_elt_bound_ty_params = 3;;
 
 let tag_elt_discriminant = 0;;
 let tag_elt_variant = 1;;
diff --git a/src/boot/me/semant.ml b/src/boot/me/semant.ml
index 010494b4d14..1e568df05c2 100644
--- a/src/boot/me/semant.ml
+++ b/src/boot/me/semant.ml
@@ -2219,9 +2219,10 @@ let rec closure_box_rty
       r (Array.init n_ty_params (fun _ -> tydesc))
   in
   let bound_args = r (Array.map (slot_referent_type cx) bs) in
-    (* First tydesc is the one describing bound_args; second tydesc is the one
-     * to pass to targ when invoking it.  *)
-    r [| rc; r [| tydesc; targ; ty_param_rtys; bound_args |] |]
+    (* First tydesc is the one describing bound_args; second tydesc cluster
+     * are those to pass to targ when invoking it, along with the merged
+     * bound args. *)
+    r [| rc; r [| tydesc; targ; bound_args; ty_param_rtys |] |]
 
 and fn_rty (cx:ctxt) (opaque_box_body:bool) : Il.referent_ty =
   let s t = Il.ScalarTy t in