VirtualBox

Changeset 55865 in vbox for trunk/include/iprt


Ignore:
Timestamp:
May 14, 2015 7:40:09 PM (10 years ago)
Author:
vboxsync
Message:

iprt/assert.h: Replaced 'if (RT_UNLIKELY(!(expr)))' with 'if (RT_LIKELY(!!(expr)) { /*likely*/ } else' to our Visual C++ karma. It is believed that it will assume the if statement is more likely than the else, and unless there are other goot reasons for it, put the code for the else later in (or hopefully outside) the code path.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/assert.h

    r55192 r55865  
    457457# define RTAssertMsg1Weak(pszExpr, uLine, pszfile, pszFunction) \
    458458                                do { } while (0)
    459 # define RTAssertMsg2Weak       if (0) RTAssertMsg2Weak
     459# define RTAssertMsg2Weak       if (1) {} else RTAssertMsg2Weak
    460460#endif
    461461
     
    499499# define Assert(expr)  \
    500500    do { \
    501         if (RT_UNLIKELY(!(expr))) \
     501        if (RT_LIKELY(!!(expr))) \
     502        { /* likely */ } \
     503        else \
    502504        { \
    503505            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    519521# define AssertStmt(expr, stmt)  \
    520522    do { \
    521         if (RT_UNLIKELY(!(expr))) \
     523        if (RT_LIKELY(!!(expr))) \
     524        { /* likely */ } \
     525        else \
    522526        { \
    523527            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    529533# define AssertStmt(expr, stmt)  \
    530534    do { \
    531         if (RT_UNLIKELY(!(expr))) \
     535        if (RT_LIKELY(!!(expr))) \
     536        { /* likely */ } \
     537        else \
    532538        { \
    533539            stmt; \
     
    547553# define AssertReturn(expr, rc) \
    548554    do { \
    549         if (RT_UNLIKELY(!(expr))) \
     555        if (RT_LIKELY(!!(expr))) \
     556        { /* likely */ } \
     557        else \
    550558        { \
    551559            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    557565# define AssertReturn(expr, rc) \
    558566    do { \
    559         if (RT_UNLIKELY(!(expr))) \
     567        if (RT_LIKELY(!!(expr))) \
     568        { /* likely */ } \
     569        else \
    560570            return (rc); \
    561571    } while (0)
     
    576586# define AssertReturnStmt(expr, stmt, rc) \
    577587    do { \
    578         if (RT_UNLIKELY(!(expr))) \
     588        if (RT_LIKELY(!!(expr))) \
     589        { /* likely */ } \
     590        else \
    579591        { \
    580592            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    587599# define AssertReturnStmt(expr, stmt, rc) \
    588600    do { \
    589         if (RT_UNLIKELY(!(expr))) \
     601        if (RT_LIKELY(!!(expr))) \
     602        { /* likely */ } \
     603        else \
    590604        { \
    591605            stmt; \
     
    604618# define AssertReturnVoid(expr) \
    605619    do { \
    606         if (RT_UNLIKELY(!(expr))) \
     620        if (RT_LIKELY(!!(expr))) \
     621        { /* likely */ } \
     622        else \
    607623        { \
    608624            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    614630# define AssertReturnVoid(expr) \
    615631    do { \
    616         if (RT_UNLIKELY(!(expr))) \
     632        if (RT_LIKELY(!!(expr))) \
     633        { /* likely */ } \
     634        else \
    617635            return; \
    618636    } while (0)
     
    631649# define AssertReturnVoidStmt(expr, stmt) \
    632650    do { \
    633         if (RT_UNLIKELY(!(expr))) \
     651        if (RT_LIKELY(!!(expr))) \
     652        { /* likely */ } \
     653        else \
    634654        { \
    635655            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    642662# define AssertReturnVoidStmt(expr, stmt) \
    643663    do { \
    644         if (RT_UNLIKELY(!(expr))) \
     664        if (RT_LIKELY(!!(expr))) \
     665        { /* likely */ } \
     666        else \
    645667        { \
    646668            stmt; \
     
    659681#ifdef RT_STRICT
    660682# define AssertBreak(expr) \
    661     if (RT_UNLIKELY(!(expr))) \
     683    if (RT_LIKELY(!!(expr))) \
     684    { /* likely */ } \
     685    else if (1) \
    662686    { \
    663687        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    667691#else
    668692# define AssertBreak(expr) \
    669     if (RT_UNLIKELY(!(expr))) \
    670         break; \
    671     else do {} while (0)
     693    if (RT_LIKELY(!!(expr))) \
     694    { /* likely */ } \
     695    else \
     696        break
    672697#endif
    673698
     
    681706#ifdef RT_STRICT
    682707# define AssertBreakStmt(expr, stmt) \
    683     if (RT_UNLIKELY(!(expr))) { \
     708    if (RT_LIKELY(!!(expr))) \
     709    { /* likely */ } \
     710    else if (1) \
     711    { \
    684712        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
    685713        RTAssertPanic(); \
     
    689717#else
    690718# define AssertBreakStmt(expr, stmt) \
    691     if (RT_UNLIKELY(!(expr))) { \
     719    if (RT_LIKELY(!!(expr))) \
     720    { /* likely */ } \
     721    else if (1) \
     722    { \
    692723        stmt; \
    693724        break; \
     
    704735# define AssertMsg(expr, a)  \
    705736    do { \
    706         if (RT_UNLIKELY(!(expr))) \
     737        if (RT_LIKELY(!!(expr))) \
     738        { /* likely */ } \
     739        else \
    707740        { \
    708741            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    728761# define AssertMsgStmt(expr, a, stmt)  \
    729762    do { \
    730         if (RT_UNLIKELY(!(expr))) \
     763        if (RT_LIKELY(!!(expr))) \
     764        { /* likely */ } \
     765        else \
    731766        { \
    732767            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    739774# define AssertMsgStmt(expr, a, stmt)  \
    740775    do { \
    741         if (RT_UNLIKELY(!(expr))) \
     776        if (RT_LIKELY(!!(expr))) \
     777        { /* likely */ } \
     778        else \
    742779        { \
    743780            stmt; \
     
    757794# define AssertMsgReturn(expr, a, rc)  \
    758795    do { \
    759         if (RT_UNLIKELY(!(expr))) \
     796        if (RT_LIKELY(!!(expr))) \
     797        { /* likely */ } \
     798        else \
    760799        { \
    761800            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    768807# define AssertMsgReturn(expr, a, rc) \
    769808    do { \
    770         if (RT_UNLIKELY(!(expr))) \
     809        if (RT_LIKELY(!!(expr))) \
     810        { /* likely */ } \
     811        else \
    771812            return (rc); \
    772813    } while (0)
     
    788829# define AssertMsgReturnStmt(expr, a, stmt, rc)  \
    789830    do { \
    790         if (RT_UNLIKELY(!(expr))) \
     831        if (RT_LIKELY(!!(expr))) \
     832        { /* likely */ } \
     833        else \
    791834        { \
    792835            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    800843# define AssertMsgReturnStmt(expr, a, stmt, rc) \
    801844    do { \
    802         if (RT_UNLIKELY(!(expr))) \
     845        if (RT_LIKELY(!!(expr))) \
     846        { /* likely */ } \
     847        else \
    803848        { \
    804849            stmt; \
     
    818863# define AssertMsgReturnVoid(expr, a)  \
    819864    do { \
    820         if (RT_UNLIKELY(!(expr))) \
     865        if (RT_LIKELY(!!(expr))) \
     866        { /* likely */ } \
     867        else \
    821868        { \
    822869            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    829876# define AssertMsgReturnVoid(expr, a) \
    830877    do { \
    831         if (RT_UNLIKELY(!(expr))) \
     878        if (RT_LIKELY(!!(expr))) \
     879        { /* likely */ } \
     880        else \
    832881            return; \
    833882    } while (0)
     
    842891 * @param   expr    Expression which should be true.
    843892 * @param   a       printf argument list (in parenthesis).
    844  * @param   stmt    Statement to execute before break in case of a failed assertion.
     893 * @param   stmt    Statement to execute before return in case of a failed assertion.
    845894 */
    846895#ifdef RT_STRICT
    847896# define AssertMsgReturnVoidStmt(expr, a, stmt)  \
    848897    do { \
    849         if (RT_UNLIKELY(!(expr))) \
     898        if (RT_LIKELY(!!(expr))) \
     899        { /* likely */ } \
     900        else \
    850901        { \
    851902            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    859910# define AssertMsgReturnVoidStmt(expr, a, stmt) \
    860911    do { \
    861         if (RT_UNLIKELY(!(expr))) \
     912        if (RT_LIKELY(!!(expr))) \
     913        { /* likely */ } \
     914        else \
    862915        { \
    863916            stmt; \
     
    876929 */
    877930#ifdef RT_STRICT
    878 # define AssertMsgBreak(expr, a)  \
    879     if (RT_UNLIKELY(!(expr))) \
     931# define AssertMsgBreak(expr, a) \
     932    if (RT_LIKELY(!!(expr))) \
     933    { /* likely */ } \
     934    else if (1) \
    880935    { \
    881936        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    886941#else
    887942# define AssertMsgBreak(expr, a) \
    888     if (RT_UNLIKELY(!(expr))) \
    889         break; \
    890     else do {} while (0)
     943    if (RT_LIKELY(!!(expr))) \
     944    { /* likely */ } \
     945    else \
     946        break
    891947#endif
    892948
     
    901957#ifdef RT_STRICT
    902958# define AssertMsgBreakStmt(expr, a, stmt) \
    903     if (RT_UNLIKELY(!(expr))) { \
     959    if (RT_LIKELY(!!(expr))) \
     960    { /* likely */ } \
     961    else if (1) \
     962    { \
    904963        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
    905964        RTAssertMsg2Weak a; \
     
    910969#else
    911970# define AssertMsgBreakStmt(expr, a, stmt) \
    912     if (RT_UNLIKELY(!(expr))) { \
     971    if (RT_LIKELY(!!(expr))) \
     972    { /* likely */ } \
     973    else if (1) \
     974    { \
    913975        stmt; \
    914976        break; \
     
    11961258#define AssertLogRel(expr) \
    11971259    do { \
    1198         if (RT_UNLIKELY(!(expr))) \
     1260        if (RT_LIKELY(!!(expr))) \
     1261        { /* likely */ } \
     1262        else \
    11991263        { \
    12001264            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    12121276#define AssertLogRelReturn(expr, rc) \
    12131277    do { \
    1214         if (RT_UNLIKELY(!(expr))) \
     1278        if (RT_LIKELY(!!(expr))) \
     1279        { /* likely */ } \
     1280        else \
    12151281        { \
    12161282            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    12281294#define AssertLogRelReturnVoid(expr) \
    12291295    do { \
    1230         if (RT_UNLIKELY(!(expr))) \
     1296        if (RT_LIKELY(!!(expr))) \
     1297        { /* likely */ } \
     1298        else \
    12311299        { \
    12321300            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    12431311 */
    12441312#define AssertLogRelBreak(expr) \
    1245     if (RT_UNLIKELY(!(expr))) \
     1313    if (RT_LIKELY(!!(expr))) \
     1314    { /* likely */ } \
     1315    else if (1) \
    12461316    { \
    12471317        RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    12591329 */
    12601330#define AssertLogRelBreakStmt(expr, stmt) \
    1261     if (RT_UNLIKELY(!(expr))) \
     1331    if (RT_LIKELY(!!(expr))) \
     1332    { /* likely */ } \
     1333    else if (1) \
    12621334    { \
    12631335        RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    12761348#define AssertLogRelMsg(expr, a) \
    12771349    do { \
    1278         if (RT_UNLIKELY(!(expr))) \
     1350        if (RT_LIKELY(!!(expr))) \
     1351        { /* likely */ } \
     1352        else\
    12791353        { \
    12801354            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    12941368#define AssertLogRelMsgStmt(expr, a, stmt) \
    12951369    do { \
    1296         if (RT_UNLIKELY(!(expr))) \
     1370        if (RT_LIKELY(!!(expr))) \
     1371        { /* likely */ } \
     1372        else\
    12971373        { \
    12981374            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    13131389#define AssertLogRelMsgReturn(expr, a, rc) \
    13141390    do { \
    1315         if (RT_UNLIKELY(!(expr))) \
     1391        if (RT_LIKELY(!!(expr))) \
     1392        { /* likely */ } \
     1393        else\
    13161394        { \
    13171395            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    13351413#define AssertLogRelMsgReturnStmt(expr, a, stmt, rcRet) \
    13361414    do { \
    1337         if (RT_UNLIKELY(!(expr))) \
     1415        if (RT_LIKELY(!!(expr))) \
     1416        { /* likely */ } \
     1417        else\
    13381418        { \
    13391419            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    13541434#define AssertLogRelMsgReturnVoid(expr, a) \
    13551435    do { \
    1356         if (RT_UNLIKELY(!(expr))) \
     1436        if (RT_LIKELY(!!(expr))) \
     1437        { /* likely */ } \
     1438        else\
    13571439        { \
    13581440            RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    13711453 */
    13721454#define AssertLogRelMsgBreak(expr, a) \
    1373     if (RT_UNLIKELY(!(expr))) \
     1455    if (RT_LIKELY(!!(expr))) \
     1456    { /* likely */ } \
     1457    else if (1) \
    13741458    { \
    13751459        RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    13891473 */
    13901474#define AssertLogRelMsgBreakStmt(expr, a, stmt) \
    1391     if (RT_UNLIKELY(!(expr))) \
     1475    if (RT_LIKELY(!!(expr))) \
     1476    { /* likely */ } \
     1477    else if (1) \
    13921478    { \
    13931479        RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    16121698#define AssertRelease(expr)  \
    16131699    do { \
    1614         if (RT_UNLIKELY(!(expr))) \
     1700        if (RT_LIKELY(!!(expr))) \
     1701        { /* likely */ } \
     1702        else \
    16151703        { \
    16161704            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \
     
    16271715#define AssertReleaseReturn(expr, rc)  \
    16281716    do { \
    1629         if (RT_UNLIKELY(!(expr))) \
     1717        if (RT_LIKELY(!!(expr))) \
     1718        { /* likely */ } \
     1719        else \
    16301720        { \
    16311721            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    16421732#define AssertReleaseReturnVoid(expr)  \
    16431733    do { \
    1644         if (RT_UNLIKELY(!(expr))) \
     1734        if (RT_LIKELY(!!(expr))) \
     1735        { /* likely */ } \
     1736        else \
    16451737        { \
    16461738            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    16571749 */
    16581750#define AssertReleaseBreak(expr)  \
    1659     if { \
    1660         if (RT_UNLIKELY(!(expr))) \
    1661         { \
    1662             RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
    1663             RTAssertReleasePanic(); \
    1664             break; \
    1665         } \
     1751    if (RT_LIKELY(!!(expr))) \
     1752    { /* likely */ } \
     1753    else if (1) \
     1754    { \
     1755        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     1756        RTAssertReleasePanic(); \
     1757        break; \
    16661758    } else do {} while (0)
    16671759
     
    16731765 */
    16741766#define AssertReleaseBreakStmt(expr, stmt)  \
    1675     if (RT_UNLIKELY(!(expr))) \
     1767    if (RT_LIKELY(!!(expr))) \
     1768    { /* likely */ } \
     1769    else if (1) \
    16761770    { \
    16771771        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    16901784#define AssertReleaseMsg(expr, a)  \
    16911785    do { \
    1692         if (RT_UNLIKELY(!(expr))) \
     1786        if (RT_LIKELY(!!(expr))) \
     1787        { /* likely */ } \
     1788        else \
    16931789        { \
    16941790            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    17071803#define AssertReleaseMsgReturn(expr, a, rc)  \
    17081804    do { \
    1709         if (RT_UNLIKELY(!(expr))) \
     1805        if (RT_LIKELY(!!(expr))) \
     1806        { /* likely */ } \
     1807        else \
    17101808        { \
    17111809            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    17241822#define AssertReleaseMsgReturnVoid(expr, a)  \
    17251823    do { \
    1726         if (RT_UNLIKELY(!(expr))) \
     1824        if (RT_LIKELY(!!(expr))) \
     1825        { /* likely */ } \
     1826        else \
    17271827        { \
    17281828            RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    17411841 */
    17421842#define AssertReleaseMsgBreak(expr, a)  \
    1743     if (RT_UNLIKELY(!(expr))) \
     1843    if (RT_LIKELY(!!(expr))) \
     1844    { /* likely */ } \
     1845    else if (1) \
    17441846    { \
    17451847        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
     
    17571859 */
    17581860#define AssertReleaseMsgBreakStmt(expr, a, stmt)  \
    1759     if (RT_UNLIKELY(!(expr))) { \
     1861    if (RT_LIKELY(!!(expr))) \
     1862    { /* likely */ } \
     1863    else if (1) \
     1864    { \
    17601865        RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \
    17611866        RTAssertMsg2Weak a; \
     
    19082013#define AssertFatal(expr)  \
    19092014    do { \
    1910         if (RT_UNLIKELY(!(expr))) \
     2015        if (RT_LIKELY(!!(expr))) \
     2016        { /* likely */ } \
     2017        else \
    19112018            for (;;) \
    19122019            { \
     
    19242031#define AssertFatalMsg(expr, a)  \
    19252032    do { \
    1926         if (RT_UNLIKELY(!(expr))) \
     2033        if (RT_LIKELY(!!(expr))) \
     2034        { /* likely */ } \
     2035        else \
    19272036            for (;;) \
    19282037            { \
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette