diff options
| author | Graydon Hoare <[email protected]> | 2010-09-09 15:59:29 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-09-09 15:59:29 -0700 |
| commit | a9e2327a18e782df524c14dc42910d61a4785324 (patch) | |
| tree | 8763224ac3a4c11275dd64257aac47036c97c48d /src/boot/be | |
| parent | Fixed lost signal notifications. (diff) | |
| download | rust-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.ml | 14 |
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! *) |