reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1792 buf = "/* @try scope begin */ { struct _objc_exception_data {\n"; 1793 buf += "int buf[18/*32-bit i386*/];\n"; 1794 buf += "char *pointers[4];} _stack;\n"; 1795 buf += "id volatile _rethrow = 0;\n"; 1796 buf += "objc_exception_try_enter(&_stack);\n"; 1797 buf += "if (!_setjmp(_stack.buf)) /* @try block continue */\n"; 1799 ReplaceText(startLoc, 4, buf); 1809 buf = " /* @catch begin */ else {\n"; 1810 buf += " id _caught = objc_exception_extract(&_stack);\n"; 1811 buf += " objc_exception_try_enter (&_stack);\n"; 1812 buf += " if (_setjmp(_stack.buf))\n"; 1813 buf += " _rethrow = objc_exception_extract(&_stack);\n"; 1814 buf += " else { /* @catch continue */"; 1816 InsertText(startLoc, buf); 1818 buf = "}\nelse {\n"; 1819 buf += " _rethrow = objc_exception_extract(&_stack);\n"; 1820 buf += "}"; 1821 ReplaceText(lastCurlyLoc, 1, buf); 1829 buf = "if ("; // we are generating code for the first catch clause 1831 buf = "else if ("; 1848 buf += "1) { id _tmp = _caught;"; 1849 Rewrite.ReplaceText(startLoc, bodyBuf-startBuf+1, buf); 1853 buf += "1) { "; 1854 ReplaceText(startLoc, lParenLoc-startBuf+1, buf); 1860 buf += "objc_exception_match((struct objc_class *)objc_getClass(\""; 1861 buf += IDecl->getNameAsString(); 1862 buf += "\"), (struct objc_object *)_caught)) { "; 1863 ReplaceText(startLoc, lParenLoc-startBuf+1, buf); 1890 buf = "} /* last catch end */\n"; 1891 buf += "else {\n"; 1892 buf += " _rethrow = _caught;\n"; 1893 buf += " objc_exception_try_exit(&_stack);\n"; 1894 buf += "} } /* @catch end */\n"; 1896 buf += "}\n"; 1897 InsertText(bodyLoc, buf); 1928 buf = "{ /* implicit finally clause */\n"; 1929 buf += " if (!_rethrow) objc_exception_try_exit(&_stack);\n"; 1930 buf += " if (_rethrow) objc_exception_throw(_rethrow);\n"; 1931 buf += "}"; 1932 ReplaceText(lastCurlyLoc, 1, buf);