Changeset 57583 in webkit


Ignore:
Timestamp:
Apr 14, 2010 9:26:58 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-04-14 Kent Hansen <kent.hansen@nokia.com>

Reviewed by Maciej Stachowiak.

Mac OS X: Use deployment target to determine whether memory tagging should be enabled
https://bugs.webkit.org/show_bug.cgi?id=34888

When building on (Snow) Leopard but targeting Tiger
(TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
WebKit would crash on Tiger because the tags passed to mmap
caused those function calls to fail.

Conversely, when building on Tiger but targeting Leopard
(BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
would crash on Leopard because the tags passed to vm_map and
vm_allocate caused those function calls to fail.

Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
govern the tag definitions. Use the same tags for vm_map and
vm_allocate regardless of target, since they work on
both. Fall back to the mmap tags that work on Tiger (that is,
"no tags") if targeting Tiger, since those tags also work on
Leopard.

  • wtf/VMTags.h:
Location:
trunk/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r57472 r57583  
     12010-04-14  Kent Hansen  <kent.hansen@nokia.com>
     2
     3        Reviewed by Maciej Stachowiak.
     4
     5        Mac OS X: Use deployment target to determine whether memory tagging should be enabled
     6        https://bugs.webkit.org/show_bug.cgi?id=34888
     7
     8        When building on (Snow) Leopard but targeting Tiger
     9        (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
     10        WebKit would crash on Tiger because the tags passed to mmap
     11        caused those function calls to fail.
     12
     13        Conversely, when building on Tiger but targeting Leopard
     14        (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
     15        would crash on Leopard because the tags passed to vm_map and
     16        vm_allocate caused those function calls to fail.
     17
     18        Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
     19        govern the tag definitions. Use the same tags for vm_map and
     20        vm_allocate regardless of target, since they work on
     21        both. Fall back to the mmap tags that work on Tiger (that is,
     22        "no tags") if targeting Tiger, since those tags also work on
     23        Leopard.
     24
     25        * wtf/VMTags.h:
     26
    1272010-04-12  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
    228
  • trunk/JavaScriptCore/wtf/VMTags.h

    r56062 r57583  
    2929// On Mac OS X, the VM subsystem allows tagging memory requested from mmap and vm_map
    3030// in order to aid tools that inspect system memory use.
    31 #if OS(DARWIN) && !defined(BUILDING_ON_TIGER)
     31#if OS(DARWIN)
    3232
    3333#include <mach/vm_statistics.h>
     34
     35#if !defined(TARGETING_TIGER)
    3436
    3537#if defined(VM_MEMORY_TCMALLOC)
     
    3941#endif // defined(VM_MEMORY_TCMALLOC)
    4042
    41 #if defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
    42 #define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE)
    43 #define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
     43#if defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
    4444#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
    4545#else
     46#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(64)
     47#endif // defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
     48
     49#if defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
     50#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
     51#else
     52#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(65)
     53#endif // defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
     54
     55#else // !defined(TARGETING_TIGER)
     56
     57// mmap on Tiger fails with tags that work on Leopard, so fall
     58// back to Tiger-compatible tags (that also work on Leopard)
     59// when targeting Tiger.
     60#define VM_TAG_FOR_TCMALLOC_MEMORY -1
     61#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY -1
     62#define VM_TAG_FOR_REGISTERFILE_MEMORY -1
     63
     64#endif // !defined(TARGETING_TIGER)
     65
     66// Tags for vm_map and vm_allocate work on both Tiger and Leopard.
     67
     68#if defined(VM_MEMORY_JAVASCRIPT_CORE)
     69#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE)
     70#else
    4671#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(63)
    47 #define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(64)
    48 #define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(65)
    49 #endif // defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
     72#endif // defined(VM_MEMORY_JAVASCRIPT_CORE)
    5073
    5174#if defined(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS)
     
    5578#endif // defined(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS)
    5679
    57 #else // OS(DARWIN) && !defined(BUILDING_ON_TIGER)
     80#else // OS(DARWIN)
    5881
    5982#define VM_TAG_FOR_TCMALLOC_MEMORY -1
     
    6386#define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY -1
    6487
    65 #endif // OS(DARWIN) && !defined(BUILDING_ON_TIGER)
     88#endif // OS(DARWIN)
    6689
    6790#endif // VMTags_h
Note: See TracChangeset for help on using the changeset viewer.