]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
boehm.c (mark_reference_fields): Don't update the mask when setting pointer_after_end.
authorRichard Sandiford <r.sandiford@uk.ibm.com>
Tue, 6 May 2014 17:46:05 +0000 (17:46 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 6 May 2014 17:46:05 +0000 (17:46 +0000)
gcc/java/
* boehm.c (mark_reference_fields): Don't update the mask when
setting pointer_after_end.

From-SVN: r210119

gcc/java/ChangeLog
gcc/java/boehm.c

index 93c634d8c2c93235d713238e0e70f771d00de248..1c357fe25a5cdb12c65d50dfd3c4d9344e5d0522 100644 (file)
@@ -1,3 +1,8 @@
+2014-05-06  Richard Sandiford  <r.sandiford@uk.ibm.com>
+
+       * boehm.c (mark_reference_fields): Don't update the mask when
+       setting pointer_after_end.
+
 2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
            Mike Stump  <mikestump@comcast.net>
            Richard Sandiford  <rdsandiford@googlemail.com>
index 191ab867ecaf20ae64f71c5c922e28fe22349e8b..10b6d64bbe9ff64eb4bfed4cc27692f694083362 100644 (file)
@@ -101,17 +101,17 @@ mark_reference_fields (tree field,
 
          *last_set_index = count;
             
-         /* First word in object corresponds to most significant byte of 
-            bitmap. 
-            
-            In the case of a multiple-word record, we set pointer 
-            bits for all words in the record. This is conservative, but the 
-            size_words != 1 case is impossible in regular java code. */
-         for (i = 0; i < size_words; ++i)
-           *mask = wi::set_bit (*mask, ubit - count - i - 1);
-
          if (count >= ubit - 2)
            *pointer_after_end = 1;
+         else
+           /* First word in object corresponds to most significant byte of 
+              bitmap. 
+            
+              In the case of a multiple-word record, we set pointer 
+              bits for all words in the record. This is conservative, but the 
+              size_words != 1 case is impossible in regular java code. */
+           for (i = 0; i < size_words; ++i)
+             *mask = wi::set_bit (*mask, ubit - count - i - 1);
 
          /* If we saw a non-reference field earlier, then we can't
             use the count representation.  We keep track of that in