| Index: test/cctest/test-regexp.cc
|
| diff --git a/test/cctest/test-regexp.cc b/test/cctest/test-regexp.cc
|
| index 6bcf5f576325396fd286a0eafbbcf97fa131cd18..ac62b752c0c8d1b0f7bcee273d4a73bfd2e25f96 100644
|
| --- a/test/cctest/test-regexp.cc
|
| +++ b/test/cctest/test-regexp.cc
|
| @@ -784,15 +784,22 @@ TEST(MacroAssemblerNativeSimple) {
|
| ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4,
|
| Isolate::Current()->runtime_zone());
|
|
|
| - uc16 foo_chars[3] = {'f', 'o', 'o'};
|
| - Vector<const uc16> foo(foo_chars, 3);
|
| -
|
| - Label fail;
|
| - m.CheckCharacters(foo, 0, &fail, true);
|
| + Label fail, backtrack;
|
| + m.PushBacktrack(&fail);
|
| + m.CheckNotAtStart(NULL);
|
| + m.LoadCurrentCharacter(2, NULL);
|
| + m.CheckNotCharacter('o', NULL);
|
| + m.LoadCurrentCharacter(1, NULL, false);
|
| + m.CheckNotCharacter('o', NULL);
|
| + m.LoadCurrentCharacter(0, NULL, false);
|
| + m.CheckNotCharacter('f', NULL);
|
| m.WriteCurrentPositionToRegister(0, 0);
|
| + m.WriteCurrentPositionToRegister(1, 3);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(1, 0);
|
| + m.PushBacktrack(&backtrack);
|
| m.Succeed();
|
| + m.Bind(&backtrack);
|
| + m.Backtrack();
|
| m.Bind(&fail);
|
| m.Fail();
|
|
|
| @@ -842,15 +849,22 @@ TEST(MacroAssemblerNativeSimpleUC16) {
|
| ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::UC16, 4,
|
| Isolate::Current()->runtime_zone());
|
|
|
| - uc16 foo_chars[3] = {'f', 'o', 'o'};
|
| - Vector<const uc16> foo(foo_chars, 3);
|
| -
|
| - Label fail;
|
| - m.CheckCharacters(foo, 0, &fail, true);
|
| + Label fail, backtrack;
|
| + m.PushBacktrack(&fail);
|
| + m.CheckNotAtStart(NULL);
|
| + m.LoadCurrentCharacter(2, NULL);
|
| + m.CheckNotCharacter('o', NULL);
|
| + m.LoadCurrentCharacter(1, NULL, false);
|
| + m.CheckNotCharacter('o', NULL);
|
| + m.LoadCurrentCharacter(0, NULL, false);
|
| + m.CheckNotCharacter('f', NULL);
|
| m.WriteCurrentPositionToRegister(0, 0);
|
| + m.WriteCurrentPositionToRegister(1, 3);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(1, 0);
|
| + m.PushBacktrack(&backtrack);
|
| m.Succeed();
|
| + m.Bind(&backtrack);
|
| + m.Backtrack();
|
| m.Bind(&fail);
|
| m.Fail();
|
|
|
| @@ -1349,36 +1363,33 @@ TEST(MacroAssembler) {
|
| RegExpMacroAssemblerIrregexp m(Vector<byte>(codes, 1024),
|
| Isolate::Current()->runtime_zone());
|
| // ^f(o)o.
|
| - Label fail, fail2, start;
|
| - uc16 foo_chars[3];
|
| - foo_chars[0] = 'f';
|
| - foo_chars[1] = 'o';
|
| - foo_chars[2] = 'o';
|
| - Vector<const uc16> foo(foo_chars, 3);
|
| + Label start, fail, backtrack;
|
| +
|
| m.SetRegister(4, 42);
|
| m.PushRegister(4, RegExpMacroAssembler::kNoStackLimitCheck);
|
| m.AdvanceRegister(4, 42);
|
| m.GoTo(&start);
|
| m.Fail();
|
| m.Bind(&start);
|
| - m.PushBacktrack(&fail2);
|
| - m.CheckCharacters(foo, 0, &fail, true);
|
| + m.PushBacktrack(&fail);
|
| + m.CheckNotAtStart(NULL);
|
| + m.LoadCurrentCharacter(0, NULL);
|
| + m.CheckNotCharacter('f', NULL);
|
| + m.LoadCurrentCharacter(1, NULL);
|
| + m.CheckNotCharacter('o', NULL);
|
| + m.LoadCurrentCharacter(2, NULL);
|
| + m.CheckNotCharacter('o', NULL);
|
| m.WriteCurrentPositionToRegister(0, 0);
|
| - m.PushCurrentPosition();
|
| + m.WriteCurrentPositionToRegister(1, 3);
|
| + m.WriteCurrentPositionToRegister(2, 1);
|
| + m.WriteCurrentPositionToRegister(3, 2);
|
| m.AdvanceCurrentPosition(3);
|
| - m.WriteCurrentPositionToRegister(1, 0);
|
| - m.PopCurrentPosition();
|
| - m.AdvanceCurrentPosition(1);
|
| - m.WriteCurrentPositionToRegister(2, 0);
|
| - m.AdvanceCurrentPosition(1);
|
| - m.WriteCurrentPositionToRegister(3, 0);
|
| + m.PushBacktrack(&backtrack);
|
| m.Succeed();
|
| -
|
| - m.Bind(&fail);
|
| + m.Bind(&backtrack);
|
| + m.ClearRegisters(2, 3);
|
| m.Backtrack();
|
| - m.Succeed();
|
| -
|
| - m.Bind(&fail2);
|
| + m.Bind(&fail);
|
| m.PopRegister(0);
|
| m.Fail();
|
|
|
|
|