+ if (was_patched) {
+ assert(exceptions_get_exception() == NULL);
+ es.pc = (uint8_t *) (uintptr_t) xpc;
+ break;
+ }
+
+ // In case patching was not successful, we try to fetch the pending
+ // exception here.
+
+ p = exceptions_get_and_clear_exception();
+
+ // If there is no pending exception, we continue execution behind
+ // the position still in need of patching. Normally this would
+ // indicate an error in the patching subsystem, but others might
+ // want to piggyback patchers and we want to be able to provide
+ // "reusable trap points" and avoid inifinite loops here. This is
+ // especially useful to implement breakpoints or profiling points
+ // of any kind. So before changing the trap logic, think about
+ // utilizing the patching subsystem on your quest. :)
+