From: Richard Sandiford Date: Tue, 6 May 2014 17:46:05 +0000 (+0000) Subject: boehm.c (mark_reference_fields): Don't update the mask when setting pointer_after_end. X-Git-Tag: releases/gcc-5.1.0~7756 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ebe9df675a6f63a6a729da7e20c97d037b3fb8a9;p=thirdparty%2Fgcc.git boehm.c (mark_reference_fields): Don't update the mask when setting pointer_after_end. gcc/java/ * boehm.c (mark_reference_fields): Don't update the mask when setting pointer_after_end. From-SVN: r210119 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 93c634d8c2c9..1c357fe25a5c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2014-05-06 Richard Sandiford + + * boehm.c (mark_reference_fields): Don't update the mask when + setting pointer_after_end. + 2014-05-06 Kenneth Zadeck Mike Stump Richard Sandiford diff --git a/gcc/java/boehm.c b/gcc/java/boehm.c index 191ab867ecaf..10b6d64bbe9f 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