Changeset 65311 in webkit for trunk/JavaScriptCore/wtf/StdLibExtras.h
- Timestamp:
- Aug 13, 2010, 3:14:36 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/wtf/StdLibExtras.h
r64327 r65311 52 52 #define STRINGIZE_VALUE_OF(exp) STRINGIZE(exp) 53 53 54 /* 55 * The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where 56 * sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM with GCC: 57 * increases required alignment of target type. 58 * 59 * An implicit or an extra static_cast<void*> bypasses the warning. 60 * For more info see the following bugzilla entries: 61 * - https://bugs.webkit.org/show_bug.cgi?id=38045 62 * - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43976 63 */ 64 #if CPU(ARM) && COMPILER(GCC) 65 template<typename Type> 66 bool isPointerTypeAlignmentOkay(Type* ptr) 67 { 68 return !(reinterpret_cast<intptr_t>(ptr) % __alignof__(Type)); 69 } 70 71 template<typename TypePtr> 72 TypePtr reinterpret_cast_ptr(void* ptr) 73 { 74 ASSERT(isPointerTypeAlignmentOkay(reinterpret_cast<TypePtr>(ptr))); 75 return reinterpret_cast<TypePtr>(ptr); 76 } 77 78 template<typename TypePtr> 79 TypePtr reinterpret_cast_ptr(const void* ptr) 80 { 81 ASSERT(isPointerTypeAlignmentOkay(reinterpret_cast<TypePtr>(ptr))); 82 return reinterpret_cast<TypePtr>(ptr); 83 } 84 #else 85 #define reinterpret_cast_ptr reinterpret_cast 86 #endif 87 54 88 namespace WTF { 55 89
Note:
See TracChangeset
for help on using the changeset viewer.