Interesting, GCC 7.x seems to simply puts the cold branch on a separate nop-padded cacheline.
GCC 9 [1] instead moves the exception throwing branch into a cold clone of exitWithMessageException function. The behaviour seems to have changed on starting from GCC 8.x.