| Index: test/cctest/test-regexp.cc
|
| ===================================================================
|
| --- test/cctest/test-regexp.cc (revision 927)
|
| +++ test/cctest/test-regexp.cc (working copy)
|
| @@ -362,7 +362,8 @@
|
| if (!v8::internal::ParseRegExp(&reader, multiline, &result))
|
| return NULL;
|
| RegExpNode* node = NULL;
|
| - RegExpEngine::Compile(&result, &node, false, multiline);
|
| + Handle<String> pattern = Factory::NewStringFromUtf8(CStrVector(input));
|
| + RegExpEngine::Compile(&result, &node, false, multiline, pattern);
|
| return node;
|
| }
|
|
|
| @@ -520,16 +521,16 @@
|
| m.Fail();
|
| m.Bind(&start);
|
| m.PushBacktrack(&fail2);
|
| - m.CheckCharacters(foo, 0, &fail);
|
| - m.WriteCurrentPositionToRegister(0);
|
| + m.CheckCharacters(foo, 0, &fail, true);
|
| + m.WriteCurrentPositionToRegister(0, 0);
|
| m.PushCurrentPosition();
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(1);
|
| + m.WriteCurrentPositionToRegister(1, 0);
|
| m.PopCurrentPosition();
|
| m.AdvanceCurrentPosition(1);
|
| - m.WriteCurrentPositionToRegister(2);
|
| + m.WriteCurrentPositionToRegister(2, 0);
|
| m.AdvanceCurrentPosition(1);
|
| - m.WriteCurrentPositionToRegister(3);
|
| + m.WriteCurrentPositionToRegister(3, 0);
|
| m.Succeed();
|
|
|
| m.Bind(&fail);
|
| @@ -542,7 +543,8 @@
|
|
|
| v8::HandleScope scope;
|
|
|
| - Handle<ByteArray> array = Handle<ByteArray>::cast(m.GetCode());
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector("^f(o)o"));
|
| + Handle<ByteArray> array = Handle<ByteArray>::cast(m.GetCode(source));
|
| int captures[5];
|
|
|
| Handle<String> f1 =
|
| @@ -576,7 +578,8 @@
|
|
|
| m.Succeed();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector(""));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| int captures[4] = {42, 37, 87, 117};
|
| @@ -614,15 +617,16 @@
|
| Vector<const uc16> foo(foo_chars, 3);
|
|
|
| Label fail;
|
| - m.CheckCharacters(foo, 0, &fail);
|
| - m.WriteCurrentPositionToRegister(0);
|
| + m.CheckCharacters(foo, 0, &fail, true);
|
| + m.WriteCurrentPositionToRegister(0, 0);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(1);
|
| + m.WriteCurrentPositionToRegister(1, 0);
|
| m.Succeed();
|
| m.Bind(&fail);
|
| m.Fail();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector("^foo"));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| int captures[4] = {42, 37, 87, 117};
|
| @@ -675,15 +679,16 @@
|
| Vector<const uc16> foo(foo_chars, 3);
|
|
|
| Label fail;
|
| - m.CheckCharacters(foo, 0, &fail);
|
| - m.WriteCurrentPositionToRegister(0);
|
| + m.CheckCharacters(foo, 0, &fail, true);
|
| + m.WriteCurrentPositionToRegister(0, 0);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(1);
|
| + m.WriteCurrentPositionToRegister(1, 0);
|
| m.Succeed();
|
| m.Bind(&fail);
|
| m.Fail();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector("^foo"));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| int captures[4] = {42, 37, 87, 117};
|
| @@ -735,9 +740,6 @@
|
|
|
| RegExpMacroAssemblerIA32 m(RegExpMacroAssemblerIA32::ASCII, 0);
|
|
|
| - uc16 foo_chars[3] = {'f', 'o', 'o'};
|
| - Vector<const uc16> foo(foo_chars, 3);
|
| -
|
| Label fail;
|
| Label backtrack;
|
| m.LoadCurrentCharacter(10, &fail);
|
| @@ -749,7 +751,8 @@
|
| m.Bind(&backtrack);
|
| m.Fail();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector(".........."));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo"));
|
| @@ -778,9 +781,9 @@
|
|
|
| RegExpMacroAssemblerIA32 m(RegExpMacroAssemblerIA32::ASCII, 3);
|
|
|
| - m.WriteCurrentPositionToRegister(0);
|
| + m.WriteCurrentPositionToRegister(0, 0);
|
| m.AdvanceCurrentPosition(2);
|
| - m.WriteCurrentPositionToRegister(1);
|
| + m.WriteCurrentPositionToRegister(1, 0);
|
| Label nomatch;
|
| m.CheckNotBackReference(0, &nomatch);
|
| m.Fail();
|
| @@ -788,12 +791,13 @@
|
| m.AdvanceCurrentPosition(2);
|
| Label missing_match;
|
| m.CheckNotBackReference(0, &missing_match);
|
| - m.WriteCurrentPositionToRegister(2);
|
| + m.WriteCurrentPositionToRegister(2, 0);
|
| m.Succeed();
|
| m.Bind(&missing_match);
|
| m.Fail();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector("^(..)..\1"));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| Handle<String> input = Factory::NewStringFromAscii(CStrVector("fooofo"));
|
| @@ -826,9 +830,6 @@
|
|
|
| RegExpMacroAssemblerIA32 m(RegExpMacroAssemblerIA32::ASCII, 0);
|
|
|
| - uc16 foo_chars[3] = {'f', 'o', 'o'};
|
| - Vector<const uc16> foo(foo_chars, 3);
|
| -
|
| Label not_at_start, newline, fail;
|
| m.CheckNotAtStart(¬_at_start);
|
| // Check that prevchar = '\n' and current = 'f'.
|
| @@ -850,7 +851,8 @@
|
| m.CheckNotCharacter('b', &fail);
|
| m.Succeed();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source = Factory::NewStringFromAscii(CStrVector("(^f|ob)"));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| Handle<String> input = Factory::NewStringFromAscii(CStrVector("foobar"));
|
| @@ -893,10 +895,10 @@
|
|
|
| Label fail, succ;
|
|
|
| - m.WriteCurrentPositionToRegister(0);
|
| - m.WriteCurrentPositionToRegister(2);
|
| + m.WriteCurrentPositionToRegister(0, 0);
|
| + m.WriteCurrentPositionToRegister(2, 0);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(3);
|
| + m.WriteCurrentPositionToRegister(3, 0);
|
| m.CheckNotBackReferenceIgnoreCase(2, &fail); // Match "AbC".
|
| m.CheckNotBackReferenceIgnoreCase(2, &fail); // Match "ABC".
|
| Label expected_fail;
|
| @@ -910,10 +912,12 @@
|
| m.Fail();
|
|
|
| m.Bind(&succ);
|
| - m.WriteCurrentPositionToRegister(1);
|
| + m.WriteCurrentPositionToRegister(1, 0);
|
| m.Succeed();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source =
|
| + Factory::NewStringFromAscii(CStrVector("^(abc)\1\1(?!\1)...(?!\1)"));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| Handle<String> input =
|
| @@ -955,13 +959,13 @@
|
| enum registers { out1, out2, out3, out4, out5, sp, loop_cnt };
|
| Label fail;
|
| Label backtrack;
|
| - m.WriteCurrentPositionToRegister(out1); // Output: [0]
|
| + m.WriteCurrentPositionToRegister(out1, 0); // Output: [0]
|
| m.PushRegister(out1);
|
| m.PushBacktrack(&backtrack);
|
| m.WriteStackPointerToRegister(sp);
|
| // Fill stack and registers
|
| m.AdvanceCurrentPosition(2);
|
| - m.WriteCurrentPositionToRegister(out1);
|
| + m.WriteCurrentPositionToRegister(out1, 0);
|
| m.PushRegister(out1);
|
| m.PushBacktrack(&fail);
|
| // Drop backtrack stack frames.
|
| @@ -977,7 +981,7 @@
|
| m.PopRegister(out1);
|
| m.ReadCurrentPositionFromRegister(out1);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(out2); // [0,3]
|
| + m.WriteCurrentPositionToRegister(out2, 0); // [0,3]
|
|
|
| Label loop;
|
| m.SetRegister(loop_cnt, 0); // loop counter
|
| @@ -985,7 +989,7 @@
|
| m.AdvanceRegister(loop_cnt, 1);
|
| m.AdvanceCurrentPosition(1);
|
| m.IfRegisterLT(loop_cnt, 3, &loop);
|
| - m.WriteCurrentPositionToRegister(out3); // [0,3,6]
|
| + m.WriteCurrentPositionToRegister(out3, 0); // [0,3,6]
|
|
|
| Label loop2;
|
| m.SetRegister(loop_cnt, 2); // loop counter
|
| @@ -993,24 +997,29 @@
|
| m.AdvanceRegister(loop_cnt, -1);
|
| m.AdvanceCurrentPosition(1);
|
| m.IfRegisterGE(loop_cnt, 0, &loop2);
|
| - m.WriteCurrentPositionToRegister(out4); // [0,3,6,9]
|
| + m.WriteCurrentPositionToRegister(out4, 0); // [0,3,6,9]
|
|
|
| Label loop3;
|
| Label exit_loop3;
|
| + m.PushRegister(out4);
|
| + m.PushRegister(out4);
|
| m.ReadCurrentPositionFromRegister(out3);
|
| m.Bind(&loop3);
|
| m.AdvanceCurrentPosition(1);
|
| - m.CheckCurrentPosition(out4, &exit_loop3);
|
| + m.CheckGreedyLoop(&exit_loop3);
|
| m.GoTo(&loop3);
|
| m.Bind(&exit_loop3);
|
| - m.WriteCurrentPositionToRegister(out5); // [0,3,6,9,9]
|
| + m.PopCurrentPosition();
|
| + m.WriteCurrentPositionToRegister(out5, 0); // [0,3,6,9,9]
|
|
|
| m.Succeed();
|
|
|
| m.Bind(&fail);
|
| m.Fail();
|
|
|
| - Handle<Object> code_object = m.GetCode();
|
| + Handle<String> source =
|
| + Factory::NewStringFromAscii(CStrVector("<loop test>"));
|
| + Handle<Object> code_object = m.GetCode(source);
|
| Handle<Code> code = Handle<Code>::cast(code_object);
|
|
|
| // String long enough for test (content doesn't matter).
|
| @@ -1291,5 +1300,5 @@
|
|
|
| TEST(Graph) {
|
| V8::Initialize(NULL);
|
| - Execute("\\b\\w", false, true);
|
| + Execute("(?=[d#.])", false, true);
|
| }
|
|
|