Inline the easy cases in MakeExpandedObjectReadOnly().
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Jun 2016 22:34:05 +0000 (18:34 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Jun 2016 22:34:05 +0000 (18:34 -0400)
commitd50183c5786a21910bac566d2987f955c7bc1d62
tree091fee1278b5d7d8b611846ff617e1dc7163a087
parent9eaf5be5067571febf323337fc58bcac97b9f5d5
Inline the easy cases in MakeExpandedObjectReadOnly().

This attempts to buy back some of whatever performance we lost from fixing
bug #14174 by inlining the initial checks in MakeExpandedObjectReadOnly()
into the callers.  We can do that in a macro without creating multiple-
evaluation hazards, so it's pretty much free notationally; and the amount
of code added to callers should be minimal as well.  (Testing a value can't
take many more instructions than passing it to a subroutine.)

Might as well inline DatumIsReadWriteExpandedObject() while we're at it.

This is an ABI break for callers, so it doesn't seem safe to put into 9.5,
but I see no reason not to do it in HEAD.
src/backend/utils/adt/expandeddatum.c
src/include/utils/expandeddatum.h