In the paper Loop Recognition in C++/Java/Go/Scala (pdf) we find the following quote in the section C++ Tunings:
Structure Peeling. The structure
UnionFindNodehas 3 cold fields:type_,loop_, andheader_. Since nodes are allocated in an array, this is a good candidate for peeling optimization. The three fields can be peeled out into a separate array. Note theheader_field is also dead – but removing it has very little performance impact. Thename_field in theBasicBlockstructure is also dead, but it fits well in the padding space so it is not removed.
Can some explain to me what cold/dead fields are, and what a peeling optimization is (I understand what the author did there, but what is the rationale behind it)?