This seems to be missing backslashes. I haven't considered how to deal with preprocessor macros, but the if statement converts very simply:
if !__allocation__.IsRetry()
__object__ = __allocation__.ToObjectChecked()
if __object__ == (ISOLATE)->heap()->exception(); RETURN_EMPTY
RETURN_VALUE
This isn't ambiguous like the example you suggested before.