The RB_ROTATE macros begin with fetching a field via a pointer. In almost most cases, that value is one that is already in a register, and the compiler cannot infer it. So, to eliminate those needless fetches, have the caller of the RB_ROTATE macros present the data in the third macro parameter, rather than having the macro fetch it.
And a few minor style cleanups.