RFR (S): 8043243: convert SCAN_AND_FORWARD, SCAN_AND_ADJUST_POINTERS, SCAN_AND_COMPACT macros to methods
Stefan Karlsson
stefan.karlsson at oracle.com
Mon Sep 8 13:45:01 UTC 2014
On 2014-09-08 13:17, Marcus Larsson wrote:
> Hi Stefan,
>
> On 08/28/2014 02:14 PM, Stefan Karlsson wrote:
>> Hi Marcus,
>>
>> On 28/08/14 13:46, Marcus Larsson wrote:
>>> Hi,
>>>
>>> I would like reviews for the following patch converting the
>>> SCAN_AND_* macros into (inline) methods.
>>>
>>> Short summary:
>>> The change is based on the demacroify.patch (bug attachment), using
>>> a proxy class to enable different functions for obj_size and similar
>>> to be used for different types of Spaces. Each type of space has a
>>> proxy defining which methods should be used in the scan_and_*
>>> functions.
>>> Made no changes to the actual code in the macros, except for
>>> replacing a multi-line debug_only(...) with #ifdef ASSERT ... #endif.
>>
>> Some background to this change. I wrote it as PoC to see if we could
>> get rid of these large macros. At that time there werw concerns
>> raised that some compilers might not be able to inline the template
>> functions. I checked the code generated by gcc and it was inlined as
>> expected, but I didn't check the code from the other compilers.
>>
>> Are the list of benchmarks below performance runs? Was it done on
>> different platforms? Did you measure the changed phases
>> (prepare_for_compation, adjust_pointers, etc.) or did you measure the
>> benchmark score?
>
> The measurements were performance runs, but I only measured benchmark
> score. I reran the benchmarks, this time to also verify/look at
> overall GC times and the different phase times. I could find no
> significant changes in these times on any of the tested platforms
> (Solaris, Linux, Windows).
>
>>
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~brutisso/webrev-8043243/
>>
>> Looking at the patch now, I wonder if we shouldn't get rid of the
>> instance variables in the *SpaceProxy classes and instead pass down
>> 'this' from the call sites? And make these classes AllStatic.
>
> Made the proxies AllStatic (reruns described above used this new
> version).
> Also followed Mikael's suggestion and made explicit calls to the known
> member functions in proxies for CompactibleFreeListSpace and
> G1OffsetTableContigSpace.
>
> New webrev:
> http://cr.openjdk.java.net/~brutisso/webrev-8043243v2/
Looks good.
StefanK
>
> Thanks,
> Marcus
>
>>
>> thanks,
>> StefanK
>>
>>>
>>> Bug:
>>> https://bugs.openjdk.java.net/browse/JDK-8043243
>>>
>>> Testing:
>>> jprt without problems
>>> SPECjbb2013, SPECjbb2005, SPECjvm2008 - no significant changes
>>>
>>> Thanks,
>>> Marcus
>>
>
More information about the hotspot-gc-dev
mailing list