Details
Description
Several years ago Perry, Daniel, and I started removing uses of LogicallyUninterruptible and replacing them with UninterruptibleNoWarn or Unpremptible (depending on the actual semantics of each usage...).
We should finish this work item and finally kill LogicallyUninterruptible.
In addition to being cleaner, this change could also allow us to do further optimization of uninterruptible code (for example since uninteruptible code is not allowed to raise exceptions (NullPointer, ArrayBoundsCheck), we could in principle compile uninterruptible code without nullcheck/boundcheck operations. Whether or not this is actually a good idea is less clear, but it isn't even possible to safely try this until we do the cleanups and make Uninterruptibility a strictly enforced property with fewer loopholes.
Most cases where unpreemptible is suitable are currently marked logically uninterruptible.