aboutsummaryrefslogtreecommitdiff
path: root/lang/ocaml/files/patch-byterun::major_gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lang/ocaml/files/patch-byterun::major_gc.c')
-rw-r--r--lang/ocaml/files/patch-byterun::major_gc.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/lang/ocaml/files/patch-byterun::major_gc.c b/lang/ocaml/files/patch-byterun::major_gc.c
new file mode 100644
index 000000000000..f438c7ab265d
--- /dev/null
+++ b/lang/ocaml/files/patch-byterun::major_gc.c
@@ -0,0 +1,56 @@
+Index: byterun/major_gc.c
+===================================================================
+RCS file: /net/pauillac/caml/repository/csl/byterun/major_gc.c,v
+retrieving revision 1.37
+retrieving revision 1.39
+diff -u -r1.37 -r1.39
+--- major_gc.c 2002/06/05 12:11:15 1.37
++++ major_gc.c 2002/07/30 13:48:52 1.39
+@@ -11,7 +11,7 @@
+ /* */
+ /***********************************************************************/
+
+-/* $Id: major_gc.c,v 1.37 2002/06/05 12:11:15 doligez Exp $ */
++/* $Id: major_gc.c,v 1.39 2002/07/30 13:48:52 xleroy Exp $ */
+
+ #include <limits.h>
+
+@@ -126,15 +126,12 @@
+ if (Tag_hd (hd) < No_scan_tag){
+ for (i = 0; i < size; i++){
+ child = Field (v, i);
+- mark_again:
+ if (Is_block (child) && Is_in_heap (child)) {
+ hd = Hd_val(child);
+ if (Tag_hd (hd) == Forward_tag){
+- child = Forward_val (child);
+- Field (v, i) = child;
+- goto mark_again;
++ Field (v, i) = Forward_val (child);
+ }
+- if (Tag_hd(hd) == Infix_tag) {
++ else if (Tag_hd(hd) == Infix_tag) {
+ child -= Infix_offset_val(child);
+ hd = Hd_val(child);
+ }@@ -192,15 +189,13 @@
+ sz = Wosize_hd (hd);
+ for (i = 1; i < sz; i++){
+ curfield = Field (cur, i);
+- weak_again:
+- if (curfield != 0 && Is_block (curfield) && Is_in_heap (curfield)
+- && Is_white_val (curfield)){
++ if (curfield != 0 && Is_block (curfield) && Is_in_heap (curfield)){
+ if (Tag_val (curfield) == Forward_tag){
+- curfield = Forward_val (curfield);
+- Field (cur, i) = curfield;
+- goto weak_again;
++ Field (cur, i) = Forward_val (curfield);
+ }
+- Field (cur, i) = 0;
++ else if (Is_white_val (curfield)){
++ Field (cur, i) = 0;
++ }
+ }
+ }
+ weak_prev = &Field (cur, 0);
+