diff options
author | Mark Shinwell <mshinwell@gmail.com> | 2016-07-06 11:44:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-06 11:44:00 +0100 |
commit | c843ca0691235ef3da97aea090601a41195028e0 (patch) | |
tree | 26fc8221d1b3d377cc440f8604a7b579c3e6c243 /asmcomp/comballoc.ml | |
parent | 3305a152c893060d6a551d0e70665e4e02eaf1fd (diff) | |
download | ocaml-c843ca0691235ef3da97aea090601a41195028e0.tar.gz |
Labels after calls, call GC points and checkbound points (again) (#660)
Diffstat (limited to 'asmcomp/comballoc.ml')
-rw-r--r-- | asmcomp/comballoc.ml | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/asmcomp/comballoc.ml b/asmcomp/comballoc.ml index d37d87ce30..1692962379 100644 --- a/asmcomp/comballoc.ml +++ b/asmcomp/comballoc.ml @@ -32,12 +32,14 @@ let rec combine i allocstate = match i.desc with Iend | Ireturn | Iexit _ | Iraise _ -> (i, allocated_size allocstate) - | Iop(Ialloc sz) -> + | Iop(Ialloc { words = sz; _ }) -> begin match allocstate with No_alloc -> let (newnext, newsz) = combine i.next (Pending_alloc(i.res.(0), sz)) in - (instr_cons (Iop(Ialloc newsz)) i.arg i.res newnext, 0) + (instr_cons_debug (Iop(Ialloc {words = newsz; + label_after_call_gc = None; })) + i.arg i.res i.dbg newnext, 0) | Pending_alloc(reg, ofs) -> if ofs + sz < Config.max_young_wosize * Arch.size_addr then begin let (newnext, newsz) = @@ -47,11 +49,13 @@ let rec combine i allocstate = end else begin let (newnext, newsz) = combine i.next (Pending_alloc(i.res.(0), sz)) in - (instr_cons (Iop(Ialloc newsz)) i.arg i.res newnext, ofs) + (instr_cons_debug (Iop(Ialloc { words = newsz; + label_after_call_gc = None; })) + i.arg i.res i.dbg newnext, ofs) end end - | Iop(Icall_ind | Icall_imm _ | Iextcall _ | - Itailcall_ind | Itailcall_imm _) -> + | Iop(Icall_ind _ | Icall_imm _ | Iextcall _ | + Itailcall_ind _ | Itailcall_imm _) -> let newnext = combine_restart i.next in (instr_cons_debug i.desc i.arg i.res i.dbg newnext, allocated_size allocstate) |