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. |
|