diff options
author | Damien Doligez <damien.doligez-inria.fr> | 2002-02-05 17:11:33 +0000 |
---|---|---|
committer | Damien Doligez <damien.doligez-inria.fr> | 2002-02-05 17:11:33 +0000 |
commit | 8ea64b58dcbafff1b20d1c25a342f595df82500e (patch) | |
tree | 970ac860b967777be0055598a17b30d39a70fca7 /byterun/finalise.c | |
parent | aad8905de3937cc56a2fb0d54e5b42fbddd5c4e2 (diff) |
byterun/finalise.c: support pour les lazy finalises
byterun/gc_ctrl.c: ajout Gc.major_slice
byterun/major_gc.c: gros bug dans les valeurs finalisees + ajout Gc.major_slice
byterun/major_gc.h: gros bug dans les valeurs finalisees + ajout Gc.major_slice
byterun/memory.c: typo dans un commentaire
byterun/minor_gc.c: petit bug, ajout Gc.major_slice
parsing/parser.mly: plus de conflits; l'automate reste identique
stdlib/gc.ml: ajout Gc.major_slice
stdlib/gc.mli: ajout Gc.major_slice
stdlib/sys.ml: ajout Sys.ocaml_version
stdlib/sys.mli: ajout Sys.ocaml_version
utils/config.mlp: ajout Sys.ocaml_version
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@4357 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/finalise.c')
-rw-r--r-- | byterun/finalise.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/byterun/finalise.c b/byterun/finalise.c index 0ad97f552..b2c51d086 100644 --- a/byterun/finalise.c +++ b/byterun/finalise.c @@ -48,8 +48,15 @@ void final_update (void) for (i = 0; i < old; i++){ Assert (Is_block (final_table[i].val)); Assert (Is_in_heap (final_table[i].val)); + again: if (Is_white_val (final_table[i].val)){ - struct final f = final_table[i]; + struct final f; + + if (Tag_val (final_table[i].val) == Forward_tag){ + final_table[i].val = Forward_val (final_table[i].val); + goto again; + } + f = final_table[i]; final_table[i] = final_table[--old]; final_table[--active] = f; -- i; |