What is a cold/dead field and what is a peeling optimization?

Viewed 1153

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 UnionFindNode has 3 cold fields: type_, loop_, and header_. 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 the header_ field is also dead – but removing it has very little performance impact. The name_ field in the BasicBlock structure 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)?

2 Answers
Related