Changeset 72489 in webkit


Ignore:
Timestamp:
Nov 20, 2010 6:48:09 PM (13 years ago)
Author:
barraclough@apple.com
Message:

YARR JIT should fallback to YARR Interpreter instead of PCRE.
https://bugs.webkit.org/show_bug.cgi?id=46719

Patch by Peter Varga <pvarga@inf.u-szeged.hu> on 2010-11-19
Reviewed by Gavin Barraclough.

Remove the ENABLE_YARR macro and the option of matching regular
expressions with PCRE from JavaScriptCore.

JavaScriptCore:

  • runtime/JSGlobalData.h:
  • runtime/RegExp.cpp:

(JSC::RegExp::compile):
(JSC::RegExp::match):

  • tests/mozilla/expected.html:
  • wtf/Platform.h:
  • yarr/RegexCompiler.cpp:
  • yarr/RegexCompiler.h:
  • yarr/RegexInterpreter.cpp:

(JSC::Yarr::byteCompileRegex):

  • yarr/RegexInterpreter.h:
  • yarr/RegexJIT.cpp:

(JSC::Yarr::jitCompileRegex):

  • yarr/RegexJIT.h:

(JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
(JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
(JSC::Yarr::RegexCodeBlock::getFallback):
(JSC::Yarr::RegexCodeBlock::isFallback):
(JSC::Yarr::RegexCodeBlock::setFallback):
(JSC::Yarr::executeRegex):

  • yarr/RegexParser.h:
  • yarr/RegexPattern.h:

LayoutTests:

  • fast/js/regexp-look-ahead-empty-expected.txt:
  • fast/js/regexp-overflow-expected.txt:
  • fast/js/script-tests/regexp-overflow.js:
  • fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.2/15.10.2.5_Term/S15.10.2.5_A1_T4-expected.txt:
  • fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.2/15.10.2.8_Atom/S15.10.2.8_A2_T1-expected.txt:
  • fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6-expected.txt:
Location:
trunk
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r72484 r72489  
     12010-11-19  Peter Varga  <pvarga@inf.u-szeged.hu>
     2
     3        Reviewed by Gavin Barraclough.
     4
     5        YARR JIT should fallback to YARR Interpreter instead of PCRE.
     6        https://bugs.webkit.org/show_bug.cgi?id=46719
     7
     8        Remove the ENABLE_YARR macro and the option of matching regular
     9        expressions with PCRE from JavaScriptCore.
     10
     11        * runtime/JSGlobalData.h:
     12        * runtime/RegExp.cpp:
     13        (JSC::RegExp::compile):
     14        (JSC::RegExp::match):
     15        * tests/mozilla/expected.html:
     16        * wtf/Platform.h:
     17        * yarr/RegexCompiler.cpp:
     18        * yarr/RegexCompiler.h:
     19        * yarr/RegexInterpreter.cpp:
     20        (JSC::Yarr::byteCompileRegex):
     21        * yarr/RegexInterpreter.h:
     22        * yarr/RegexJIT.cpp:
     23        (JSC::Yarr::jitCompileRegex):
     24        * yarr/RegexJIT.h:
     25        (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
     26        (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
     27        (JSC::Yarr::RegexCodeBlock::getFallback):
     28        (JSC::Yarr::RegexCodeBlock::isFallback):
     29        (JSC::Yarr::RegexCodeBlock::setFallback):
     30        (JSC::Yarr::executeRegex):
     31        * yarr/RegexParser.h:
     32        * yarr/RegexPattern.h:
     33
    1342010-11-20  Kwang Yul Seo  <skyul@company100.net>
    235
  • trunk/JavaScriptCore/runtime/JSGlobalData.h

    r72360 r72489  
    221221        RegExpCache* m_regExpCache;
    222222
    223 #if ENABLE(YARR)
    224223        BumpPointerAllocator m_regexAllocator;
    225 #endif
    226224
    227225#if ENABLE(REGEXP_TRACING)
  • trunk/JavaScriptCore/runtime/RegExp.cpp

    r72207 r72489  
    2929#include <wtf/OwnArrayPtr.h>
    3030
    31 
    32 #if ENABLE(YARR)
    33 
    3431#include "yarr/RegexCompiler.h"
    3532#if ENABLE(YARR_JIT)
     
    3936#endif
    4037
    41 #else
    42 
    43 #include <pcre/pcre.h>
    44 
    45 #endif
    46 
    4738namespace JSC {
    4839
     
    5041#if ENABLE(YARR_JIT)
    5142    Yarr::RegexCodeBlock m_regExpJITCode;
    52 #elif ENABLE(YARR)
     43#else
    5344    OwnPtr<Yarr::BytecodePattern> m_regExpBytecode;
    54 #else
    55     JSRegExp* m_regExp;
    56 #endif
    57 
    58 #if !ENABLE(YARR)
    59     ~RegExpRepresentation()
    60     {
    61         jsRegExpFree(m_regExp);
    62     }
    6345#endif
    6446};
     
    10183}
    10284
    103 #if ENABLE(YARR)
    104 
    10585void RegExp::compile(JSGlobalData* globalData)
    10686{
    10787#if ENABLE(YARR_JIT)
    108     Yarr::jitCompileRegex(globalData, m_representation->m_regExpJITCode, m_pattern, m_numSubpatterns, m_constructionError, ignoreCase(), multiline());
     88    Yarr::jitCompileRegex(globalData, m_representation->m_regExpJITCode, m_pattern, m_numSubpatterns, m_constructionError, &globalData->m_regexAllocator, ignoreCase(), multiline());
    10989#else
    11090    m_representation->m_regExpBytecode = Yarr::byteCompileRegex(m_pattern, m_numSubpatterns, m_constructionError, &globalData->m_regexAllocator, ignoreCase(), multiline());
     
    129109    if (m_representation->m_regExpBytecode) {
    130110#endif
    131         int offsetVectorSize = (m_numSubpatterns + 1) * 3; // FIXME: should be 2 - but adding temporary fallback to pcre.
     111        int offsetVectorSize = (m_numSubpatterns + 1) * 2;
    132112        int* offsetVector;
    133113        Vector<int, 32> nonReturnedOvector;
     
    148128
    149129#if ENABLE(YARR_JIT)
    150         int result = Yarr::executeRegex(m_representation->m_regExpJITCode, s.characters(), startOffset, s.length(), offsetVector, offsetVectorSize);
     130        int result = Yarr::executeRegex(m_representation->m_regExpJITCode, s.characters(), startOffset, s.length(), offsetVector);
    151131#else
    152132        int result = Yarr::interpretRegex(m_representation->m_regExpBytecode.get(), s.characters(), startOffset, s.length(), offsetVector);
    153133#endif
    154134
    155         if (result < 0) {
    156 #ifndef NDEBUG
    157             // TODO: define up a symbol, rather than magic -1
    158             if (result != -1)
    159                 fprintf(stderr, "jsRegExpExecute failed with result %d\n", result);
    160 #endif
    161         }
     135        ASSERT(result >= -1);;
    162136       
    163137#if ENABLE(REGEXP_TRACING)
     
    171145    return -1;
    172146}
    173 
    174 #else
    175 
    176 void RegExp::compile(JSGlobalData*)
    177 {
    178     m_representation->m_regExp = 0;
    179     JSRegExpIgnoreCaseOption ignoreCaseOption = ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase;
    180     JSRegExpMultilineOption multilineOption = multiline() ? JSRegExpMultiline : JSRegExpSingleLine;
    181     m_representation->m_regExp = jsRegExpCompile(reinterpret_cast<const UChar*>(m_pattern.characters()), m_pattern.length(), ignoreCaseOption, multilineOption, &m_numSubpatterns, &m_constructionError);
    182 }
    183 
    184 int RegExp::match(const UString& s, int startOffset, Vector<int, 32>* ovector)
    185 {
    186 #if ENABLE(REGEXP_TRACING)
    187     m_rtMatchCallCount++;
    188 #endif
    189    
    190     if (startOffset < 0)
    191         startOffset = 0;
    192     if (ovector)
    193         ovector->clear();
    194 
    195     if (static_cast<unsigned>(startOffset) > s.length() || s.isNull())
    196         return -1;
    197 
    198     if (m_representation->m_regExp) {
    199         // Set up the offset vector for the result.
    200         // First 2/3 used for result, the last third used by PCRE.
    201         int* offsetVector;
    202         int offsetVectorSize;
    203         int fixedSizeOffsetVector[3];
    204         if (!ovector) {
    205             offsetVectorSize = 3;
    206             offsetVector = fixedSizeOffsetVector;
    207         } else {
    208             offsetVectorSize = (m_numSubpatterns + 1) * 3;
    209             ovector->resize(offsetVectorSize);
    210             offsetVector = ovector->data();
    211         }
    212 
    213         int numMatches = jsRegExpExecute(m_representation->m_regExp, reinterpret_cast<const UChar*>(s.characters()), s.length(), startOffset, offsetVector, offsetVectorSize);
    214    
    215         if (numMatches < 0) {
    216 #ifndef NDEBUG
    217             if (numMatches != JSRegExpErrorNoMatch)
    218                 fprintf(stderr, "jsRegExpExecute failed with result %d\n", numMatches);
    219 #endif
    220             if (ovector)
    221                 ovector->clear();
    222             return -1;
    223         }
    224 
    225 #if ENABLE(REGEXP_TRACING)
    226         m_rtMatchFoundCount++;
    227 #endif
    228        
    229         return offsetVector[0];
    230     }
    231 
    232     return -1;
    233 }
    234    
    235 #endif
    236147
    237148#if ENABLE(REGEXP_TRACING)
  • trunk/JavaScriptCore/tests/mozilla/expected.html

    r72207 r72489  
    88Test List: All tests<br>
    99Skip List: ecma/Date/15.9.2.1.js, ecma/Date/15.9.2.2-1.js, ecma/Date/15.9.2.2-2.js, ecma/Date/15.9.2.2-3.js, ecma/Date/15.9.2.2-4.js, ecma/Date/15.9.2.2-5.js, ecma/Date/15.9.2.2-6.js, ecma_3/Date/15.9.5.7.js<br>
    10 1127 test(s) selected, 1119 test(s) completed, 49 failures reported (4.37% failed)<br>
    11 Engine command line: "/Volumes/Big/ggaren/build/Debug/jsc" <br>
    12 OS type: Darwin il0301a-dhcp53.apple.com 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386<br>
    13 Testcase execution time: 3 minutes, 18 seconds.<br>
    14 Tests completed on Tue Apr 21 12:56:28 2009.<br><br>
     101127 test(s) selected, 1119 test(s) completed, 46 failures reported (4.11% failed)<br>
     11Engine command line: "/home/stampho/webkit/WebKitBuild/Release/JavaScriptCore/jsc" <br>
     12OS type: Linux euclides 2.6.35-gentoo-r5 #1 SMP Tue Aug 31 13:19:25 CEST 2010 i686 Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz GenuineIntel GNU/Linux<br>
     13Testcase execution time: 16 seconds.<br>
     14Tests completed on Fri Oct 15 00:29:31 2010.<br><br>
    1515[ <a href='#fail_detail'>Failure Details</a> | <a href='#retest_list'>Retest List</a> | <a href='menu.html'>Test Selection Page</a> ]<br>
    1616<hr>
     
    2323- "-0x123456789abcde8" = NaN FAILED! expected: 81985529216486880<br>
    2424- "-0x123456789abcde8" = NaN FAILED! expected: 81985529216486880<br>
    25 -"\u20001234\u2001" = NaN FAILED! expected: -1234<br>
    2625</tt><br>
    2726<a name='failure2'></a><dd><b>Testcase <a target='other_window' href='./ecma_2/Exceptions/function-001.js'>ecma_2/Exceptions/function-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
     
    3938FAILED!: [reported from test()] <br>
    4039</tt><br>
    41 <a name='failure4'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/15.10.2-1.js'>ecma_3/RegExp/15.10.2-1.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
     40<a name='failure4'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Statements/regress-194364.js'>ecma_3/Statements/regress-194364.js</a> failed</b> <br>
    4241 [ <a href='#failure3'>Previous Failure</a> | <a href='#failure5'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    43 <tt>STATUS: RegExp conformance test<br>
    44 Failure messages were:<br>
    45 FAILED!: [reported from test()] Section 7 of test -<br>
    46 FAILED!: [reported from test()] regexp = /(z)((a+)?(b+)?(c))*/<br>
    47 FAILED!: [reported from test()] string = 'zaacbbbcac'<br>
    48 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    49 FAILED!: [reported from test()] Expect: ["zaacbbbcac", "z", "ac", "a", , "c"]<br>
    50 FAILED!: [reported from test()] Actual: ["zaacbbbcac", "z", "ac", "a", "bbb", "c"]<br>
    51 FAILED!: [reported from test()] <br>
    52 FAILED!: [reported from test()] Section 8 of test -<br>
    53 FAILED!: [reported from test()] regexp = /(a*)*/<br>
    54 FAILED!: [reported from test()] string = 'b'<br>
    55 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    56 FAILED!: [reported from test()] Expect: ["", , ]<br>
    57 FAILED!: [reported from test()] Actual: ["", ""]<br>
    58 FAILED!: [reported from test()] <br>
    59 FAILED!: [reported from test()] Section 12 of test -<br>
    60 FAILED!: [reported from test()] regexp = /(.*?)a(?!(a+)b\2c)\2(.*)/<br>
    61 FAILED!: [reported from test()] string = 'baaabaac'<br>
    62 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    63 FAILED!: [reported from test()] Expect: ["baaabaac", "ba", , "abaac"]<br>
    64 FAILED!: [reported from test()] Actual: ["baaabaac", "ba", "aa", "abaac"]<br>
    65 FAILED!: [reported from test()] <br>
    66 </tt><br>
    67 <a name='failure5'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-001.js'>ecma_3/RegExp/perlstress-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
     42<tt>Expected exit code 0, got 3<br>
     43Testcase terminated with signal 0<br>
     44Complete testcase output was:<br>
     45Testcase produced no output!</tt><br>
     46<a name='failure5'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-001.js'>ecma_3/Unicode/uc-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23610' target='other_window'>Bug Number 23610</a><br>
    6847 [ <a href='#failure4'>Previous Failure</a> | <a href='#failure6'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    69 <tt>STATUS: Testing regular expression edge cases<br>
    70 Failure messages were:<br>
    71 FAILED!: [reported from test()] Section 218 of test -<br>
    72 FAILED!: [reported from test()] regexp = /((foo)|(bar))*/<br>
    73 FAILED!: [reported from test()] string = 'foobar'<br>
    74 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    75 FAILED!: [reported from test()] Expect: ["foobar", "bar", , "bar"]<br>
    76 FAILED!: [reported from test()] Actual: ["foobar", "bar", "foo", "bar"]<br>
    77 FAILED!: [reported from test()] <br>
    78 FAILED!: [reported from test()] Section 234 of test -<br>
    79 FAILED!: [reported from test()] regexp = /(?:(f)(o)(o)|(b)(a)(r))*/<br>
    80 FAILED!: [reported from test()] string = 'foobar'<br>
    81 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    82 FAILED!: [reported from test()] Expect: ["foobar", , , , "b", "a", "r"]<br>
    83 FAILED!: [reported from test()] Actual: ["foobar", "f", "o", "o", "b", "a", "r"]<br>
    84 FAILED!: [reported from test()] <br>
    85 FAILED!: [reported from test()] Section 241 of test -<br>
    86 FAILED!: [reported from test()] regexp = /^(?:b|a(?=(.)))*\1/<br>
    87 FAILED!: [reported from test()] string = 'abc'<br>
    88 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    89 FAILED!: [reported from test()] Expect: ["ab", , ]<br>
    90 FAILED!: [reported from test()] Actual: ["ab", "b"]<br>
    91 FAILED!: [reported from test()] <br>
    92 FAILED!: [reported from test()] Section 412 of test -<br>
    93 FAILED!: [reported from test()] regexp = /^(a(b)?)+$/<br>
    94 FAILED!: [reported from test()] string = 'aba'<br>
    95 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    96 FAILED!: [reported from test()] Expect: ["aba", "a", , ]<br>
    97 FAILED!: [reported from test()] Actual: ["aba", "a", "b"]<br>
    98 FAILED!: [reported from test()] <br>
    99 FAILED!: [reported from test()] Section 413 of test -<br>
    100 FAILED!: [reported from test()] regexp = /^(aa(bb)?)+$/<br>
    101 FAILED!: [reported from test()] string = 'aabbaa'<br>
    102 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    103 FAILED!: [reported from test()] Expect: ["aabbaa", "aa", , ]<br>
    104 FAILED!: [reported from test()] Actual: ["aabbaa", "aa", "bb"]<br>
    105 FAILED!: [reported from test()] <br>
    106 </tt><br>
    107 <a name='failure6'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-209919.js'>ecma_3/RegExp/regress-209919.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=209919' target='other_window'>Bug Number 209919</a><br>
    108  [ <a href='#failure5'>Previous Failure</a> | <a href='#failure7'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    109 <tt>STATUS: Testing regexp submatches with quantifiers<br>
    110 Failure messages were:<br>
    111 FAILED!: [reported from test()] Section 1 of test -<br>
    112 FAILED!: [reported from test()] regexp = /(a|b*)*/<br>
    113 FAILED!: [reported from test()] string = 'a'<br>
    114 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    115 FAILED!: [reported from test()] Expect: ["a", "a"]<br>
    116 FAILED!: [reported from test()] Actual: ["a", ""]<br>
    117 FAILED!: [reported from test()] <br>
    118 FAILED!: [reported from test()] Section 3 of test -<br>
    119 FAILED!: [reported from test()] regexp = /(b*)*/<br>
    120 FAILED!: [reported from test()] string = 'a'<br>
    121 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    122 FAILED!: [reported from test()] Expect: ["", , ]<br>
    123 FAILED!: [reported from test()] Actual: ["", ""]<br>
    124 FAILED!: [reported from test()] <br>
    125 FAILED!: [reported from test()] Section 5 of test -<br>
    126 FAILED!: [reported from test()] regexp = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/<br>
    127 FAILED!: [reported from test()] string = '100.00'<br>
    128 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    129 FAILED!: [reported from test()] Expect: ["100.00", "00", , ]<br>
    130 FAILED!: [reported from test()] Actual: ["100.00", "", , ]<br>
    131 FAILED!: [reported from test()] <br>
    132 FAILED!: [reported from test()] Section 6 of test -<br>
    133 FAILED!: [reported from test()] regexp = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/<br>
    134 FAILED!: [reported from test()] string = '100,00'<br>
    135 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    136 FAILED!: [reported from test()] Expect: ["100,00", "100", ",00"]<br>
    137 FAILED!: [reported from test()] Actual: ["100,00", "", ",00"]<br>
    138 FAILED!: [reported from test()] <br>
    139 FAILED!: [reported from test()] Section 7 of test -<br>
    140 FAILED!: [reported from test()] regexp = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/<br>
    141 FAILED!: [reported from test()] string = '1.000,00'<br>
    142 FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br>
    143 FAILED!: [reported from test()] Expect: ["1.000,00", "000", ",00"]<br>
    144 FAILED!: [reported from test()] Actual: ["1.000,00", "", ",00"]<br>
    145 FAILED!: [reported from test()] <br>
    146 </tt><br>
    147 <a name='failure7'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Statements/regress-194364.js'>ecma_3/Statements/regress-194364.js</a> failed</b> <br>
    148  [ <a href='#failure6'>Previous Failure</a> | <a href='#failure8'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    149 <tt>Expected exit code 0, got 3<br>
    150 Testcase terminated with signal 0<br>
    151 Complete testcase output was:<br>
    152 Testcase produced no output!</tt><br>
    153 <a name='failure8'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-001.js'>ecma_3/Unicode/uc-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23610' target='other_window'>Bug Number 23610</a><br>
    154  [ <a href='#failure7'>Previous Failure</a> | <a href='#failure9'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    15548<tt>STATUS: Unicode format-control character (Category Cf) test.<br>
    15649Failure messages were:<br>
     
    15952FAILED!: [reported from test()] <br>
    16053</tt><br>
    161 <a name='failure9'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Objects/toString-001.js'>js1_2/Objects/toString-001.js</a> failed</b> <br>
    162  [ <a href='#failure8'>Previous Failure</a> | <a href='#failure10'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     54<a name='failure6'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Objects/toString-001.js'>js1_2/Objects/toString-001.js</a> failed</b> <br>
     55 [ <a href='#failure5'>Previous Failure</a> | <a href='#failure7'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    16356<tt><br>
    16457Failure messages were:<br>
     
    16760o = { name:"object", length:0, value:"hello" }; o.toString() = false FAILED! expected: true<br>
    16861</tt><br>
    169 <a name='failure10'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Function_object.js'>js1_2/function/Function_object.js</a> failed</b> <br>
    170  [ <a href='#failure9'>Previous Failure</a> | <a href='#failure11'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     62<a name='failure7'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Function_object.js'>js1_2/function/Function_object.js</a> failed</b> <br>
     63 [ <a href='#failure6'>Previous Failure</a> | <a href='#failure8'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    17164<tt><br>
    17265Failure messages were:<br>
     
    17467} FAILED! expected: <br>
    17568</tt><br>
    176 <a name='failure11'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/function-001-n.js'>js1_2/function/function-001-n.js</a> failed</b> <br>
    177  [ <a href='#failure10'>Previous Failure</a> | <a href='#failure12'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     69<a name='failure8'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/function-001-n.js'>js1_2/function/function-001-n.js</a> failed</b> <br>
     70 [ <a href='#failure7'>Previous Failure</a> | <a href='#failure9'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    17871<tt>Expected exit code 3, got 0<br>
    17972Testcase terminated with signal 0<br>
     
    18275eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
    18376</tt><br>
    184 <a name='failure12'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br>
    185  [ <a href='#failure11'>Previous Failure</a> | <a href='#failure13'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    186 <tt><br>
    187 Failure messages were:<br>
    188 } FAILED! expected: <br>
    189 } FAILED! expected: <br>
    190 } FAILED! expected: <br>
    191 } FAILED! expected: <br>
    192 } FAILED! expected: <br>
    193 </tt><br>
    194 <a name='failure13'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-2.js'>js1_2/function/tostring-2.js</a> failed</b> <br>
    195  [ <a href='#failure12'>Previous Failure</a> | <a href='#failure14'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    196 <tt><br>
    197 Failure messages were:<br>
    198 } FAILED! expected: <br>
    199 } FAILED! expected: <br>
    200 } FAILED! expected: <br>
    201 } FAILED! expected: <br>
    202 } FAILED! expected: <br>
    203 } FAILED! expected: <br>
    204 } FAILED! expected: <br>
    205 } FAILED! expected: <br>
    206 } FAILED! expected: <br>
    207 </tt><br>
    208 <a name='failure14'></a><dd><b>Testcase <a target='other_window' href='./js1_2/operator/equality.js'>js1_2/operator/equality.js</a> failed</b> <br>
    209  [ <a href='#failure13'>Previous Failure</a> | <a href='#failure15'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     77<a name='failure9'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br>
     78 [ <a href='#failure8'>Previous Failure</a> | <a href='#failure10'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     79<tt><br>
     80Failure messages were:<br>
     81} FAILED! expected: <br>
     82} FAILED! expected: <br>
     83} FAILED! expected: <br>
     84} FAILED! expected: <br>
     85} FAILED! expected: <br>
     86</tt><br>
     87<a name='failure10'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-2.js'>js1_2/function/tostring-2.js</a> failed</b> <br>
     88 [ <a href='#failure9'>Previous Failure</a> | <a href='#failure11'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     89<tt><br>
     90Failure messages were:<br>
     91} FAILED! expected: <br>
     92} FAILED! expected: <br>
     93} FAILED! expected: <br>
     94} FAILED! expected: <br>
     95} FAILED! expected: <br>
     96} FAILED! expected: <br>
     97} FAILED! expected: <br>
     98} FAILED! expected: <br>
     99} FAILED! expected: <br>
     100</tt><br>
     101<a name='failure11'></a><dd><b>Testcase <a target='other_window' href='./js1_2/operator/equality.js'>js1_2/operator/equality.js</a> failed</b> <br>
     102 [ <a href='#failure10'>Previous Failure</a> | <a href='#failure12'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    210103<tt><br>
    211104Failure messages were:<br>
     
    213106('x' == new String('x'))                  = true FAILED! expected: false<br>
    214107</tt><br>
    215 <a name='failure15'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastIndex.js'>js1_2/regexp/RegExp_lastIndex.js</a> failed</b> <br>
    216  [ <a href='#failure14'>Previous Failure</a> | <a href='#failure16'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     108<a name='failure12'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastIndex.js'>js1_2/regexp/RegExp_lastIndex.js</a> failed</b> <br>
     109 [ <a href='#failure11'>Previous Failure</a> | <a href='#failure13'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    217110<tt><br>
    218111Failure messages were:<br>
     
    220113re.exec('xyabcdef') = xy FAILED! expected: ["xy"]<br>
    221114</tt><br>
    222 <a name='failure16'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.js</a> failed</b> <br>
    223  [ <a href='#failure15'>Previous Failure</a> | <a href='#failure17'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     115<a name='failure13'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.js</a> failed</b> <br>
     116 [ <a href='#failure12'>Previous Failure</a> | <a href='#failure14'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    224117<tt><br>
    225118Failure messages were:<br>
     
    230123(multiline == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24<br>
    231124</tt><br>
    232 <a name='failure17'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.js</a> failed</b> <br>
    233  [ <a href='#failure16'>Previous Failure</a> | <a href='#failure18'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     125<a name='failure14'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.js</a> failed</b> <br>
     126 [ <a href='#failure13'>Previous Failure</a> | <a href='#failure15'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    234127<tt><br>
    235128Failure messages were:<br>
     
    240133(['$*'] == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24<br>
    241134</tt><br>
    242 <a name='failure18'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/beginLine.js'>js1_2/regexp/beginLine.js</a> failed</b> <br>
    243  [ <a href='#failure17'>Previous Failure</a> | <a href='#failure19'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     135<a name='failure15'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/beginLine.js'>js1_2/regexp/beginLine.js</a> failed</b> <br>
     136 [ <a href='#failure14'>Previous Failure</a> | <a href='#failure16'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    244137<tt><br>
    245138Failure messages were:<br>
    246139123xyz'.match(new RegExp('^\d+')) = null FAILED! expected: 123<br>
    247140</tt><br>
    248 <a name='failure19'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
    249  [ <a href='#failure18'>Previous Failure</a> | <a href='#failure20'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     141<a name='failure16'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
     142 [ <a href='#failure15'>Previous Failure</a> | <a href='#failure17'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    250143<tt><br>
    251144Failure messages were:<br>
    252145xyz'.match(new RegExp('\d+$')) = null FAILED! expected: 890<br>
    253146</tt><br>
    254 <a name='failure20'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/string_split.js'>js1_2/regexp/string_split.js</a> failed</b> <br>
    255  [ <a href='#failure19'>Previous Failure</a> | <a href='#failure21'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     147<a name='failure17'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/string_split.js'>js1_2/regexp/string_split.js</a> failed</b> <br>
     148 [ <a href='#failure16'>Previous Failure</a> | <a href='#failure18'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    256149<tt><br>
    257150Failure messages were:<br>
     
    261154'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br>
    262155</tt><br>
    263 <a name='failure21'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/boolean-001.js'>js1_2/version120/boolean-001.js</a> failed</b> <br>
    264  [ <a href='#failure20'>Previous Failure</a> | <a href='#failure22'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     156<a name='failure18'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/boolean-001.js'>js1_2/version120/boolean-001.js</a> failed</b> <br>
     157 [ <a href='#failure17'>Previous Failure</a> | <a href='#failure19'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    265158<tt><br>
    266159Failure messages were:<br>
    267160new Boolean(false) = true FAILED! expected: false<br>
    268161</tt><br>
    269 <a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/regress-99663.js'>js1_2/version120/regress-99663.js</a> failed</b> <br>
    270  [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     162<a name='failure19'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/regress-99663.js'>js1_2/version120/regress-99663.js</a> failed</b> <br>
     163 [ <a href='#failure18'>Previous Failure</a> | <a href='#failure20'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    271164<tt>STATUS: Regression test for Bugzilla bug 99663<br>
    272165Failure messages were:<br>
     
    275168Section 3 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br>
    276169</tt><br>
    277 <a name='failure23'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/function-001-n.js'>js1_3/Script/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
    278  [ <a href='#failure22'>Previous Failure</a> | <a href='#failure24'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     170<a name='failure20'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/function-001-n.js'>js1_3/Script/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
     171 [ <a href='#failure19'>Previous Failure</a> | <a href='#failure21'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    279172<tt>Expected exit code 3, got 0<br>
    280173Testcase terminated with signal 0<br>
     
    284177eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
    285178</tt><br>
    286 <a name='failure24'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/script-001.js'>js1_3/Script/script-001.js</a> failed</b> <br>
    287  [ <a href='#failure23'>Previous Failure</a> | <a href='#failure25'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     179<a name='failure21'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/script-001.js'>js1_3/Script/script-001.js</a> failed</b> <br>
     180 [ <a href='#failure20'>Previous Failure</a> | <a href='#failure22'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    288181<tt>Expected exit code 0, got 3<br>
    289182Testcase terminated with signal 0<br>
     
    291184script-001 NativeScript<br>
    292185</tt><br>
    293 <a name='failure25'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
    294  [ <a href='#failure24'>Previous Failure</a> | <a href='#failure26'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     186<a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
     187 [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    295188<tt>Expected exit code 3, got 0<br>
    296189Testcase terminated with signal 0<br>
     
    300193eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
    301194</tt><br>
    302 <a name='failure26'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br>
     195<a name='failure23'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br>
     196 [ <a href='#failure22'>Previous Failure</a> | <a href='#failure24'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     197<tt>Expected exit code 0, got 3<br>
     198Testcase terminated with signal 0<br>
     199Complete testcase output was:<br>
     200Testcase produced no output!</tt><br>
     201<a name='failure24'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br>
     202 [ <a href='#failure23'>Previous Failure</a> | <a href='#failure25'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     203<tt>Expected exit code 0, got 3<br>
     204Testcase terminated with signal 0<br>
     205Complete testcase output was:<br>
     206Testcase produced no output!</tt><br>
     207<a name='failure25'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br>
     208 [ <a href='#failure24'>Previous Failure</a> | <a href='#failure26'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     209<tt>Expected exit code 0, got 3<br>
     210Testcase terminated with signal 0<br>
     211Complete testcase output was:<br>
     212Testcase produced no output!</tt><br>
     213<a name='failure26'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br>
    303214 [ <a href='#failure25'>Previous Failure</a> | <a href='#failure27'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    304215<tt>Expected exit code 0, got 3<br>
     
    306217Complete testcase output was:<br>
    307218Testcase produced no output!</tt><br>
    308 <a name='failure27'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br>
     219<a name='failure27'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
    309220 [ <a href='#failure26'>Previous Failure</a> | <a href='#failure28'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    310 <tt>Expected exit code 0, got 3<br>
    311 Testcase terminated with signal 0<br>
    312 Complete testcase output was:<br>
    313 Testcase produced no output!</tt><br>
    314 <a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br>
    315  [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    316 <tt>Expected exit code 0, got 3<br>
    317 Testcase terminated with signal 0<br>
    318 Complete testcase output was:<br>
    319 Testcase produced no output!</tt><br>
    320 <a name='failure29'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br>
    321  [ <a href='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    322 <tt>Expected exit code 0, got 3<br>
    323 Testcase terminated with signal 0<br>
    324 Complete testcase output was:<br>
    325 Testcase produced no output!</tt><br>
    326 <a name='failure30'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
    327  [ <a href='#failure29'>Previous Failure</a> | <a href='#failure31'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    328221<tt>Expected exit code 0, got 3<br>
    329222Testcase terminated with signal 0<br>
     
    332225STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
    333226</tt><br>
    334 <a name='failure31'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
     227<a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
     228 [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     229<tt>Expected exit code 0, got 3<br>
     230Testcase terminated with signal 0<br>
     231Complete testcase output was:<br>
     232Testcase produced no output!</tt><br>
     233<a name='failure29'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br>
     234 [ <a href='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     235<tt>Expected exit code 0, got 3<br>
     236Testcase terminated with signal 0<br>
     237Complete testcase output was:<br>
     238Testcase produced no output!</tt><br>
     239<a name='failure30'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br>
     240 [ <a href='#failure29'>Previous Failure</a> | <a href='#failure31'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     241<tt>Expected exit code 0, got 3<br>
     242Testcase terminated with signal 0<br>
     243Complete testcase output was:<br>
     244Testcase produced no output!</tt><br>
     245<a name='failure31'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br>
    335246 [ <a href='#failure30'>Previous Failure</a> | <a href='#failure32'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    336247<tt>Expected exit code 0, got 3<br>
     
    338249Complete testcase output was:<br>
    339250Testcase produced no output!</tt><br>
    340 <a name='failure32'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br>
     251<a name='failure32'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
    341252 [ <a href='#failure31'>Previous Failure</a> | <a href='#failure33'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    342253<tt>Expected exit code 0, got 3<br>
     
    344255Complete testcase output was:<br>
    345256Testcase produced no output!</tt><br>
    346 <a name='failure33'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br>
     257<a name='failure33'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
    347258 [ <a href='#failure32'>Previous Failure</a> | <a href='#failure34'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    348259<tt>Expected exit code 0, got 3<br>
     
    350261Complete testcase output was:<br>
    351262Testcase produced no output!</tt><br>
    352 <a name='failure34'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br>
     263<a name='failure34'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
    353264 [ <a href='#failure33'>Previous Failure</a> | <a href='#failure35'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    354265<tt>Expected exit code 0, got 3<br>
     
    356267Complete testcase output was:<br>
    357268Testcase produced no output!</tt><br>
    358 <a name='failure35'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
     269<a name='failure35'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
    359270 [ <a href='#failure34'>Previous Failure</a> | <a href='#failure36'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    360 <tt>Expected exit code 0, got 3<br>
    361 Testcase terminated with signal 0<br>
    362 Complete testcase output was:<br>
    363 Testcase produced no output!</tt><br>
    364 <a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
    365  [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    366 <tt>Expected exit code 0, got 3<br>
    367 Testcase terminated with signal 0<br>
    368 Complete testcase output was:<br>
    369 Testcase produced no output!</tt><br>
    370 <a name='failure37'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
    371  [ <a href='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    372 <tt>Expected exit code 0, got 3<br>
    373 Testcase terminated with signal 0<br>
    374 Complete testcase output was:<br>
    375 Testcase produced no output!</tt><br>
    376 <a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
    377  [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    378271<tt>Expected exit code 0, got 3<br>
    379272Testcase terminated with signal 0<br>
     
    382275STATUS: Testing that we don't crash on obj.toSource()<br>
    383276</tt><br>
    384 <a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br>
    385  [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     277<a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br>
     278 [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    386279<tt>STATUS: Reassignment to a const is NOT an error per ECMA<br>
    387280Failure messages were:<br>
     
    393286FAILED!: [reported from test()] <br>
    394287</tt><br>
    395 <a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br>
     288<a name='failure37'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br>
     289 [ <a href='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     290<tt>Expected exit code 0, got 3<br>
     291Testcase terminated with signal 0<br>
     292Complete testcase output was:<br>
     293Testcase produced no output!</tt><br>
     294<a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br>
     295 [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     296<tt>Expected exit code 0, got 3<br>
     297Testcase terminated with signal 0<br>
     298Complete testcase output was:<br>
     299Testcase produced no output!</tt><br>
     300<a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
     301 [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     302<tt>Expected exit code 0, got 3<br>
     303Testcase terminated with signal 0<br>
     304Complete testcase output was:<br>
     305Testcase produced no output!</tt><br>
     306<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
    396307 [ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    397 <tt>Expected exit code 0, got 3<br>
    398 Testcase terminated with signal 0<br>
    399 Complete testcase output was:<br>
    400 Testcase produced no output!</tt><br>
    401 <a name='failure41'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br>
    402  [ <a href='#failure40'>Previous Failure</a> | <a href='#failure42'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    403 <tt>Expected exit code 0, got 3<br>
    404 Testcase terminated with signal 0<br>
    405 Complete testcase output was:<br>
    406 Testcase produced no output!</tt><br>
    407 <a name='failure42'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
    408  [ <a href='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    409 <tt>Expected exit code 0, got 3<br>
    410 Testcase terminated with signal 0<br>
    411 Complete testcase output was:<br>
    412 Testcase produced no output!</tt><br>
    413 <a name='failure43'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
    414  [ <a href='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    415308<tt>STATUS: Don't crash on extraneous arguments to str.match(), etc.<br>
    416309Failure messages were:<br>
     
    462355FAILED!: [reported from test()] <br>
    463356</tt><br>
    464 <a name='failure44'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br>
    465  [ <a href='#failure43'>Previous Failure</a> | <a href='#failure45'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    466 <tt>Expected exit code 0, got 3<br>
    467 Testcase terminated with signal 0<br>
    468 Complete testcase output was:<br>
    469 Testcase produced no output!</tt><br>
    470 <a name='failure45'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
    471  [ <a href='#failure44'>Previous Failure</a> | <a href='#failure46'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     357<a name='failure41'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br>
     358 [ <a href='#failure40'>Previous Failure</a> | <a href='#failure42'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     359<tt>Expected exit code 0, got 3<br>
     360Testcase terminated with signal 0<br>
     361Complete testcase output was:<br>
     362Testcase produced no output!</tt><br>
     363<a name='failure42'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
     364 [ <a href='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    472365<tt>STATUS: Testing scope after changing obj.__proto__<br>
    473366Failure messages were:<br>
     
    480373FAILED!: [reported from test()] <br>
    481374</tt><br>
    482 <a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br>
    483  [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     375<a name='failure43'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br>
     376 [ <a href='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    484377<tt>STATUS: E4X should be enabled even when e4x=1 not specified<br>
    485378Failure messages were:<br>
     
    491384FAILED!: <br>
    492385</tt><br>
    493 <a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br>
    494  [ <a href='#failure46'>Previous Failure</a> | <a href='#failure48'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    495 <tt>Expected exit code 0, got 3<br>
    496 Testcase terminated with signal 0<br>
    497 Complete testcase output was:<br>
    498 Testcase produced no output!</tt><br>
    499 <a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br>
    500  [ <a href='#failure47'>Previous Failure</a> | <a href='#failure49'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    501 <tt>Expected exit code 0, got 3<br>
    502 Testcase terminated with signal 0<br>
    503 Complete testcase output was:<br>
    504 Testcase produced no output!</tt><br>
    505 <a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br>
    506  [ <a href='#failure48'>Previous Failure</a> | <a href='#failure50'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     386<a name='failure44'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br>
     387 [ <a href='#failure43'>Previous Failure</a> | <a href='#failure45'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     388<tt>Expected exit code 0, got 3<br>
     389Testcase terminated with signal 0<br>
     390Complete testcase output was:<br>
     391Testcase produced no output!</tt><br>
     392<a name='failure45'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br>
     393 [ <a href='#failure44'>Previous Failure</a> | <a href='#failure46'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
     394<tt>Expected exit code 0, got 3<br>
     395Testcase terminated with signal 0<br>
     396Complete testcase output was:<br>
     397Testcase produced no output!</tt><br>
     398<a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br>
     399 [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
    507400<tt>Expected exit code 0, got 3<br>
    508401Testcase terminated with signal 0<br>
     
    518411<a name='retest_list'></a>
    519412<h2>Retest List</h2><br>
    520 # Retest List, squirrelfish, generated Tue Apr 21 12:56:28 2009.
     413# Retest List, squirrelfish, generated Fri Oct 15 00:29:31 2010.
    521414# Original test base was: All tests.
    522 # 1119 of 1127 test(s) were completed, 49 failures reported.
     415# 1119 of 1127 test(s) were completed, 46 failures reported.
    523416ecma/TypeConversion/9.3.1-3.js
    524417ecma_2/Exceptions/function-001.js
    525418ecma_3/FunExpr/fe-001.js
    526 ecma_3/RegExp/15.10.2-1.js
    527 ecma_3/RegExp/perlstress-001.js
    528 ecma_3/RegExp/regress-209919.js
    529419ecma_3/Statements/regress-194364.js
    530420ecma_3/Unicode/uc-001.js
  • trunk/JavaScriptCore/wtf/Platform.h

    r72481 r72489  
    10241024
    10251025/* Yet Another Regex Runtime - turned on by default for JIT enabled ports. */
    1026 #if ENABLE(JIT) && !defined(ENABLE_YARR) && !defined(ENABLE_YARR_JIT)
    1027 #define ENABLE_YARR 1
     1026#if ENABLE(JIT) && !defined(ENABLE_YARR_JIT)
    10281027#define ENABLE_YARR_JIT 1
    1029 #endif
    1030 
    1031 /* Sanity Check */
    1032 #if ENABLE(YARR_JIT) && !ENABLE(YARR)
    1033 #error "YARR_JIT requires YARR"
    10341028#endif
    10351029
  • trunk/JavaScriptCore/yarr/RegexCompiler.cpp

    r72207 r72489  
    3232#include <wtf/Vector.h>
    3333
    34 #if ENABLE(YARR)
    35 
    3634using namespace WTF;
    3735
     
    943941
    944942} }
    945 
    946 #endif
  • trunk/JavaScriptCore/yarr/RegexCompiler.h

    r72207 r72489  
    2727#define RegexCompiler_h
    2828
    29 #if ENABLE(YARR)
    30 
    3129#include "RegexParser.h"
    3230#include "RegexPattern.h"
     
    3937} } // namespace JSC::Yarr
    4038
    41 #endif
    42 
    4339#endif // RegexCompiler_h
  • trunk/JavaScriptCore/yarr/RegexInterpreter.cpp

    r72207 r72489  
    3636#endif
    3737
    38 #if ENABLE(YARR)
    39 
    4038using namespace WTF;
    4139
     
    13421340        pattern->m_allocator->stopAllocator();
    13431341
    1344         if (output[0] == -1 && result != JSRegExpNoMatch)
    1345             return result;
    1346 
     1342        // RegExp.cpp currently expects all error to be converted to -1.
     1343        ASSERT((result == JSRegExpMatch) == (output[0] != -1));
    13471344        return output[0];
    13481345    }
     
    17431740}
    17441741
     1742PassOwnPtr<BytecodePattern> byteCompileRegex(RegexPattern& pattern, BumpPointerAllocator* allocator)
     1743{
     1744    return ByteCompiler(pattern).compile(allocator);
     1745}
     1746
    17451747int interpretRegex(BytecodePattern* regex, const UChar* input, unsigned start, unsigned length, int* output)
    17461748{
     
    17591761
    17601762} }
    1761 
    1762 #endif
  • trunk/JavaScriptCore/yarr/RegexInterpreter.h

    r72207 r72489  
    2626#ifndef RegexInterpreter_h
    2727#define RegexInterpreter_h
    28 
    29 #if ENABLE(YARR)
    3028
    3129#include "RegexParser.h"
     
    366364
    367365PassOwnPtr<BytecodePattern> byteCompileRegex(const UString& pattern, unsigned& numSubpatterns, const char*& error, BumpPointerAllocator*, bool ignoreCase = false, bool multiline = false);
     366PassOwnPtr<BytecodePattern> byteCompileRegex(RegexPattern& pattern, BumpPointerAllocator*);
    368367int interpretRegex(BytecodePattern* v_regex, const UChar* input, unsigned start, unsigned length, int* output);
    369368
    370369} } // namespace JSC::Yarr
    371370
    372 #endif
    373 
    374371#endif // RegexInterpreter_h
  • trunk/JavaScriptCore/yarr/RegexJIT.cpp

    r72207 r72489  
    3232#include "MacroAssembler.h"
    3333#include "RegexCompiler.h"
    34 
    35 #include "pcre.h" // temporary, remove when fallback is removed.
     34#include "RegexInterpreter.h" // temporary, remove when fallback is removed.
    3635
    3736#if ENABLE(YARR_JIT)
     
    15331532};
    15341533
    1535 void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& patternString, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline)
     1534void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& patternString, unsigned& numSubpatterns, const char*& error, BumpPointerAllocator* allocator, bool ignoreCase, bool multiline)
    15361535{
    15371536    RegexPattern pattern(ignoreCase, multiline);
     
    15471546    }
    15481547
    1549     JSRegExpIgnoreCaseOption ignoreCaseOption = ignoreCase ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase;
    1550     JSRegExpMultilineOption multilineOption = multiline ? JSRegExpMultiline : JSRegExpSingleLine;
    1551     jitObject.setFallback(jsRegExpCompile(reinterpret_cast<const UChar*>(patternString.characters()), patternString.length(), ignoreCaseOption, multilineOption, &numSubpatterns, &error));
     1548    jitObject.setFallback(byteCompileRegex(pattern, allocator));
    15521549}
    15531550
  • trunk/JavaScriptCore/yarr/RegexJIT.h

    r72207 r72489  
    3030
    3131#include "MacroAssembler.h"
     32#include "RegexInterpreter.h" // temporary, remove when fallback is removed.
    3233#include "RegexPattern.h"
    3334#include "UString.h"
    34 
    35 #include "pcre.h"
    36 struct JSRegExp; // temporary, remove when fallback is removed.
    3735
    3836#if CPU(X86) && !COMPILER(MSVC)
     
    5452public:
    5553    RegexCodeBlock()
    56         : m_fallback(0)
     54        : m_needFallback(false)
    5755    {
    5856    }
     
    6058    ~RegexCodeBlock()
    6159    {
    62         if (m_fallback)
    63             jsRegExpFree(m_fallback);
    6460    }
    6561
    66     JSRegExp* getFallback() { return m_fallback; }
    67     void setFallback(JSRegExp* fallback) { m_fallback = fallback; }
     62    BytecodePattern* getFallback() { return m_fallback.get(); }
     63    bool isFallback() { return m_needFallback; }
     64    void setFallback(PassOwnPtr<BytecodePattern> fallback)
     65    {
     66        m_fallback = fallback;
     67        m_needFallback = true;
     68    }
    6869
    6970    bool operator!() { return (!m_ref.m_code.executableAddress() && !m_fallback); }
     
    7475        return reinterpret_cast<RegexJITCode>(m_ref.m_code.executableAddress())(input, start, length, output);
    7576    }
    76    
     77
    7778#if ENABLE(REGEXP_TRACING)
    7879    void *getAddr() { return m_ref.m_code.executableAddress(); }
     
    8182private:
    8283    MacroAssembler::CodeRef m_ref;
    83     JSRegExp* m_fallback;
     84    OwnPtr<Yarr::BytecodePattern> m_fallback;
     85    bool m_needFallback;
    8486};
    8587
    86 void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase = false, bool multiline = false);
     88void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, BumpPointerAllocator* allocator, bool ignoreCase = false, bool multiline = false);
    8789
    88 inline int executeRegex(RegexCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output, int outputArraySize)
     90inline int executeRegex(RegexCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output)
    8991{
    90     if (JSRegExp* fallback = jitObject.getFallback())
    91         return (jsRegExpExecute(fallback, input, length, start, output, outputArraySize) < 0) ? -1 : output[0];
     92    if (jitObject.isFallback())
     93        return (interpretRegex(jitObject.getFallback(), input, start, length, output));
    9294
    9395    return jitObject.execute(input, start, length, output);
  • trunk/JavaScriptCore/yarr/RegexParser.h

    r72207 r72489  
    2626#ifndef RegexParser_h
    2727#define RegexParser_h
    28 
    29 #if ENABLE(YARR)
    3028
    3129#include "UString.h"
     
    848846} } // namespace JSC::Yarr
    849847
    850 #endif
    851 
    852848#endif // RegexParser_h
  • trunk/JavaScriptCore/yarr/RegexPattern.h

    r72207 r72489  
    2828#define RegexPattern_h
    2929
    30 
    31 #if ENABLE(YARR)
    32 
    3330#include <wtf/Vector.h>
    3431#include <wtf/unicode/Unicode.h>
    35 
    3632
    3733namespace JSC { namespace Yarr {
     
    430426} } // namespace JSC::Yarr
    431427
    432 #endif
    433 
    434428#endif // RegexPattern_h
  • trunk/LayoutTests/ChangeLog

    r72488 r72489  
     12010-11-19  Peter Varga  <pvarga@inf.u-szeged.hu>
     2
     3        Reviewed by Gavin Barraclough.
     4
     5        YARR JIT should fallback to YARR Interpreter instead of PCRE.
     6        https://bugs.webkit.org/show_bug.cgi?id=46719
     7
     8        Remove the ENABLE_YARR macro and the option of matching regular
     9        expressions with PCRE from JavaScriptCore.
     10
     11        * fast/js/regexp-look-ahead-empty-expected.txt:
     12        * fast/js/regexp-overflow-expected.txt:
     13        * fast/js/script-tests/regexp-overflow.js:
     14        * fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.2/15.10.2.5_Term/S15.10.2.5_A1_T4-expected.txt:
     15        * fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.2/15.10.2.8_Atom/S15.10.2.8_A2_T1-expected.txt:
     16        * fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6-expected.txt:
     17
    1182010-11-20  Ryosuke Niwa  <rniwa@webkit.org>
    219
  • trunk/LayoutTests/fast/js/regexp-look-ahead-empty-expected.txt

    r72207 r72489  
    88PASS /(a|ab)*/.exec("abab") is ["a","a"]
    99PASS /(ab)+/.exec("abab") is ["abab","ab"]
    10 FAIL /(|ab)*/.exec("ab") should be ab,ab. Was ,.
    11 FAIL /(?:(|ab)*)/.exec("ab") should be ab,ab. Was ,.
    12 FAIL /(?:(|ab)+)/.exec("ab") should be ab,ab. Was ,.
    13 FAIL /(|ab)+/.exec("abab") should be abab,ab. Was ,.
     10PASS /(|ab)*/.exec("ab") is ["ab","ab"]
     11PASS /(?:(|ab)*)/.exec("ab") is ["ab","ab"]
     12PASS /(?:(|ab)+)/.exec("ab") is ["ab","ab"]
     13PASS /(|ab)+/.exec("abab") is ["abab","ab"]
    1414PASS successfullyParsed is true
    1515
  • trunk/LayoutTests/fast/js/regexp-overflow-expected.txt

    r72207 r72489  
    1515PASS new RegExp(complexPattern).exec(complexInput)[0] is complexInput
    1616PASS new RegExp(s); threw exception SyntaxError: Invalid regular expression: regular expression too large.
    17 PASS /(([ab]){30}){3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    18 PASS /(([ab]){30}){0,3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    19 PASS /(([ab]){30}){10,3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    20 PASS /(([ab]){0,30}){3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    21 PASS /(([ab]){0,30}){0,3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    22 PASS /(([ab]){0,30}){10,3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    23 PASS /(([ab]){10,30}){3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    24 PASS /(([ab]){10,30}){0,3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    25 PASS /(([ab]){10,30}){10,3360}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    26 PASS /(([ab]){12})(([ab]){65535}){1680}(([ab]){38}){722}([ab]){27}/ threw exception SyntaxError: Invalid regular expression: regular expression too large.
    2717
    2818PASS successfullyParsed is true
  • trunk/LayoutTests/fast/js/script-tests/regexp-overflow.js

    r72207 r72489  
    4444shouldThrow('new RegExp(s);');
    4545
    46 shouldThrow('/(([ab]){30}){3360}/');
    47 shouldThrow('/(([ab]){30}){0,3360}/');
    48 shouldThrow('/(([ab]){30}){10,3360}/');
    49 shouldThrow('/(([ab]){0,30}){3360}/');
    50 shouldThrow('/(([ab]){0,30}){0,3360}/');
    51 shouldThrow('/(([ab]){0,30}){10,3360}/');
    52 shouldThrow('/(([ab]){10,30}){3360}/');
    53 shouldThrow('/(([ab]){10,30}){0,3360}/');
    54 shouldThrow('/(([ab]){10,30}){10,3360}/');
    55 shouldThrow('/(([ab]){12})(([ab]){65535}){1680}(([ab]){38}){722}([ab]){27}/');
    56 
    5746debug('');
    5847
  • trunk/LayoutTests/fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.2/15.10.2.5_Term/S15.10.2.5_A1_T4-expected.txt

    r72207 r72489  
    11S15.10.2.5_A1_T4
    22
    3 FAIL SputnikError: #4: __executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac"); __executed[4] === undefined. Actual: bbb
     3PASS
    44
    55TEST COMPLETE
  • trunk/LayoutTests/fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.2/15.10.2.8_Atom/S15.10.2.8_A2_T1-expected.txt

    r72207 r72489  
    11S15.10.2.8_A2_T1
    22
    3 FAIL SputnikError: #4: __executed = /(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac"); __executed[2] === undefined. Actual: aa
     3PASS
    44
    55TEST COMPLETE
  • trunk/LayoutTests/fast/js/sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/15.10.6.2_RegExp.prototype.exec/S15.10.6.2_A1_T6-expected.txt

    r72207 r72489  
    11S15.10.6.2_A1_T6
    22
    3 FAIL SputnikError: #4: __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); __executed[4] === undefined. Actual: bbb
     3PASS
    44
    55TEST COMPLETE
  • trunk/LayoutTests/fast/regex/test1-expected.txt

    r39162 r72489  
    17951795
    17961796/((\3|b)\2(a)){2,}/
    1797     bbaababbabaaaaabbaaaabba: FAIL. Actual results: "abba,bba,b,a"
     1797    bbaababbabaaaaabbaaaabba: PASS
    17981798
    17991799/abc/i
     
    28662866
    28672867/(?=(\w+))\1:/
    2868     abcd:: FAIL. Actual results: "null"
     2868    abcd:: PASS
    28692869
    28702870/^(?=(\w+))\1:/
     
    29022902
    29032903/^(a()*)*/
    2904     aaaa: FAIL. Actual results: "a,a,"
     2904    aaaa: PASS
    29052905
    29062906/^(?:a(?:(?:))*)*/
    2907     aaaa: FAIL. Actual results: "a"
     2907    aaaa: PASS
    29082908
    29092909/^(a()+)+/
     
    29422942
    29432943/(.*(.)?)*/
    2944     abcd: FAIL. Actual results: "abcd,,"
     2944    abcd: PASS
    29452945
    29462946/( (A | (?(1)0|) )*   )/x
  • trunk/LayoutTests/fast/regex/testoutput1

    r30517 r72489  
    26752675    abc
    26762676 0: abc
    2677  1:
     2677 1: abc
    26782678    abcabc
    26792679 0: abcabc
    2680  1:
     2680 1: abc
    26812681    abcabcabc
    26822682 0: abcabcabc
    2683  1:
     2683 1: abc
    26842684    xyz     
    26852685 0:
     
    26892689    a
    26902690 0: a
    2691  1:
     2691 1: a
    26922692    aaaaa
    26932693 0: aaaaa
    2694  1:
     2694 1: aaaaa
    26952695 
    26962696/([ab]*)*/
    26972697    a
    26982698 0: a
    2699  1:
     2699 1: a
    27002700    b
    27012701 0: b
    2702  1:
     2702 1: b
    27032703    ababab
    27042704 0: ababab
    2705  1:
     2705 1: ababab
    27062706    aaaabcde
    27072707 0: aaaab
    2708  1:
     2708 1: aaaab
    27092709    bbbb   
    27102710 0: bbbb
    2711  1:
     2711 1: bbbb
    27122712 
    27132713/([^a]*)*/
    27142714    b
    27152715 0: b
    2716  1:
     2716 1: b
    27172717    bbbb
    27182718 0: bbbb
    2719  1:
     2719 1: bbbb
    27202720    aaa   
    27212721 0:
     
    27252725    cccc
    27262726 0: cccc
    2727  1:
     2727 1: cccc
    27282728    abab 
    27292729 0:
     
    27322732/([a]*?)*/
    27332733    a
    2734  0:
    2735  1:
     2734 0: a
     2735 1: a
    27362736    aaaa
    2737  0:
    2738  1:
     2737 0: aaaa
     2738 1: a
    27392739 
    27402740/([ab]*?)*/
    27412741    a
    2742  0:
    2743  1:
     2742 0: a
     2743 1: a
    27442744    b
    2745  0:
    2746  1:
     2745 0: b
     2746 1: b
    27472747    abab
    2748  0:
    2749  1:
     2748 0: abab
     2749 1: b
    27502750    baba   
    2751  0:
    2752  1:
     2751 0: baba
     2752 1: a
    27532753 
    27542754/([^a]*?)*/
    27552755    b
    2756  0:
    2757  1:
     2756 0: b
     2757 1: b
    27582758    bbbb
    2759  0:
    2760  1:
     2759 0: bbbb
     2760 1: b
    27612761    aaa   
    27622762 0:
     
    27652765/([^ab]*?)*/
    27662766    c
    2767  0:
    2768  1:
     2767 0: c
     2768 1: c
    27692769    cccc
    2770  0:
    2771  1:
     2770 0: cccc
     2771 1: c
    27722772    baba   
    27732773 0:
     
    29542954 1: a
    29552955    aaaaa
    2956  0: aaaaa
    2957  1: a
     2956No match
    29582957    aaaaaaa
    2959  0: aaaaaaa
    2960  1: a
     2958No match
    29612959    aaaaaaaa
    29622960No match
     
    29642962No match
    29652963    aaaaaaaaaa
    2966  0: aaaaaaaaaa
    2967  1: aaaa
     2964No match
    29682965    aaaaaaaaaaa
    29692966No match
     
    37073704/((\3|b)\2(a)){2,}/
    37083705    bbaababbabaaaaabbaaaabba
    3709  0: bbaaaabba
    3710  1: bba
    3711  2: b
     3706 0: bbaa
     3707 1: a
     3708 2:
    37123709 3: a
    37133710
     
    42934290 0: foobar
    42944291 1: bar
    4295  2: foo
     4292 2:
    42964293 3: bar
    42974294
     
    43484345/^(a\1?){4}$/
    43494346    aaaaaaaaaa
    4350  0: aaaaaaaaaa
    4351  1: aaaa
     4347No match
    43524348    *** Failers
    43534349No match
     
    43734369    foobar
    43744370 0: foobar
    4375  1: f
    4376  2: o
    4377  3: o
     4371 1:
     4372 2:
     4373 3:
    43784374 4: b
    43794375 5: a
     
    44094405    abc
    44104406 0: ab
    4411  1: b
     4407 1:
    44124408
    44134409/^(){3,5}/
     
    51315127 0: ZA
    51325128 1: A
    5133  2: Z
     5129 2:
    51345130
    51355131/(Z()|A)*/
     
    57235719  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
    57245720 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
    5725  1:
     5721 1: a
    57265722
    57275723/(?>a|)*\d/
     
    57635759    abcd
    57645760 0: abcd
    5765  1:
     5761 1: abcd
     5762 2:
    57665763
    57675764/( (A | (?(1)0|) )*   )/x
Note: See TracChangeset for help on using the changeset viewer.