From: Jon Olav Hauglid Date: February 18 2011 2:05pm Subject: bzr commit into mysql-trunk branch (jon.hauglid:3679) Bug#11752069 List-Archive: http://lists.mysql.com/commits/131634 X-Bug: 11752069 Message-Id: <201102181407.p1ICqpVb019296@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6383099549873396447==" --===============6383099549873396447== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-trunk-bug11752069_refactor/ based on revid:alexander.barkov@stripped 3679 Jon Olav Hauglid 2011-02-18 Followup to Bug #11752069 (former bug 43152) Assertion `bitmap_is_set_all(&table->s->all_set)' failed in handler::ha_reset This patch refactors four my_bitmap functions that were macros in non-DEBUG builds and inline functions in DEBUG builds. The patch changes them to only have inline function implementations. This simplifies code, makes non-DEBUG and DEBUG builds more similar and removes bug-prone macros. modified: include/my_bitmap.h === modified file 'include/my_bitmap.h' --- a/include/my_bitmap.h 2011-02-16 16:19:28 +0000 +++ b/include/my_bitmap.h 2011-02-18 14:05:12 +0000 @@ -71,57 +71,34 @@ extern void bitmap_lock_clear_bit(MY_BIT #define bitmap_buffer_size(bits) (((bits)+31)/32)*4 #define no_bytes_in_map(map) (((map)->n_bits + 7)/8) #define no_words_in_map(map) (((map)->n_bits + 31)/32) -#define bytes_word_aligned(bytes) (4*((bytes + 3)/4)) -#define _bitmap_set_bit(MAP, BIT) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \ - |= (1 << ((BIT) & 7))) -#define _bitmap_flip_bit(MAP, BIT) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \ - ^= (1 << ((BIT) & 7))) -#define _bitmap_clear_bit(MAP, BIT) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \ - &= ~ (1 << ((BIT) & 7))) -#define _bitmap_is_set(MAP, BIT) (uint) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \ - & (1 << ((BIT) & 7))) -/* - WARNING! - - The below symbols are inline functions in DEBUG builds and macros in - non-DEBUG builds. The latter evaluate their 'bit' argument twice. - - NEVER use an increment/decrement operator with the 'bit' argument. - It would work with DEBUG builds, but fails later in production builds! - - FORBIDDEN: bitmap_set_bit($my_bitmap, (field++)->field_index); -*/ -#ifndef DBUG_OFF -static inline void -bitmap_set_bit(MY_BITMAP *map,uint bit) + +static inline void bitmap_set_bit(MY_BITMAP *map, uint bit) { - DBUG_ASSERT(bit < (map)->n_bits); - _bitmap_set_bit(map,bit); + DBUG_ASSERT(bit < map->n_bits); + ((uchar*)map->bitmap)[bit / 8] |= (1 << (bit & 7)); } -static inline void -bitmap_flip_bit(MY_BITMAP *map,uint bit) + + +static inline void bitmap_flip_bit(MY_BITMAP *map, uint bit) { - DBUG_ASSERT(bit < (map)->n_bits); - _bitmap_flip_bit(map,bit); + DBUG_ASSERT(bit < map->n_bits); + ((uchar*)map->bitmap)[bit / 8] ^= (1 << (bit & 7)); } -static inline void -bitmap_clear_bit(MY_BITMAP *map,uint bit) + + +static inline void bitmap_clear_bit(MY_BITMAP *map, uint bit) { - DBUG_ASSERT(bit < (map)->n_bits); - _bitmap_clear_bit(map,bit); + DBUG_ASSERT(bit < map->n_bits); + ((uchar*)map->bitmap)[bit / 8] &= ~(1 << (bit & 7)); } -static inline uint -bitmap_is_set(const MY_BITMAP *map,uint bit) + + +static inline my_bool bitmap_is_set(const MY_BITMAP *map, uint bit) { - DBUG_ASSERT(bit < (map)->n_bits); - return _bitmap_is_set(map,bit); + DBUG_ASSERT(bit < map->n_bits); + return ((uchar*)map->bitmap)[bit / 8] & (1 << (bit & 7)); } -#else -#define bitmap_set_bit(MAP, BIT) _bitmap_set_bit(MAP, BIT) -#define bitmap_flip_bit(MAP, BIT) _bitmap_flip_bit(MAP, BIT) -#define bitmap_clear_bit(MAP, BIT) _bitmap_clear_bit(MAP, BIT) -#define bitmap_is_set(MAP, BIT) _bitmap_is_set(MAP, BIT) -#endif + static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2) { --===============6383099549873396447== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-trunk-\ # bug11752069_refactor/ # testament_sha1: 4ef2f587213787aab3f2de590ae404ee8a6a50b6 # timestamp: 2011-02-18 15:05:16 +0100 # base_revision_id: alexander.barkov@stripped\ # kj36j6k86g9ozkbq # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWT/pz94AAg1fgAAQWff//3fy 3iv/////UAVGeG2zbxudt64vZXkMJJKYQyanoxG1Gmo1DynlPU2oNGnlBo0000B5QRCmQybUPKPU 0yNADEBkDRoAABoCUmTQqnsJknqelNPJ6kyZMjIYg0xBoA0ACSUyRiR6nhQaD0mhoaaAA0AGmQaB 6gkkI0aamExBMieJM0aofqQaNNDQANAHIPDBVnhbu7d5YQqy1cQZ5TZG7BdPBgHWd92C38YtEHQw SBMDgO3hkBpXqzUagpw9QXgt7J2TSdxDcje50c6tjaC8INQHDs7+gFr/Elwhz6ohI3obkXT5rw/L 6/uLHa1eYd12gU8uQPZHW1MHi725sHHdSBZ21g6bGXDhq0eG/p4xTmRel151vR/zGhMH4A5xSHT4 oIsDMJBmHyBtCQZwDE1iHzFXQA/cehtG7WveWYeXHX0LVuvxV6RgrwMUNKG6qgXizVmDoDxDlsGE X8y4xYVJ63+8nqkRUlGRY9542j2IN2h6fa+B7KRDzBukiEddkMUItV+MvtzYa+m6QKhhVLCWYHvy lR1MgZPolXMqupeV6YEZ3UROgEUmIbKmh2LU1DGeHbKN1xHCTgqltthcx2k8nrveoEjBZfwt5mqM ZZP19hURjESDNjdmfWWzURZSRxQSE3IvW1CxU4yeUTErywqVtAyvk9gs4txqpOUYYHsVw5TFlqdz Tp2WBSLJJriGALPCNpGqpJFDZO5OF1CUUBrdMctxKp12BXjOhhsdG10yFCe1V+SsKK7TYqoy7qbL UzQK9W91SucSWHJomhHhZibAByBOB1DZa8OvVLv6jmL2G8jjZD76ZLIH2ExGzMxAGIMQNQiMYcEP yFWUCG+DsIc6eYwtBEEAZQ+AzlIBMFQXAk8w+g18XQvSGQQYVsWIBv+bq64csJTLJEg5eY474xOm lmadI0kRBr9WGeMIo9C4au/HNdqM/BUEiBcXvgCmpG9RRwtANKj9QAXm0ckPXXurM3Yt5Hv6Q4gw WJ4NYDJy/1nBtb3LhA9bKRnM7g4hLtOeo4Ed5yqnAK2giFzviiF2Eh0gUKNBN0U1ey/f4Bp7c0kk GRDi7JIFLaaS49XY8dyA92txpc5eQhQtfZG7abdr6jndevBsmjBupsWJYziPaWMOY6QClkiNOEQR g/HBNAAhCkesyOUy6sQspEhyLyvq+Q1njZrSsbWUmqghyD5zWJvpbd6BbOd5d5OcyrF4By0C5rFG slEig3Dufq8TomPQF2L0WUAX+2mDjiKKebuQuTwbDl5r4exPAdsjwId+xULbSZ4syvlgEhPgKsN/ dnRIkDKryLzIOIIMIxTK1SfE+QzptBne0a2LJWLCFazLNjZsMtgUBccDXq96ALc6RAM2C7OtxA7Q FS8uNPdlLVEU1hI2E9GMPYDweBqVkXb9K4SqpjSUnnOnhuHU02MSTMhdQaiUNKcnAwMQYGZ1UHih ZSOB4TEzJlXlcPKH7S0Yv6EFXIUjZAGUezK5WaoSetImC21ANMypL8qOajv+dbJskEO9XvRhuZkx QTY5X12x6xtlitSW64tmVBUSE0RJMp4c46CrVvKSi6SCi453h3SUyHjEkocETa22bSMsg3WecZGx O9VsBsYLeSBZqvl0brL7rXagmjUPmBqYL4g96gwM/jB4/afnFD6CF+k4PHEM2DXaNtT+8ouQokwp JhsoCt6dd8woC6G31B5mn6uK0oGV4cwlLw0468SU7ChP65J8xYhauwqdM9POrOpVELhYEaEab2KU WtsMNhoVXPrKC6FLA3+LuSKcKEgf9OfvAA== --===============6383099549873396447==--