mozilla-ppc.patch
changeset 764 395d31877a01
parent 763 9f6de8c8a5c5
child 765 0955f22b3f4f
equal deleted inserted replaced
763:9f6de8c8a5c5 764:395d31877a01
     1 # HG changeset patch
       
     2 # Parent 21d0e194954e451f0f1935d0ed68ee9eae432ddf
       
     3 # User Wolfgang Rosenauer <wr@rosenauer.org>
       
     4 Bug 746112 - RegExp hang on ppc64 in execute.
       
     5 
       
     6 diff --git a/js/src/yarr/YarrInterpreter.h b/js/src/yarr/YarrInterpreter.h
       
     7 --- a/js/src/yarr/YarrInterpreter.h
       
     8 +++ b/js/src/yarr/YarrInterpreter.h
       
     9 @@ -162,17 +162,17 @@ struct ByteTerm {
       
    10          , m_invert(invert)
       
    11      {
       
    12          atom.characterClass = characterClass;
       
    13          atom.quantityType = QuantifierFixedCount;
       
    14          atom.quantityCount = 1;
       
    15          inputPosition = inputPos;
       
    16      }
       
    17  
       
    18 -    ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos)
       
    19 +    ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos) __attribute__((noinline))
       
    20          : type(type)
       
    21          , m_capture(capture)
       
    22          , m_invert(false)
       
    23      {
       
    24          atom.subpatternId = subpatternId;
       
    25          atom.parenthesesDisjunction = parenthesesInfo;
       
    26          atom.quantityType = QuantifierFixedCount;
       
    27          atom.quantityCount = 1;
       
    28 @@ -183,17 +183,17 @@ struct ByteTerm {
       
    29          : type(type)
       
    30          , m_capture(false)
       
    31          , m_invert(invert)
       
    32      {
       
    33          atom.quantityType = QuantifierFixedCount;
       
    34          atom.quantityCount = 1;
       
    35      }
       
    36  
       
    37 -    ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos)
       
    38 +    ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos) __attribute__((noinline))
       
    39          : type(type)
       
    40          , m_capture(capture)
       
    41          , m_invert(invert)
       
    42      {
       
    43          atom.subpatternId = subpatternId;
       
    44          atom.quantityType = QuantifierFixedCount;
       
    45          atom.quantityCount = 1;
       
    46          inputPosition = inputPos;
       
    47 diff --git a/js/src/yarr/YarrPattern.h b/js/src/yarr/YarrPattern.h
       
    48 --- a/js/src/yarr/YarrPattern.h
       
    49 +++ b/js/src/yarr/YarrPattern.h
       
    50 @@ -180,17 +180,17 @@ struct PatternTerm {
       
    51          , m_capture(false)
       
    52          , m_invert(invert)
       
    53      {
       
    54          characterClass = charClass;
       
    55          quantityType = QuantifierFixedCount;
       
    56          quantityCount = 1;
       
    57      }
       
    58  
       
    59 -    PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false)
       
    60 +    PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false) __attribute__((noinline))
       
    61          : type(type)
       
    62          , m_capture(capture)
       
    63          , m_invert(invert)
       
    64      {
       
    65          parentheses.disjunction = disjunction;
       
    66          parentheses.subpatternId = subpatternId;
       
    67          parentheses.isCopy = false;
       
    68          parentheses.isTerminal = false;
       
    69 diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
       
    70 --- a/memory/mozjemalloc/jemalloc.c
       
    71 +++ b/memory/mozjemalloc/jemalloc.c
       
    72 @@ -1099,17 +1099,17 @@ struct arena_s {
       
    73  static unsigned		ncpus;
       
    74  #endif
       
    75  
       
    76  /*
       
    77   * When MALLOC_STATIC_SIZES is defined most of the parameters
       
    78   * controlling the malloc behavior are defined as compile-time constants
       
    79   * for best performance and cannot be altered at runtime.
       
    80   */
       
    81 -#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__)
       
    82 +#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !(defined(__powerpc__))
       
    83  #define MALLOC_STATIC_SIZES 1
       
    84  #endif
       
    85  
       
    86  #ifdef MALLOC_STATIC_SIZES
       
    87  
       
    88  /*
       
    89   * VM page size. It must divide the runtime CPU page size or the code
       
    90   * will abort.