PATCH: swapped usage of idx_t and bm_word_t types in parMarkBitMap.cpp
Thomas Schatzl
thomas.schatzl at oracle.com
Thu May 22 09:23:48 UTC 2014
Hi Dan,
On Thu, 2014-05-22 at 10:19 +0200, Dan Horák wrote:
> Hello,
>
> I've created a patch [1] to fix swapped usage of idx_t and bm_word_t
> types in
> hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp
>
> The code currently uses a pointer to idx_t as an argument to
> BitMap::set_map(bm_word_t* map) which fails on s390.
>
> For most platforms the idx_t and bm_word_t types are effectively the
> same, so the interchange is uncaught, but on s390 (32-bit) the size_t is
> "unsigned long" which makes it incompatible with "unsigned int".
>
> This a follow-up of my earlier s390 related patch [2]
>
> [1] http://fedora.danny.cz/openjdk/bitmap-1/webrev/
> [2]
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2013-September/010913.html
>
> Note: I'm Red Hat employee (dhorak at redhat.com), so I should be covered
> by Red Hat's CLA for my contributions.
>
Created https://bugs.openjdk.java.net/browse/JDK-8043722 .
I roughly looked at other similar changes, shouldn't line 129 in
g1/concurrentMark.cpp changed too?
129 _bm.set_map((uintptr_t*)_virtual_space.low());
@Compiler team: what about the instantiations of MethodLivenessResult?
I.e. in methodLiveness.cpp:476 and 1001 there are two other uintptr_t*
casts.
Thanks,
Thomas
More information about the hotspot-dev
mailing list