From: Jon Olav Hauglid Date: February 17 2011 5:09pm Subject: bzr commit into mysql-trunk branch (jon.hauglid:3672) Bug#11752069 List-Archive: http://lists.mysql.com/commits/131566 X-Bug: 11752069 Message-Id: <201102171711.p1HGAY6I026283@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3230044771698148508==" --===============3230044771698148508== 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:tor.didriksen@stripped 3672 Jon Olav Hauglid 2011-02-17 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-17 17:09:47 +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) { --===============3230044771698148508== 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: ad1b9d5288cfbf1b1381d972c83d59a5c6fdfe9e # timestamp: 2011-02-17 18:09:50 +0100 # base_revision_id: tor.didriksen@stripped\ # 2g3opq3vv0qrd1al # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWYUBga4AAglfgAAQWff//3fy 3iv/////UAVGW8qDGBoHRRrhKJAJpqbKMmmZI/VB6hoAA9Q0GnqaaHqDQSkQ1T8EDQTCSfqjaQAA DQaABoGgSk0ZRT00IbU0GRoD1ANAAAAGgA4yZNDEYmjAIwEwgDATTRpkaAYSSaITBGKYaCDTRkk9 J6nqZNHlM1AADE/gzyXsTy15b5O++k+JP0FwF2BYbcJnUBk+aF3F8aUTrVCMJAYBlqvAtu+mGkpC 7N0BEFHlSqLHWPOQajGStrG7aBawjODB34MkFp+HWqHBekDmlDBJk81r8vX7lExRpoGZc0FN3QBr Mr8Z6mkzWqKmGZSBZxUgyXLrW6slNDaYEYqEqJx7sTiGhSRFD0BjB8MfE6hGF4HhgHiDMHhhOFxu EL0ndQAvU2iIunXoIWdrq04lq112pGCzLKBghqZZIi7G0nM9Q4iCqGEdpORI/yMA6krieHtOS0ir IsSbaHXBz7JCNBr70GCHm0oY6gcrfbjZAlcnMaR3P3QTIFCLQLzyb5MpkWYK8rtjDQ5Pd7gTE4hj ZTxK3Zd5EtlkuI5rYBlZUmap71HQPbVwmCYvwLybF2hjUn6TkL4qWPFLGpx4L48tMzajTWcTUwgw kLFdJbY6ENCpH6jCrariWl1uZv2hZ4DhqIxyulaOahUpKhmZqVzpkkmuvCwSVIxRSIxSAxRm0hBI pAuo/okQi9USituNkW01g+a2FZNOLEcQhOxrh0KxnE9N7olTpZLalax75kU1VA6EEKwJwgc4Sgdo tmiqjDcbgcUbVjQ5lQdfRUT3D8C5EqqorArCsFmQiFHAf+gosAe2wcqDqR0zBGEIMCwPkLiWgJQo DXC1lD7CfeqZ3hrBnIPocYOHt+/3t4NNOWTEwd/d4D+B7qMmZI7CRlbstkDy5Lz4/vnrowN2YpQL y0aIhdeiU0WcalH9xAobouLwxxPHz9jcg/4GDUs4NqBlBfFoBobvc8GVJf5GsNwWnV5fcQ36Y+ZN VTtN9VsQvdki+UvRIw0TEkxQUOy3kDLhw4LcRnz0UKhNFIv5/hXksOg2CvXAqqW1NTi8T0wgdcIL cSEvTrhPby46c50QnyBZA6tWnHfQqVCiXJCxV3Kspe3ZFEr0Wlp/veUQxwex+qoa/CK6YjEXCdFS pJaSV2GbQQHMeyR0z75GjMvx25OO2Bx4wsE8F2h39axFcjUU3E6DWQn+ngcUxSFlzoqkBb5TRgTK Bq54A2XfyXdpTgaE+yhyNC6dCmWmcwuZllq3hUJ4iyBr2c0qSkGVHaXHAOQILp5snvPgNCuoXSbc Wz2hj1KeDV0bAtB4A03y5QC+tIhWNBod3PwQQzC55GLXbLSq+jNMkbVFH6B9oODgdSqnhjel+id5 nHMNL5+mK72IFCQgCZwkLCYQWal7iKihBiLAzQpi4o2TEAcKBMyZU58xEwj0rTR8ZAvlScw3zAZZ PG11PzyPWr8y+aQwa2wBrmU5dnlNu00skD4rK6M2tmTEiljqtyRVc/reS9VOxWeK3RjVBFCRBVRE u1pKJr5A6Cra1VHlWkwUT5mO8Lw9sTGFdgyOY87vqHhMG95TxmOafOr3e0KhaZD3lAQyKrwFw9Te Ff4XQ1BYjUPYBqYL5wd1FgZ+AuEokdx+tCHkRv5je5Ajiwaso21PWK0myoVBQrAoLAzYEJkW/gJ3 TTwh3CXNypcgKS0HBS/sW3YyH0pTEfswVF4ZVidyoew7eVGige8lSjDKxJFjajNqJ+XsJhoaagv+ LuSKcKEhCgMDXA== --===============3230044771698148508==--