RFR (M): 8004687: G1: Parallelize object self-forwarding and scanning during an evacuation failure
Jon Masamitsu
jon.masamitsu at oracle.com
Wed Jul 22 17:43:31 UTC 2015
Thomas,
Still your call with regard to using OopAndMarkOop. You made all
the changes. If you don't like them, that's fine.
Jon
On 7/21/2015 11:28 AM, Thomas Schatzl wrote:
> Hi Jon,
>
> On Tue, 2015-07-21 at 11:08 -0700, Jon Masamitsu wrote:
>> On 07/20/2015 07:16 AM, Thomas Schatzl wrote:
>>> Hi Jon,
>>>
>>>
>>> On Fri, 2015-07-17 at 12:57 -0700, Jon Masamitsu wrote:
>>>> Thomas,
>>>>
>>>> Changes look good.
>>> thanks for the review.
>>>
>>>> Would it work to change
>>>>
>>>> OopAndMarkOop
>>>> to
>>>> OopAndOldMarkOop
>>>>
>>>> and change the constructor to
>>>>
>>>> 866 OopAndMarkOop(oop obj) : _o(obj), _m(markOop(obj))
>>>>
>>>> so that OopAndOldMarkOop specifically saves the oop and it's
>>>> markword rather than just an oop and (not necessarily related)
>>>> markword?
>>> the only problem I see is that we earlier (8006025) changed the code
>>> to explicitly not re-read the markoop from the obj multiple times. The
>>> markoop is volatile, so it prevents some optimizations which we want
>>> here.
>>>
>>> It may not be a huge problem or one at all in this particular case,
>>> depending on where the OopAndOldMarkOop is instantiated, but requires
>>> checking.
>> If I understand this comment correctly, yes it does require
>> checking but just as it requires checking when the read of the
>> markoop was done (the one read of the markoop). It seemed
> I meant checking as in "do performance checking by running benchmarks on
> all systems and look through logs for changes". Sorry for being obtuse.
>
>> to me to be modestly more clear with now that there was
>> an OopAndMarkOop (renamed OopAndOldMarkOop or
>> OopAndPreservedMarkOop which I like even better) but
>> sometimes less code is better (i.e., simpler not to use
>> OopAndMarkOop data structure) so your call.
> I agree that less code is typically better.
>
>>> I put a webrev with pure renaming of the struct at
>>> http://cr.openjdk.java.net/~tschatzl/8004687/webrev.1/ (diff webrev:
>>> http://cr.openjdk.java.net/~tschatzl/8004687/webrev.0_to_1/).
>> The diff (0_to_1) seem to be only the deletion of some code,
>> not a renaming but maybe a moot point now if you still
>> like explicitly reading the value of the markoop that you
>> want to capture.
> better link:
> http://cr.openjdk.java.net/~tschatzl/8004687/webrev.refactor/
>
> Sorry, I already overwrote the original with implementation of Mikael's
> suggestion.
>
> Thanks,
> Thomas
>
>
More information about the hotspot-gc-dev
mailing list