Changeset 96447 in vbox
- Timestamp:
- Aug 23, 2022 10:34:59 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 153291
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/assert.h
r96407 r96447 1598 1598 * used to bail out before taking down the system (the VMMR0 case). 1599 1599 */ 1600 #define RTAssertReleasePanic() do { RTAssertShouldPanic(); RTAssertDoPanic(); } while (0) 1600 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1601 # define RTAssertReleasePanic() do { RTAssertShouldPanic(); RTAssertDoPanic(); } while (0) 1602 #else 1603 # define RTAssertReleasePanic() do { } while (0) 1604 #endif 1601 1605 1602 1606 … … 1606 1610 * @param expr Expression which should be true. 1607 1611 */ 1608 #define AssertRelease(expr) \ 1612 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1613 # define AssertRelease(expr) \ 1609 1614 do { \ 1610 1615 if (RT_LIKELY(!!(expr))) \ … … 1616 1621 } \ 1617 1622 } while (0) 1623 #else 1624 # define AssertRelease(expr) do { } while (0) 1625 #endif 1626 1618 1627 1619 1628 /** @def AssertReleaseReturn … … 1623 1632 * @param rc What is to be presented to return. 1624 1633 */ 1625 #define AssertReleaseReturn(expr, rc) \ 1634 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1635 # define AssertReleaseReturn(expr, rc) \ 1626 1636 do { \ 1627 1637 if (RT_LIKELY(!!(expr))) \ … … 1634 1644 } \ 1635 1645 } while (0) 1646 #else 1647 # define AssertReleaseReturn(expr, rc) \ 1648 do { \ 1649 if (RT_LIKELY(!!(expr))) \ 1650 { /* likely */ } \ 1651 else \ 1652 return (rc); \ 1653 } while (0) 1654 #endif 1636 1655 1637 1656 /** @def AssertReleaseReturnVoid … … 1640 1659 * @param expr Expression which should be true. 1641 1660 */ 1642 #define AssertReleaseReturnVoid(expr) \ 1661 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1662 # define AssertReleaseReturnVoid(expr) \ 1643 1663 do { \ 1644 1664 if (RT_LIKELY(!!(expr))) \ … … 1651 1671 } \ 1652 1672 } while (0) 1673 #else 1674 # define AssertReleaseReturnVoid(expr) \ 1675 do { \ 1676 if (RT_LIKELY(!!(expr))) \ 1677 { /* likely */ } \ 1678 else \ 1679 return; \ 1680 } while (0) 1681 #endif 1653 1682 1654 1683 … … 1658 1687 * @param expr Expression which should be true. 1659 1688 */ 1660 #define AssertReleaseBreak(expr) \ 1689 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1690 # define AssertReleaseBreak(expr) \ 1661 1691 if (RT_LIKELY(!!(expr))) \ 1662 1692 { /* likely */ } \ … … 1668 1698 } else \ 1669 1699 break 1700 #else 1701 # define AssertReleaseBreak(expr) \ 1702 if (RT_LIKELY(!!(expr))) \ 1703 { /* likely */ } \ 1704 else \ 1705 break 1706 #endif 1670 1707 1671 1708 /** @def AssertReleaseBreakStmt … … 1675 1712 * @param stmt Statement to execute before break in case of a failed assertion. 1676 1713 */ 1677 #define AssertReleaseBreakStmt(expr, stmt) \ 1714 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1715 # define AssertReleaseBreakStmt(expr, stmt) \ 1678 1716 if (RT_LIKELY(!!(expr))) \ 1679 1717 { /* likely */ } \ … … 1686 1724 } else \ 1687 1725 break 1726 #else 1727 # define AssertReleaseBreakStmt(expr, stmt) \ 1728 if (RT_LIKELY(!!(expr))) \ 1729 { /* likely */ } \ 1730 else if (1) \ 1731 { \ 1732 stmt; \ 1733 break; \ 1734 } else \ 1735 break 1736 #endif 1688 1737 1689 1738 … … 1694 1743 * @param a printf argument list (in parenthesis). 1695 1744 */ 1696 #define AssertReleaseMsg(expr, a) \ 1745 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1746 # define AssertReleaseMsg(expr, a) \ 1697 1747 do { \ 1698 1748 if (RT_LIKELY(!!(expr))) \ … … 1705 1755 } \ 1706 1756 } while (0) 1757 #else 1758 # define AssertReleaseMsg(expr, a) do { } while (0) 1759 #endif 1707 1760 1708 1761 /** @def AssertReleaseMsgReturn … … 1713 1766 * @param rc What is to be presented to return. 1714 1767 */ 1715 #define AssertReleaseMsgReturn(expr, a, rc) \ 1768 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1769 # define AssertReleaseMsgReturn(expr, a, rc) \ 1716 1770 do { \ 1717 1771 if (RT_LIKELY(!!(expr))) \ … … 1725 1779 } \ 1726 1780 } while (0) 1781 #else 1782 # define AssertReleaseMsgReturn(expr, a, rc) \ 1783 do { \ 1784 if (RT_LIKELY(!!(expr))) \ 1785 { /* likely */ } \ 1786 else \ 1787 return (rc); \ 1788 } while (0) 1789 #endif 1727 1790 1728 1791 /** @def AssertReleaseMsgReturnVoid … … 1732 1795 * @param a printf argument list (in parenthesis). 1733 1796 */ 1734 #define AssertReleaseMsgReturnVoid(expr, a) \ 1797 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1798 # define AssertReleaseMsgReturnVoid(expr, a) \ 1735 1799 do { \ 1736 1800 if (RT_LIKELY(!!(expr))) \ … … 1744 1808 } \ 1745 1809 } while (0) 1810 #else 1811 # define AssertReleaseMsgReturnVoid(expr, a) \ 1812 do { \ 1813 if (RT_LIKELY(!!(expr))) \ 1814 { /* likely */ } \ 1815 else \ 1816 return; \ 1817 } while (0) 1818 #endif 1746 1819 1747 1820 … … 1752 1825 * @param a printf argument list (in parenthesis). 1753 1826 */ 1754 #define AssertReleaseMsgBreak(expr, a) \ 1827 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1828 # define AssertReleaseMsgBreak(expr, a) \ 1755 1829 if (RT_LIKELY(!!(expr))) \ 1756 1830 { /* likely */ } \ … … 1763 1837 } else \ 1764 1838 break 1839 #else 1840 # define AssertReleaseMsgBreak(expr, a) \ 1841 if (RT_LIKELY(!!(expr))) \ 1842 { /* likely */ } \ 1843 else if (1) \ 1844 break; \ 1845 else \ 1846 break 1847 #endif 1765 1848 1766 1849 /** @def AssertReleaseMsgBreakStmt … … 1771 1854 * @param stmt Statement to execute before break in case of a failed assertion. 1772 1855 */ 1773 #define AssertReleaseMsgBreakStmt(expr, a, stmt) \ 1856 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1857 # define AssertReleaseMsgBreakStmt(expr, a, stmt) \ 1774 1858 if (RT_LIKELY(!!(expr))) \ 1775 1859 { /* likely */ } \ … … 1783 1867 } else \ 1784 1868 break 1869 #else 1870 # define AssertReleaseMsgBreakStmt(expr, a, stmt) \ 1871 if (RT_LIKELY(!!(expr))) \ 1872 { /* likely */ } \ 1873 else if (1) \ 1874 { \ 1875 stmt; \ 1876 break; \ 1877 } else \ 1878 break 1879 #endif 1785 1880 1786 1881 … … 1788 1883 * An assertion failed, hit a breakpoint. 1789 1884 */ 1790 #define AssertReleaseFailed() \ 1885 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1886 # define AssertReleaseFailed() \ 1791 1887 do { \ 1792 1888 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ 1793 1889 RTAssertReleasePanic(); \ 1794 1890 } while (0) 1891 #else 1892 # define AssertReleaseFailed() do { } while (0) 1893 #endif 1795 1894 1796 1895 /** @def AssertReleaseFailedReturn … … 1799 1898 * @param rc What is to be presented to return. 1800 1899 */ 1801 #define AssertReleaseFailedReturn(rc) \ 1900 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1901 # define AssertReleaseFailedReturn(rc) \ 1802 1902 do { \ 1803 1903 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1805 1905 return (rc); \ 1806 1906 } while (0) 1907 #else 1908 # define AssertReleaseFailedReturn(rc) \ 1909 do { return (rc); } while (0) 1910 #endif 1807 1911 1808 1912 /** @def AssertReleaseFailedReturnVoid 1809 1913 * An assertion failed, hit a breakpoint and return. 1810 1914 */ 1811 #define AssertReleaseFailedReturnVoid() \ 1915 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1916 # define AssertReleaseFailedReturnVoid() \ 1812 1917 do { \ 1813 1918 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1815 1920 return; \ 1816 1921 } while (0) 1817 1922 #else 1923 # define AssertReleaseFailedReturnVoid() \ 1924 do { return; } while (0) 1925 #endif 1818 1926 1819 1927 /** @def AssertReleaseFailedBreak 1820 1928 * An assertion failed, hit a breakpoint and break. 1821 1929 */ 1822 #define AssertReleaseFailedBreak() \ 1930 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1931 # define AssertReleaseFailedBreak() \ 1823 1932 if (1) { \ 1824 1933 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1827 1936 } else \ 1828 1937 break 1938 #else 1939 # define AssertReleaseFailedBreak() \ 1940 if (1) \ 1941 break; \ 1942 else \ 1943 break 1944 #endif 1829 1945 1830 1946 /** @def AssertReleaseFailedBreakStmt … … 1833 1949 * @param stmt Statement to execute before break. 1834 1950 */ 1835 #define AssertReleaseFailedBreakStmt(stmt) \ 1951 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1952 # define AssertReleaseFailedBreakStmt(stmt) \ 1836 1953 if (1) { \ 1837 1954 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1841 1958 } else \ 1842 1959 break 1843 1960 #else 1961 # define AssertReleaseFailedBreakStmt(stmt) \ 1962 if (1) { \ 1963 stmt; \ 1964 break; \ 1965 } else \ 1966 break 1967 #endif 1844 1968 1845 1969 /** @def AssertReleaseMsgFailed … … 1848 1972 * @param a printf argument list (in parenthesis). 1849 1973 */ 1850 #define AssertReleaseMsgFailed(a) \ 1974 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1975 # define AssertReleaseMsgFailed(a) \ 1851 1976 do { \ 1852 1977 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1854 1979 RTAssertReleasePanic(); \ 1855 1980 } while (0) 1981 #else 1982 # define AssertReleaseMsgFailed(a) do { } while (0) 1983 #endif 1856 1984 1857 1985 /** @def AssertReleaseMsgFailedReturn … … 1861 1989 * @param rc What is to be presented to return. 1862 1990 */ 1863 #define AssertReleaseMsgFailedReturn(a, rc) \ 1991 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 1992 # define AssertReleaseMsgFailedReturn(a, rc) \ 1864 1993 do { \ 1865 1994 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1868 1997 return (rc); \ 1869 1998 } while (0) 1999 #else 2000 # define AssertReleaseMsgFailedReturn(a, rc) \ 2001 do { return (rc); } while (0) 2002 #endif 1870 2003 1871 2004 /** @def AssertReleaseMsgFailedReturnVoid … … 1874 2007 * @param a printf argument list (in parenthesis). 1875 2008 */ 1876 #define AssertReleaseMsgFailedReturnVoid(a) \ 2009 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 2010 # define AssertReleaseMsgFailedReturnVoid(a) \ 1877 2011 do { \ 1878 2012 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1881 2015 return; \ 1882 2016 } while (0) 2017 #else 2018 # define AssertReleaseMsgFailedReturnVoid(a) \ 2019 do { return; } while (0) 2020 #endif 1883 2021 1884 2022 … … 1888 2026 * @param a printf argument list (in parenthesis). 1889 2027 */ 1890 #define AssertReleaseMsgFailedBreak(a) \ 2028 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 2029 # define AssertReleaseMsgFailedBreak(a) \ 1891 2030 if (1) { \ 1892 2031 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1896 2035 } else \ 1897 2036 break 2037 #else 2038 # define AssertReleaseMsgFailedBreak(a) \ 2039 if (1) \ 2040 break; \ 2041 else \ 2042 break 2043 #endif 1898 2044 1899 2045 /** @def AssertReleaseMsgFailedBreakStmt … … 1903 2049 * @param stmt Statement to execute before break. 1904 2050 */ 1905 #define AssertReleaseMsgFailedBreakStmt(a, stmt) \ 2051 #if defined(RT_STRICT) || !defined(RTASSERT_NO_RELEASE_ASSERTIONS) 2052 # define AssertReleaseMsgFailedBreakStmt(a, stmt) \ 1906 2053 if (1) { \ 1907 2054 RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ … … 1912 2059 } else \ 1913 2060 break 1914 2061 #else 2062 # define AssertReleaseMsgFailedBreakStmt(a, stmt) \ 2063 if (1) { \ 2064 stmt; \ 2065 break; \ 2066 } else \ 2067 break 2068 #endif 1915 2069 /** @} */ 1916 2070
Note:
See TracChangeset
for help on using the changeset viewer.