Hi, Attached is a patchset to refactor heapgettup(), heapgettup_pagemode(), and heapgetpage(). heapgettup() and heapgettup_pagemode() have a lot of duplicated code, confusingly nested if statements, and unnecessary local variables. While working on a feature for the AIO/DIO patchset, I noticed that it was difficult to add new code to heapgettup() and heapgettup_pagemode() because of how the functions are written.
I've taken a stab at refactoring them -- without generating less efficient code or causing regressions. I'm interested if people find it more readable and if those with more assembly expertise see issues (new branches added which are not highly predictable, etc). I took a look at the assembly for those symbols compiled at O2 but am not experienced enough at analysis to come to any conclusions. - Melanie
v1-0002-Turn-HeapKeyTest-macro-into-function.patch
Description: Binary data
v1-0001-Remove-breaks-in-HeapTupleSatisfiesVisibility.patch
Description: Binary data
v1-0003-Refactor-heapgettup-and-heapgetpage.patch
Description: Binary data