mozilla-yarr-pcre.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 15 Feb 2012 09:55:51 +0100
changeset 386 7784e72b1a3a
parent 378 dfb824794771
child 391 5425f43ef15c
permissions -rw-r--r--
11.0b2
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
--- a/js/src/Makefile.in
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    16
+++ b/js/src/Makefile.in
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    17
@@ -356,25 +356,30 @@ CPPSRCS += 	checks.cc \
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    18
 # END enclude sources for V8 dtoa
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    19
 #############################################
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    20
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    21
 # For architectures without YARR JIT, PCRE is faster than the YARR
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    22
 # interpreter (bug 684559).
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    23
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    24
 ifeq (,$(filter arm% sparc %86 x86_64,$(TARGET_CPU)))
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    25
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    26
-VPATH +=        $(srcdir)/yarr/pcre \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    27
+VPATH +=        $(srcdir)/assembler \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    28
+                $(srcdir)/assembler/wtf \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    29
+                $(srcdir)/yarr \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    30
 		$(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    31
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    32
 CPPSRCS += \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    33
-                pcre_compile.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    34
-                pcre_exec.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    35
-                pcre_tables.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    36
-                pcre_xclass.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    37
-                pcre_ucp_searchfuncs.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    38
+                Assertions.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    39
+                OSAllocatorOS2.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    40
+                OSAllocatorPosix.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    41
+                OSAllocatorWin.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    42
+                PageBlock.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    43
+                YarrInterpreter.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    44
+                YarrPattern.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    45
+                YarrSyntaxChecker.cpp \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    46
 		$(NULL)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    47
 else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    48
 
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    49
 ###############################################
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    50
 # BEGIN include sources for the Nitro assembler
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    51
 #
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    52
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    53
 ENABLE_YARR_JIT = 1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    54
@@ -916,20 +921,20 @@ endif
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    55
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    56
 ###############################################
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    57
 # BEGIN kludges for the Nitro assembler
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    58
 #
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    59
 
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    60
 # Needed to "configure" it correctly.  Unfortunately these
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    61
 # 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
    62
 # the code in js/src/assembler.
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    63
-CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    64
+CXXFLAGS += -DUSE_SYSTEM_MALLOC=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    65
 
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    66
 ifneq (,$(ENABLE_YARR_JIT)$(ENABLE_METHODJIT))
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    67
-CXXFLAGS +=  -DENABLE_JIT=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    68
+CXXFLAGS +=  -DENABLE_JIT=1 -DENABLE_ASSEMBLER=1
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    69
 endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    70
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    71
 INCLUDES +=	-I$(srcdir)/assembler -I$(srcdir)/yarr
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    72
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    73
 ifdef ENABLE_METHODJIT
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    74
 # Build a standalone test program that exercises the assembler
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    75
 # sources a bit.
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    76
 TESTMAIN_OBJS = \
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    77
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
    78
--- a/js/src/vm/RegExpObject-inl.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    79
+++ b/js/src/vm/RegExpObject-inl.h
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    80
@@ -362,49 +362,50 @@ detail::RegExpPrivate::create(JSContext 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    81
         return RetType(NULL);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    82
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    83
     if (!cacheInsert(cx, sourceAtom, RegExpPrivateCache_ExecCapable, priv))
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    84
         return RetType(NULL);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    85
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    86
     return RetType(priv);
378
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
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    89
+#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    90
 /* 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
    91
 inline bool
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    92
 detail::RegExpPrivateCode::isJITRuntimeEnabled(JSContext *cx)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    93
 {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    94
 #if defined(ANDROID) && defined(JS_METHODJIT)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    95
     return cx->methodJitEnabled;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
    96
 #else
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    97
     return true;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    98
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
    99
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   100
+#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   101
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   102
 inline bool
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   103
 detail::RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream *ts,
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   104
                                    uintN *parenCount, RegExpFlag flags)
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   105
 {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   106
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   107
     /* Parse the pattern. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   108
     ErrorCode yarrError;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   109
     YarrPattern yarrPattern(pattern, bool(flags & IgnoreCaseFlag), bool(flags & MultilineFlag),
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   110
                             &yarrError);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   111
     if (yarrError) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   112
         reportYarrError(cx, ts, yarrError);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   113
         return false;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   114
     }
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   115
     *parenCount = yarrPattern.m_numSubpatterns;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   116
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   117
     /*
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   118
      * The YARR JIT compiler attempts to compile the parsed pattern. If
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   119
      * it cannot, it informs us via |codeBlock.isFallBack()|, in which
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   120
      * case we have to bytecode compile it.
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   121
      */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   122
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   123
-#ifdef JS_METHODJIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   124
+#if ENABLE_YARR_JIT && defined(JS_METHODJIT)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   125
     if (isJITRuntimeEnabled(cx) && !yarrPattern.m_containsBackreferences) {
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   126
         JSC::ExecutableAllocator *execAlloc = cx->threadData()->getOrCreateExecutableAllocator(cx);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   127
         if (!execAlloc) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   128
             js_ReportOutOfMemory(cx);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   129
             return false;
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   130
         }
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   131
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   132
         JSGlobalData globalData(execAlloc);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   133
@@ -415,31 +416,21 @@ detail::RegExpPrivateCode::compile(JSCon
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   134
 #endif
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   135
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   136
     WTF::BumpPointerAllocator *bumpAlloc = cx->threadData()->getOrCreateBumpPointerAllocator(cx);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   137
     if (!bumpAlloc) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   138
         js_ReportOutOfMemory(cx);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   139
         return false;
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   140
     }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   141
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   142
+#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   143
     codeBlock.setFallBack(true);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   144
+#endif
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   145
     byteCode = byteCompile(yarrPattern, bumpAlloc).get();
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   146
     return true;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   147
-#else /* !defined(ENABLE_YARR_JIT) */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   148
-    int error = 0;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   149
-    compiled = jsRegExpCompile(pattern.chars(), pattern.length(),
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   150
-                  ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase,
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   151
-                  multiline() ? JSRegExpMultiline : JSRegExpSingleLine,
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   152
-                  parenCount, &error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   153
-    if (error) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   154
-        reportPCREError(cx, error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   155
-        return false;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   156
-    }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   157
-    return true;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   158
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   159
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   160
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   161
 inline bool
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   162
 detail::RegExpPrivate::compile(JSContext *cx, TokenStream *ts)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   163
 {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   164
     if (!sticky())
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   165
         return code.compile(cx, *source, ts, &parenCount, getFlags());
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   166
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   167
@@ -471,29 +462,22 @@ detail::RegExpPrivateCode::execute(JSCon
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   168
     int result;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   169
 #if ENABLE_YARR_JIT
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   170
     (void) cx; /* Unused. */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   171
     if (codeBlock.isFallBack())
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   172
         result = JSC::Yarr::interpret(byteCode, chars, start, length, output);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   173
     else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   174
         result = JSC::Yarr::execute(codeBlock, chars, start, length, output);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   175
 #else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   176
-    result = jsRegExpExecute(cx, compiled, chars, length, start, output, outputCount);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   177
+    result = JSC::Yarr::interpret(byteCode, chars, start, length, output);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   178
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   179
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   180
     if (result == -1)
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   181
         return RegExpRunStatus_Success_NotFound;
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   182
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   183
-#if !ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   184
-    if (result < 0) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   185
-        reportPCREError(cx, result);
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   186
-        return RegExpRunStatus_Error;
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   187
-    }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   188
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   189
-
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   190
     JS_ASSERT(result >= 0);
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   191
     return RegExpRunStatus_Success;
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   192
 }
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   193
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   194
 inline void
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   195
 detail::RegExpPrivate::incref(JSContext *cx)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   196
 {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   197
     ++refCount;
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   198
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
   199
--- a/js/src/vm/RegExpObject.cpp
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   200
+++ b/js/src/vm/RegExpObject.cpp
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   201
@@ -387,17 +387,16 @@ Class js::RegExpClass = {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   202
     NULL,                    /* checkAccess */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   203
     NULL,                    /* call */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   204
     NULL,                    /* construct */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   205
     js_XDRRegExpObject,
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   206
     NULL,                    /* hasInstance */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   207
     regexp_trace
378
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
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   210
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   211
 void
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   212
 RegExpPrivateCode::reportYarrError(JSContext *cx, TokenStream *ts, ErrorCode error)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   213
 {
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   214
     switch (error) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   215
       case JSC::Yarr::NoError:
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   216
         JS_NOT_REACHED("Called reportYarrError with value for no error");
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   217
         return;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   218
 #define COMPILE_EMSG(__code, __msg)                                                              \
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   219
@@ -419,52 +418,16 @@ RegExpPrivateCode::reportYarrError(JSCon
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   220
       COMPILE_EMSG(QuantifierTooLarge, JSMSG_BAD_QUANTIFIER);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   221
       COMPILE_EMSG(EscapeUnterminated, JSMSG_TRAILING_SLASH);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   222
 #undef COMPILE_EMSG
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   223
       default:
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   224
         JS_NOT_REACHED("Unknown Yarr error code");
378
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
 }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   227
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   228
-#else /* !ENABLE_YARR_JIT */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   229
-
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   230
-void
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   231
-RegExpPrivateCode::reportPCREError(JSContext *cx, int error)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   232
-{
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   233
-#define REPORT(msg_) \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   234
-    JS_ReportErrorFlagsAndNumberUC(cx, JSREPORT_ERROR, js_GetErrorMessage, NULL, msg_); \
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   235
-    return
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   236
-    switch (error) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   237
-      case -2: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   238
-      case 0: JS_NOT_REACHED("Precondition violation: an error must have occurred.");
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   239
-      case 1: REPORT(JSMSG_TRAILING_SLASH);
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   240
-      case 2: REPORT(JSMSG_TRAILING_SLASH);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   241
-      case 3: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   242
-      case 4: REPORT(JSMSG_BAD_QUANTIFIER);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   243
-      case 5: REPORT(JSMSG_BAD_QUANTIFIER);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   244
-      case 6: REPORT(JSMSG_BAD_CLASS_RANGE);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   245
-      case 7: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   246
-      case 8: REPORT(JSMSG_BAD_CLASS_RANGE);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   247
-      case 9: REPORT(JSMSG_BAD_QUANTIFIER);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   248
-      case 10: REPORT(JSMSG_UNMATCHED_RIGHT_PAREN);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   249
-      case 11: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   250
-      case 12: REPORT(JSMSG_UNMATCHED_RIGHT_PAREN);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   251
-      case 13: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   252
-      case 14: REPORT(JSMSG_MISSING_PAREN);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   253
-      case 15: REPORT(JSMSG_BAD_BACKREF);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   254
-      case 16: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   255
-      case 17: REPORT(JSMSG_REGEXP_TOO_COMPLEX);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   256
-      default:
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   257
-        JS_NOT_REACHED("Precondition violation: unknown PCRE error code.");
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   258
-    }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   259
-#undef REPORT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   260
-}
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   261
-
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   262
-#endif /* ENABLE_YARR_JIT */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   263
-
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   264
 bool
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   265
 js::ParseRegExpFlags(JSContext *cx, JSString *flagStr, RegExpFlag *flagsOut)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   266
 {
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   267
     size_t n = flagStr->length();
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   268
     const jschar *s = flagStr->getChars(cx);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   269
     if (!s)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   270
         return false;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   271
 
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   272
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
   273
--- a/js/src/vm/RegExpObject.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   274
+++ b/js/src/vm/RegExpObject.h
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   275
@@ -45,18 +45,16 @@
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   276
 #include "jsobj.h"
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   277
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   278
 #include "js/TemplateLib.h"
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   279
 
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   280
 #include "yarr/Yarr.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   281
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   282
 #include "yarr/YarrJIT.h"
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   283
 #include "yarr/YarrSyntaxChecker.h"
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   284
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   285
-#include "yarr/pcre/pcre.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   286
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   287
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   288
 namespace js {
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   289
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   290
 enum RegExpRunStatus
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   291
 {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   292
     RegExpRunStatus_Error,
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   293
     RegExpRunStatus_Success,
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   294
@@ -235,50 +233,43 @@ class RegExpObjectBuilder
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   295
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   296
 namespace detail {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   297
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   298
 static const jschar GreedyStarChars[] = {'.', '*'};
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   299
 
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   300
 /* Abstracts away the gross |RegExpPrivate| backend details. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   301
 class RegExpPrivateCode
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   302
 {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   303
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   304
     typedef JSC::Yarr::BytecodePattern BytecodePattern;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   305
     typedef JSC::Yarr::ErrorCode ErrorCode;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   306
+    typedef JSC::Yarr::YarrPattern YarrPattern;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   307
+#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   308
     typedef JSC::Yarr::JSGlobalData JSGlobalData;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   309
     typedef JSC::Yarr::YarrCodeBlock YarrCodeBlock;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   310
-    typedef JSC::Yarr::YarrPattern YarrPattern;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   311
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   312
     /* Note: Native code is valid only if |codeBlock.isFallBack() == false|. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   313
     YarrCodeBlock   codeBlock;
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   314
+#endif
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   315
     BytecodePattern *byteCode;
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   316
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   317
-    JSRegExp        *compiled;
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   318
-#endif
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   319
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   320
   public:
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   321
     RegExpPrivateCode()
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   322
       :
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   323
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   324
         codeBlock(),
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   325
+#endif
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   326
         byteCode(NULL)
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   327
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   328
-        compiled(NULL)
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   329
-#endif
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   330
     { }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   331
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   332
     ~RegExpPrivateCode() {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   333
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   334
         codeBlock.release();
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   335
+#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   336
         if (byteCode)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   337
             Foreground::delete_<BytecodePattern>(byteCode);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   338
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   339
-        if (compiled)
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   340
-            jsRegExpFree(compiled);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   341
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   342
     }
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   343
 
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   344
     static bool checkSyntax(JSContext *cx, TokenStream *tokenStream, JSLinearString *source) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   345
 #if ENABLE_YARR_JIT
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   346
         ErrorCode error = JSC::Yarr::checkSyntax(*source);
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   347
         if (error == JSC::Yarr::NoError)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   348
             return true;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   349
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   350
@@ -286,27 +277,21 @@ class RegExpPrivateCode
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   351
         return false;
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   352
 #else
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   353
 # error "Syntax checking not implemented for !ENABLE_YARR_JIT"
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   354
 #endif
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   355
     }
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   356
 
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   357
 #if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   358
     static inline bool isJITRuntimeEnabled(JSContext *cx);
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   359
-    static void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   360
-#else
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   361
-    static void reportPCREError(JSContext *cx, int error);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   362
 #endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   363
+    void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error);
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   364
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   365
     static size_t getOutputSize(size_t pairCount) {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   366
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   367
         return pairCount * 2;
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   368
-#else
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   369
-        return pairCount * 3; /* Should be x2, but PCRE has... needs. */
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   370
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   371
     }
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   372
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   373
     inline bool compile(JSContext *cx, JSLinearString &pattern, TokenStream *ts, uintN *parenCount,
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   374
                         RegExpFlag flags);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   375
 
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   376
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   377
     inline RegExpRunStatus execute(JSContext *cx, const jschar *chars, size_t length, size_t start,
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   378
                                    int *output, size_t outputCount);
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   379
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
   380
--- a/js/src/yarr/wtfbridge.h
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   381
+++ b/js/src/yarr/wtfbridge.h
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   382
@@ -44,19 +44,17 @@
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   383
  * WTF compatibility layer. This file provides various type and data
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   384
  * definitions for use by Yarr.
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   385
  */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   386
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   387
 #include "jsstr.h"
378
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   388
 #include "jsprvtd.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   389
 #include "vm/String.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   390
 #include "assembler/wtf/Platform.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   391
-#if ENABLE_YARR_JIT
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   392
 #include "assembler/jit/ExecutableAllocator.h"
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   393
-#endif
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   394
 
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   395
 namespace JSC { namespace Yarr {
dfb824794771 import upstream patches to fix PPC64
Dinar Valeev
parents:
diff changeset
   396
 
386
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   397
 /*
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   398
  * Basic type definitions.
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   399
  */
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   400
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 378
diff changeset
   401
 typedef jschar UChar;