diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/boehm.c | 18 |
2 files changed, 14 insertions, 9 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 93c634d..1c357fe 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -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> diff --git a/gcc/java/boehm.c b/gcc/java/boehm.c index 191ab86..10b6d64 100644 --- a/gcc/java/boehm.c +++ b/gcc/java/boehm.c @@ -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 |