summaryrefslogtreecommitdiff
path: root/asmcomp/comballoc.ml
diff options
context:
space:
mode:
authorMark Shinwell <mshinwell@gmail.com>2016-07-06 11:44:00 +0100
committerGitHub <noreply@github.com>2016-07-06 11:44:00 +0100
commitc843ca0691235ef3da97aea090601a41195028e0 (patch)
tree26fc8221d1b3d377cc440f8604a7b579c3e6c243 /asmcomp/comballoc.ml
parent3305a152c893060d6a551d0e70665e4e02eaf1fd (diff)
downloadocaml-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.ml14
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)