aboutsummaryrefslogtreecommitdiff
path: root/src/boot/be
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-09-09 15:59:29 -0700
committerGraydon Hoare <[email protected]>2010-09-09 15:59:29 -0700
commita9e2327a18e782df524c14dc42910d61a4785324 (patch)
tree8763224ac3a4c11275dd64257aac47036c97c48d /src/boot/be
parentFixed lost signal notifications. (diff)
downloadrust-a9e2327a18e782df524c14dc42910d61a4785324.tar.xz
rust-a9e2327a18e782df524c14dc42910d61a4785324.zip
Switch tags to purely nominal, removing TY_iso and TY_idx. Seems to mostly work, possibly a little bumpy. Changes a lot.
Diffstat (limited to 'src/boot/be')
-rw-r--r--src/boot/be/x86.ml14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/boot/be/x86.ml b/src/boot/be/x86.ml
index b6d57e27..f4475894 100644
--- a/src/boot/be/x86.ml
+++ b/src/boot/be/x86.ml
@@ -1028,7 +1028,11 @@ let unwind_glue
(* Puts result in eax; clobbers ecx, edx in the process. *)
-let rec calculate_sz (e:Il.emitter) (size:size) (in_obj:bool) : unit =
+let rec calculate_sz
+ (e:Il.emitter)
+ (size:size)
+ (in_obj:bool)
+ : unit =
let emit = Il.emit e in
let mov dst src = emit (Il.umov dst src) in
let push x = emit (Il.Push x) in
@@ -1060,9 +1064,11 @@ let rec calculate_sz (e:Il.emitter) (size:size) (in_obj:bool) : unit =
(* Note that we cheat here and pretend only to have i+1 tydescs (because
we GEP to the i'th while still in this function, so no one outside
finds out about the lie. *)
- let tydesc_tys = Array.init (i + 1) (fun _ -> Ast.TY_type) in
- let ty_params_ty = Ast.TY_tup tydesc_tys in
- let ty_params_rty = Semant.referent_type word_bits ty_params_ty in
+ let tydesc_rtys =
+ Array.init (i + 1)
+ (fun _ -> (Il.ScalarTy (Il.AddrTy tydesc_rty)))
+ in
+ let ty_params_rty = Il.StructTy tydesc_rtys in
(* ... and fetch! *)