RFR: 8200735: Move CMS specific code from binaryTreeDictionary and freeList to CMS files

Stefan Karlsson stefan.karlsson at oracle.com
Wed Apr 4 18:02:05 UTC 2018


I've updated the patch so that we maintain the order of the moved 
classes and functions:
  http://cr.openjdk.java.net/~stefank/8200735/webrev.02
http://cr.openjdk.java.net/~stefank/8200735/webrev.02.delta

And here's the diff of the important parts of the old 
binaryTreeDictionary.cpp and the new compactibleFreeListSpace.cpp files:
  http://cr.openjdk.java.net/~stefank/8200735/webrev.02/oldBinaryTreeDictionaryCppVSnewCompactibleFreeListSpaceCpp.patch

Thanks,
StefanK

On 2018-04-04 19:13, Stefan Karlsson wrote:
> On 2018-04-04 18:34, Aleksey Shipilev wrote:
>> On 04/04/2018 03:22 PM, Stefan Karlsson wrote:
>>> Please review this patch to move CMS specific code out of the 
>>> binaryTreeDictionary.*pp and
>>> freeList.*hpp files into CMS files.
>>>
>>> http://cr.openjdk.java.net/~stefank/8200735/webrev.01
>> Very nice cleanup, looks good!
>
> Thanks, Aleksey!
>
>> I assume these are only code moves, and no actual code changes hidden 
>> there.
>
> I've tried to only make changes that would cause the compiler to 
> generate equivalent code, minus the fact that it now might inline more 
> (which is a consequence of the removal of the explicit template 
> instantiation).
>
> It might be important to not that I did some changes to the classes 
> that were brought over to CMS. For example:
> -template <class Chunk_t, class FreeList_t>
> -class BeginSweepClosure : public AscendTreeCensusClosure<Chunk_t, 
> FreeList_t> {
> -  double _percentage;
> -  float _inter_sweep_current;
> -  float _inter_sweep_estimate;
> -  float _intra_sweep_estimate;
> -
> - public:
> -  BeginSweepClosure(double p, float inter_sweep_current,
> -                              float inter_sweep_estimate,
> -                              float intra_sweep_estimate) :
> -   _percentage(p),
> -   _inter_sweep_current(inter_sweep_current),
> -   _inter_sweep_estimate(inter_sweep_estimate),
> -   _intra_sweep_estimate(intra_sweep_estimate) { }
> -
> -  void do_list(FreeList<Chunk_t>* fl) {}
> -
> -#if INCLUDE_ALL_GCS
> -  void do_list(AdaptiveFreeList<Chunk_t>* fl) {
> -    double coalSurplusPercent = _percentage;
> -    fl->compute_desired(_inter_sweep_current, _inter_sweep_estimate, 
> _intra_sweep_estimate);
> -    fl->set_coal_desired((ssize_t)((double)fl->desired() * 
> coalSurplusPercent));
> -    fl->set_before_sweep(fl->count());
> -    fl->set_bfr_surp(fl->surplus());
> -  }
> -#endif // INCLUDE_ALL_GCS
> -};
>
> became:
> +class BeginSweepClosure : public AscendTreeCensusClosure<FreeChunk, 
> AdaptiveFreeList<FreeChunk> > {
> +  double _percentage;
> +  float _inter_sweep_current;
> +  float _inter_sweep_estimate;
> +  float _intra_sweep_estimate;
> +
> + public:
> +  BeginSweepClosure(double p, float inter_sweep_current,
> +                              float inter_sweep_estimate,
> +                              float intra_sweep_estimate) :
> +   _percentage(p),
> +   _inter_sweep_current(inter_sweep_current),
> +   _inter_sweep_estimate(inter_sweep_estimate),
> +   _intra_sweep_estimate(intra_sweep_estimate) { }
> +
> +  void do_list(AdaptiveFreeList<FreeChunk>* fl) {
> +    double coalSurplusPercent = _percentage;
> +    fl->compute_desired(_inter_sweep_current, _inter_sweep_estimate, 
> _intra_sweep_estimate);
> +    fl->set_coal_desired((ssize_t)((double)fl->desired() * 
> coalSurplusPercent));
> +    fl->set_before_sweep(fl->count());
> +    fl->set_bfr_surp(fl->surplus());
> +  }
> +};
>
> That is, I removed the template parameters of the class and got rid of 
> the unused do_list overload.
>
> I think it's easiest to see this if one diffs the old 
> binaryTreeDictionary.cpp and the new compactibleFreeListSpace.cpp. 
> Unfortunately, I didn't maintain the order of the classes and 
> functions when I brought them over. I should probably do that change 
> so that this gets easier to review.
>
> Thanks,
> StefanK
>
>>
>> Thanks,
>> -Aleksey
>
>



More information about the hotspot-dev mailing list