Index: test/cctest/test-regexp.cc |
=================================================================== |
--- test/cctest/test-regexp.cc (revision 862) |
+++ test/cctest/test-regexp.cc (working copy) |
@@ -36,7 +36,6 @@ |
#include "parser.h" |
#include "ast.h" |
#include "jsregexp-inl.h" |
-#include "assembler-irregexp.h" |
#include "regexp-macro-assembler.h" |
#include "regexp-macro-assembler-irregexp.h" |
#ifdef ARM |
@@ -519,146 +518,10 @@ |
} |
-TEST(Assembler) { |
- V8::Initialize(NULL); |
- byte codes[1024]; |
- IrregexpAssembler assembler(Vector<byte>(codes, 1024)); |
-#define __ assembler. |
- Label advance; |
- Label look_for_foo; |
- Label fail; |
- __ GoTo(&look_for_foo); |
- __ Bind(&advance); |
- __ AdvanceCP(1); |
- __ Bind(&look_for_foo); |
- __ LoadCurrentChar(0, &fail); |
- __ CheckNotCharacter('f', &advance); |
- __ LoadCurrentChar(1, &fail); |
- __ CheckNotCharacter('o', &advance); |
- __ LoadCurrentChar(2, &fail); |
- __ CheckNotCharacter('o', &advance); |
- __ WriteCurrentPositionToRegister(0); |
- __ WriteCurrentPositionToRegister(1, 2); |
- __ Succeed(); |
- __ Bind(&fail); |
- __ Fail(); |
- |
- v8::HandleScope scope; |
- Handle<ByteArray> array = Factory::NewByteArray(assembler.length()); |
- assembler.Copy(array->GetDataStartAddress()); |
- int captures[2]; |
- |
- Handle<String> f1 = |
- Factory::NewStringFromAscii(CStrVector("Now is the time")); |
- Handle<String> f1_16 = RegExpImpl::StringToTwoByte(f1); |
- CHECK(!IrregexpInterpreter::Match(array, f1_16, captures, 0)); |
- |
- Handle<String> f2 = Factory::NewStringFromAscii(CStrVector("foo bar baz")); |
- Handle<String> f2_16 = RegExpImpl::StringToTwoByte(f2); |
- CHECK(IrregexpInterpreter::Match(array, f2_16, captures, 0)); |
- CHECK_EQ(0, captures[0]); |
- CHECK_EQ(2, captures[1]); |
- |
- Handle<String> f3 = Factory::NewStringFromAscii(CStrVector("tomfoolery")); |
- Handle<String> f3_16 = RegExpImpl::StringToTwoByte(f3); |
- CHECK(IrregexpInterpreter::Match(array, f3_16, captures, 0)); |
- CHECK_EQ(3, captures[0]); |
- CHECK_EQ(5, captures[1]); |
-} |
- |
- |
-TEST(Assembler2) { |
- V8::Initialize(NULL); |
- byte codes[1024]; |
- IrregexpAssembler assembler(Vector<byte>(codes, 1024)); |
-#define __ assembler. |
- // /^.*foo/ |
- Label more_dots; |
- Label unwind_dot; |
- Label failure; |
- Label foo; |
- Label foo_failed; |
- Label dot_match; |
- // ^ |
- __ PushCurrentPosition(); |
- __ PushRegister(0); |
- __ WriteCurrentPositionToRegister(0); |
- __ PushBacktrack(&failure); |
- __ GoTo(&dot_match); |
- // .* |
- __ Bind(&more_dots); |
- __ AdvanceCP(1); |
- __ Bind(&dot_match); |
- __ PushCurrentPosition(); |
- __ PushBacktrack(&unwind_dot); |
- __ LoadCurrentChar(0, &foo); |
- __ CheckNotCharacter('\n', &more_dots); |
- // foo |
- __ Bind(&foo); |
- __ CheckNotCharacter('f', &foo_failed); |
- __ LoadCurrentChar(1, &foo_failed); |
- __ CheckNotCharacter('o', &foo_failed); |
- __ LoadCurrentChar(2, &foo_failed); |
- __ CheckNotCharacter('o', &foo_failed); |
- __ WriteCurrentPositionToRegister(1, 2); |
- __ Succeed(); |
- __ Break(); |
- |
- __ Bind(&foo_failed); |
- __ PopBacktrack(); |
- __ Break(); |
- |
- __ Bind(&unwind_dot); |
- __ PopCurrentPosition(); |
- __ LoadCurrentChar(0, &foo_failed); |
- __ GoTo(&foo); |
- |
- __ Bind(&failure); |
- __ PopRegister(0); |
- __ PopCurrentPosition(); |
- __ Fail(); |
- |
- v8::HandleScope scope; |
- Handle<ByteArray> array = Factory::NewByteArray(assembler.length()); |
- assembler.Copy(array->GetDataStartAddress()); |
- int captures[2]; |
- |
- Handle<String> f1 = |
- Factory::NewStringFromAscii(CStrVector("Now is the time")); |
- Handle<String> f1_16 = RegExpImpl::StringToTwoByte(f1); |
- CHECK(!IrregexpInterpreter::Match(array, f1_16, captures, 0)); |
- |
- Handle<String> f2 = Factory::NewStringFromAscii(CStrVector("foo bar baz")); |
- Handle<String> f2_16 = RegExpImpl::StringToTwoByte(f2); |
- CHECK(IrregexpInterpreter::Match(array, f2_16, captures, 0)); |
- CHECK_EQ(0, captures[0]); |
- CHECK_EQ(2, captures[1]); |
- |
- Handle<String> f3 = Factory::NewStringFromAscii(CStrVector("tomfoolery")); |
- Handle<String> f3_16 = RegExpImpl::StringToTwoByte(f3); |
- CHECK(IrregexpInterpreter::Match(array, f3_16, captures, 0)); |
- CHECK_EQ(0, captures[0]); |
- CHECK_EQ(5, captures[1]); |
- |
- Handle<String> f4 = |
- Factory::NewStringFromAscii(CStrVector("football buffoonery")); |
- Handle<String> f4_16 = RegExpImpl::StringToTwoByte(f4); |
- CHECK(IrregexpInterpreter::Match(array, f4_16, captures, 0)); |
- CHECK_EQ(0, captures[0]); |
- CHECK_EQ(14, captures[1]); |
- |
- Handle<String> f5 = |
- Factory::NewStringFromAscii(CStrVector("walking\nbarefoot")); |
- Handle<String> f5_16 = RegExpImpl::StringToTwoByte(f5); |
- CHECK(!IrregexpInterpreter::Match(array, f5_16, captures, 0)); |
-} |
- |
- |
TEST(MacroAssembler) { |
V8::Initialize(NULL); |
byte codes[1024]; |
- IrregexpAssembler assembler(Vector<byte>(codes, 1024)); |
- RegExpMacroAssemblerIrregexp m(&assembler); |
+ RegExpMacroAssemblerIrregexp m(Vector<byte>(codes, 1024)); |
// ^f(o)o. |
Label fail, fail2, start; |
uc16 foo_chars[3]; |
@@ -695,8 +558,7 @@ |
v8::HandleScope scope; |
- Handle<ByteArray> array = Factory::NewByteArray(assembler.length()); |
- assembler.Copy(array->GetDataStartAddress()); |
+ Handle<ByteArray> array = Handle<ByteArray>::cast(m.GetCode()); |
int captures[5]; |
Handle<String> f1 = |