mozilla-yarr-pcre.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 08 Feb 2012 08:34:20 +0100
changeset 382 67f876aafae8
parent 378 dfb824794771
child 386 7784e72b1a3a
permissions -rw-r--r--
lift up to Gecko 11beta
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     1
From: Mike Hommey <mh@glandium.org>
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     2
Date: Sat, 24 Dec 2011 09:56:58 +0100
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     3
Subject: Bug 691898 - Use YARR interpreter instead of PCRE on platforms where
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     4
 YARR JIT is not supported
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     5
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     6
---
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     7
 js/src/Makefile.in           |   21 +++++++++++++--------
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     8
 js/src/vm/RegExpObject-inl.h |   28 ++++++----------------------
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
     9
 js/src/vm/RegExpObject.cpp   |   36 ------------------------------------
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    10
 js/src/vm/RegExpObject.h     |   27 ++++++---------------------
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    11
 js/src/yarr/wtfbridge.h      |    2 --
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    12
 5 files changed, 25 insertions(+), 89 deletions(-)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    13
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    14
diff --git a/js/src/Makefile.in b/js/src/Makefile.in
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    15
index fc48cbd..49f0bdc 100644
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    16
--- a/js/src/Makefile.in
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    17
+++ b/js/src/Makefile.in
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    18
@@ -416,15 +416,20 @@ CPPSRCS += 	checks.cc \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    19
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    20
 ifeq (,$(filter arm% sparc %86 x86_64,$(TARGET_CPU)))
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    21
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    22
-VPATH +=        $(srcdir)/yarr/pcre \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    23
+VPATH +=        $(srcdir)/assembler \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    24
+                $(srcdir)/assembler/wtf \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    25
+                $(srcdir)/yarr \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    26
 		$(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    27
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    28
 CPPSRCS += \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    29
-                pcre_compile.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    30
-                pcre_exec.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    31
-                pcre_tables.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    32
-                pcre_xclass.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    33
-                pcre_ucp_searchfuncs.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    34
+                Assertions.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    35
+                OSAllocatorOS2.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    36
+                OSAllocatorPosix.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    37
+                OSAllocatorWin.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    38
+                PageBlock.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    39
+                YarrInterpreter.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    40
+                YarrPattern.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    41
+                YarrSyntaxChecker.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    42
 		$(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    43
 else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    44
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    45
@@ -1015,10 +1020,10 @@ endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    46
 # Needed to "configure" it correctly.  Unfortunately these
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    47
 # flags wind up being applied to all code in js/src, not just
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    48
 # the code in js/src/assembler.
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    49
-CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    50
+CXXFLAGS += -DUSE_SYSTEM_MALLOC=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    51
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    52
 ifneq (,$(ENABLE_YARR_JIT)$(ENABLE_TRACEJIT)$(ENABLE_METHODJIT))
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    53
-CXXFLAGS +=  -DENABLE_JIT=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    54
+CXXFLAGS +=  -DENABLE_JIT=1 -DENABLE_ASSEMBLER=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    55
 endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    56
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    57
 INCLUDES +=	-I$(srcdir)/assembler -I$(srcdir)/yarr
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    58
diff --git a/js/src/vm/RegExpObject-inl.h b/js/src/vm/RegExpObject-inl.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    59
index 5f7817d..91108a7 100644
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    60
--- a/js/src/vm/RegExpObject-inl.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    61
+++ b/js/src/vm/RegExpObject-inl.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    62
@@ -327,6 +327,7 @@ RegExpPrivate::create(JSContext *cx, JSString *source, RegExpFlag flags, TokenSt
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    63
     return RetType(self);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    64
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    65
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    66
+#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    67
 /* This function should be deleted once bad Android platforms phase out. See bug 604774. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    68
 inline bool
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    69
 RegExpPrivateCode::isJITRuntimeEnabled(JSContext *cx)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    70
@@ -337,12 +338,12 @@ RegExpPrivateCode::isJITRuntimeEnabled(JSContext *cx)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    71
     return true;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    72
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    73
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    74
+#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    75
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    76
 inline bool
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    77
 RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream *ts,
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    78
                            uintN *parenCount, RegExpFlag flags)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    79
 {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    80
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    81
     /* Parse the pattern. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    82
     ErrorCode yarrError;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    83
     YarrPattern yarrPattern(pattern, bool(flags & IgnoreCaseFlag), bool(flags & MultilineFlag),
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    84
@@ -359,7 +360,7 @@ RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream *
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    85
      * case we have to bytecode compile it.
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    86
      */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    87
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    88
-#ifdef JS_METHODJIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    89
+#if ENABLE_YARR_JIT && defined(JS_METHODJIT)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    90
     if (isJITRuntimeEnabled(cx) && !yarrPattern.m_containsBackreferences) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    91
         if (!cx->compartment->ensureJaegerCompartmentExists(cx))
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    92
             return false;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    93
@@ -371,21 +372,11 @@ RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream *
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    94
     }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    95
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    96
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    97
+#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    98
     codeBlock.setFallBack(true);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    99
+#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   100
     byteCode = byteCompile(yarrPattern, cx->compartment->regExpAllocator).get();
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   101
     return true;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   102
-#else /* !defined(ENABLE_YARR_JIT) */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   103
-    int error = 0;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   104
-    compiled = jsRegExpCompile(pattern.chars(), pattern.length(),
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   105
-                  ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase,
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   106
-                  multiline() ? JSRegExpMultiline : JSRegExpSingleLine,
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   107
-                  parenCount, &error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   108
-    if (error) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   109
-        reportPCREError(cx, error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   110
-        return false;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   111
-    }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   112
-    return true;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   113
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   114
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   115
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   116
 inline bool
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   117
@@ -431,19 +422,12 @@ RegExpPrivateCode::execute(JSContext *cx, const jschar *chars, size_t start, siz
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   118
     else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   119
         result = JSC::Yarr::execute(codeBlock, chars, start, length, output);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   120
 #else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   121
-    result = jsRegExpExecute(cx, compiled, chars, length, start, output, outputCount);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   122
+    result = JSC::Yarr::interpret(byteCode, chars, start, length, output);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   123
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   124
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   125
     if (result == -1)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   126
         return Success_NotFound;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   127
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   128
-#if !ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   129
-    if (result < 0) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   130
-        reportPCREError(cx, result);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   131
-        return Error;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   132
-    }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   133
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   134
-
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   135
     JS_ASSERT(result >= 0);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   136
     return Success;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   137
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   138
diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   139
index f75c6a5..7631dd5 100644
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   140
--- a/js/src/vm/RegExpObject.cpp
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   141
+++ b/js/src/vm/RegExpObject.cpp
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   142
@@ -251,7 +251,6 @@ Class js::RegExpClass = {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   143
     NULL                     /* trace */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   144
 };
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   145
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   146
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   147
 void
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   148
 RegExpPrivateCode::reportYarrError(JSContext *cx, TokenStream *ts, ErrorCode error)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   149
 {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   150
@@ -283,41 +282,6 @@ RegExpPrivateCode::reportYarrError(JSContext *cx, TokenStream *ts, ErrorCode err
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   151
     }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   152
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   153
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   154
-#else /* !ENABLE_YARR_JIT */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   155
-
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   156
-void
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   157
-RegExpPrivateCode::reportPCREError(JSContext *cx, int error)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   158
-{
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   159
-#define REPORT(msg_) \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   160
-    JS_ReportErrorFlagsAndNumberUC(cx, JSREPORT_ERROR, js_GetErrorMessage, NULL, msg_); \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   161
-    return
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   162
-    switch (error) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   163
-      case -2: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   164
-      case 0: JS_NOT_REACHED("Precondition violation: an error must have occurred."); 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   165
-      case 1: REPORT(JSMSG_TRAILING_SLASH);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   166
-      case 2: REPORT(JSMSG_TRAILING_SLASH); 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   167
-      case 3: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   168
-      case 4: REPORT(JSMSG_BAD_QUANTIFIER);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   169
-      case 5: REPORT(JSMSG_BAD_QUANTIFIER);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   170
-      case 6: REPORT(JSMSG_BAD_CLASS_RANGE);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   171
-      case 7: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   172
-      case 8: REPORT(JSMSG_BAD_CLASS_RANGE);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   173
-      case 9: REPORT(JSMSG_BAD_QUANTIFIER);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   174
-      case 10: REPORT(JSMSG_UNMATCHED_RIGHT_PAREN);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   175
-      case 11: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   176
-      case 12: REPORT(JSMSG_UNMATCHED_RIGHT_PAREN);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   177
-      case 13: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   178
-      case 14: REPORT(JSMSG_MISSING_PAREN);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   179
-      case 15: REPORT(JSMSG_BAD_BACKREF);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   180
-      case 16: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   181
-      case 17: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   182
-      default:
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   183
-        JS_NOT_REACHED("Precondition violation: unknown PCRE error code.");
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   184
-    }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   185
-#undef REPORT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   186
-}
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   187
-#endif /* ENABLE_YARR_JIT */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   188
-
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   189
 bool
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   190
 js::ParseRegExpFlags(JSContext *cx, JSString *flagStr, RegExpFlag *flagsOut)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   191
 {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   192
diff --git a/js/src/vm/RegExpObject.h b/js/src/vm/RegExpObject.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   193
index 1449d56..279f3c0 100644
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   194
--- a/js/src/vm/RegExpObject.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   195
+++ b/js/src/vm/RegExpObject.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   196
@@ -49,8 +49,6 @@
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   197
 #include "yarr/Yarr.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   198
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   199
 #include "yarr/YarrJIT.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   200
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   201
-#include "yarr/pcre/pcre.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   202
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   203
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   204
 namespace js {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   205
@@ -153,48 +151,39 @@ ResetRegExpObject(JSContext *cx, AlreadyIncRefed<RegExpPrivate> rep);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   206
 /* Abstracts away the gross |RegExpPrivate| backend details. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   207
 class RegExpPrivateCode
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   208
 {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   209
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   210
     typedef JSC::Yarr::BytecodePattern BytecodePattern;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   211
     typedef JSC::Yarr::ErrorCode ErrorCode;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   212
+    typedef JSC::Yarr::YarrPattern YarrPattern;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   213
+#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   214
     typedef JSC::Yarr::JSGlobalData JSGlobalData;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   215
     typedef JSC::Yarr::YarrCodeBlock YarrCodeBlock;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   216
-    typedef JSC::Yarr::YarrPattern YarrPattern;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   217
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   218
     /* Note: Native code is valid only if |codeBlock.isFallBack() == false|. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   219
     YarrCodeBlock   codeBlock;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   220
-    BytecodePattern *byteCode;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   221
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   222
-    JSRegExp        *compiled;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   223
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   224
+    BytecodePattern *byteCode;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   225
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   226
   public:
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   227
     RegExpPrivateCode()
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   228
       :
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   229
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   230
         codeBlock(),
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   231
-        byteCode(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   232
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   233
-        compiled(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   234
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   235
+        byteCode(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   236
     { }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   237
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   238
     ~RegExpPrivateCode() {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   239
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   240
         codeBlock.release();
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   241
+#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   242
         if (byteCode)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   243
             Foreground::delete_<BytecodePattern>(byteCode);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   244
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   245
-        if (compiled)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   246
-            jsRegExpFree(compiled);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   247
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   248
     }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   249
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   250
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   251
     static inline bool isJITRuntimeEnabled(JSContext *cx);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   252
-    void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   253
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   254
-    void reportPCREError(JSContext *cx, int error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   255
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   256
+    void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   257
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   258
     inline bool compile(JSContext *cx, JSLinearString &pattern, TokenStream *ts, uintN *parenCount,
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   259
                         RegExpFlag flags);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   260
@@ -205,11 +194,7 @@ class RegExpPrivateCode
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   261
                                  int *output, size_t outputCount);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   262
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   263
     static size_t getOutputSize(size_t pairCount) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   264
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   265
         return pairCount * 2;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   266
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   267
-        return pairCount * 3; /* Should be x2, but PCRE has... needs. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   268
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   269
     }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   270
 };
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   271
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   272
diff --git a/js/src/yarr/wtfbridge.h b/js/src/yarr/wtfbridge.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   273
index ac41d08..fb8eb86 100644
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   274
--- a/js/src/yarr/wtfbridge.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   275
+++ b/js/src/yarr/wtfbridge.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   276
@@ -49,9 +49,7 @@
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   277
 #include "jsprvtd.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   278
 #include "vm/String.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   279
 #include "assembler/wtf/Platform.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   280
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   281
 #include "assembler/jit/ExecutableAllocator.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   282
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   283
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   284
 namespace JSC { namespace Yarr {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   285