Ignore:
Timestamp:
Jul 29, 2010, 12:52:22 PM (15 years ago)
Author:
Csaba Osztrogonác
Message:

2010-07-29 Gabor Loki <[email protected]>

Reviewed by Gavin Barraclough.

Avoid increasing required alignment of target type warning on ARM
https://bugs.webkit.org/show_bug.cgi?id=38045

The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
increases required alignment of target type warnings.
Casting the type of [pointer to Type2] object to void* bypasses the
warning.

  • assembler/ARMAssembler.cpp: (JSC::ARMAssembler::executableCopy):
  • assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::putShortUnchecked): (JSC::AssemblerBuffer::putIntUnchecked): (JSC::AssemblerBuffer::putInt64Unchecked):
  • jit/JITStubs.cpp:
  • pcre/pcre_compile.cpp: (jsRegExpCompile):
  • wtf/FastMalloc.cpp: (WTF::PageHeapAllocator::New): (WTF::TCMalloc_Central_FreeList::Populate):
  • wtf/MD5.cpp: (WTF::reverseBytes): (WTF::MD5::addBytes): (WTF::MD5::checksum):
  • wtf/StdLibExtras.h: (reinterpret_cast_ptr):
  • wtf/Vector.h: (WTF::VectorBuffer::inlineBuffer):
  • wtf/qt/StringQt.cpp: (WebCore::String::String):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/StdLibExtras.h

    r56085 r64302  
    5252#define STRINGIZE_VALUE_OF(exp) STRINGIZE(exp)
    5353
     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)
     65template<typename T>
     66T reinterpret_cast_ptr(void* ptr)
     67{
     68    ASSERT(!(reinterpret_cast<unsigned int>(ptr) % __alignof__(T)));
     69    return reinterpret_cast<T>(ptr);
     70}
     71template<typename T>
     72T reinterpret_cast_ptr(const void* ptr)
     73{
     74    ASSERT(!(reinterpret_cast<unsigned int>(ptr) % __alignof__(T)));
     75    return reinterpret_cast<T>(ptr);
     76}
     77#else
     78#define reinterpret_cast_ptr reinterpret_cast
     79#endif
     80
    5481namespace WTF {
    5582
Note: See TracChangeset for help on using the changeset viewer.