Software Compartmentalization Trade-Offs with Hardware Capabilities