rustboot: Only bottom out at opaque IL types after finding two cycles. DON'T ASK ME WHY THIS WORKS.

This commit is contained in:
Patrick Walton 2010-12-21 15:58:17 -08:00
parent 6443179bca
commit d7cbeba731
2 changed files with 8 additions and 1 deletions

View File

@ -2425,7 +2425,7 @@ and referent_type
Some parent_tags
when boxed
&& parent_tags <> []
&& List.mem ttag parent_tags
&& (list_count ttag parent_tags) > 1
&& is_back_edge ttag (List.hd parent_tags) ->
Il.StructTy [| word; Il.OpaqueTy |]
| _ -> tag ttag

View File

@ -380,6 +380,13 @@ let rec list_drop n ls =
else list_drop (n-1) (List.tl ls)
;;
let rec list_count elem lst =
match lst with
[] -> 0
| h::t when h = elem -> 1 + (list_count elem t)
| _::t -> list_count elem t
;;
(*
* Auxiliary pair functions.