Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(647)

Unified Diff: src/interpreter-re2k.cc

Issue 9457: Fix lint issues.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/regexp2000/
Patch Set: Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/interpreter-re2k.cc
===================================================================
--- src/interpreter-re2k.cc (revision 704)
+++ src/interpreter-re2k.cc (working copy)
@@ -39,7 +39,10 @@
template <typename Char>
-static bool RawMatch(const byte* code_base, Vector<const Char> subject, int* captures, int current) {
+static bool RawMatch(const byte* code_base,
+ Vector<const Char> subject,
+ int* registers,
+ int current) {
const byte* pc = code_base;
int backtrack_stack[1000];
int backtrack_stack_space = 1000;
@@ -64,15 +67,15 @@
*backtrack_sp++ = Load32(pc + 1);
pc += 5;
break;
- case BC_PUSH_CAPTURE:
+ case BC_PUSH_REGISTER:
if (--backtrack_stack_space < 0) {
return false; // No match on backtrack stack overflow.
}
- *backtrack_sp++ = captures[pc[1]];
+ *backtrack_sp++ = registers[pc[1]];
pc += 2;
break;
- case BC_SET_CAPTURE:
- captures[pc[1]] = current + Load32(pc + 2);
+ case BC_SET_REGISTER:
+ registers[pc[1]] = current + Load32(pc + 2);
pc += 6;
break;
case BC_POP_CP:
@@ -86,10 +89,10 @@
--backtrack_sp;
pc = code_base + *backtrack_sp;
break;
- case BC_POP_CAPTURE:
+ case BC_POP_REGISTER:
backtrack_stack_space++;
--backtrack_sp;
- captures[pc[1]] = *backtrack_sp;
+ registers[pc[1]] = *backtrack_sp;
pc += 2;
break;
case BC_FAIL:
@@ -157,6 +160,48 @@
}
break;
}
+ case BC_CHECK_REGISTER_EQ:
+ if (registers[pc[1]] == Load16(pc + 2)) {
+ pc = code_base + Load32(pc + 4);
+ } else {
+ pc += 8;
+ }
+ break;
+ case BC_CHECK_REGISTER_LE:
+ if (registers[pc[1]] <= Load16(pc + 2)) {
+ pc = code_base + Load32(pc + 4);
+ } else {
+ pc += 8;
+ }
+ break;
+ case BC_CHECK_REGISTER_LT:
+ if (registers[pc[1]] < Load16(pc + 2)) {
+ pc = code_base + Load32(pc + 4);
+ } else {
+ pc += 8;
+ }
+ break;
+ case BC_CHECK_REGISTER_GE:
+ if (registers[pc[1]] >= Load16(pc + 2)) {
+ pc = code_base + Load32(pc + 4);
+ } else {
+ pc += 8;
+ }
+ break;
+ case BC_CHECK_REGISTER_GT:
+ if (registers[pc[1]] > Load16(pc + 2)) {
+ pc = code_base + Load32(pc + 4);
+ } else {
+ pc += 8;
+ }
+ break;
+ case BC_CHECK_REGISTER_NE:
+ if (registers[pc[1]] != Load16(pc + 2)) {
+ pc = code_base + Load32(pc + 4);
+ } else {
+ pc += 8;
+ }
+ break;
case BC_CHECK_BACKREF:
case BC_CHECK_NOT_BACKREF:
case BC_CHECK_BITMAP:
@@ -169,14 +214,23 @@
}
-bool Re2kInterpreter::Match(ByteArray* code_array, String* subject, int* captures, int start_position) {
+bool Re2kInterpreter::Match(ByteArray* code_array,
+ String* subject,
+ int* registers,
+ int start_position) {
const byte* code_base = code_array->GetDataStartAddress();
StringShape shape(subject);
ASSERT(subject->IsFlat(shape));
if (shape.IsAsciiRepresentation()) {
- return RawMatch(code_base, subject->ToAsciiVector(), captures, start_position);
+ return RawMatch(code_base,
+ subject->ToAsciiVector(),
+ registers,
+ start_position);
} else {
- return RawMatch(code_base, subject->ToUC16Vector(), captures, start_position);
+ return RawMatch(code_base,
+ subject->ToUC16Vector(),
+ registers,
+ start_position);
}
}
« src/assembler-re2k.h ('K') | « src/interpreter-re2k.h ('k') | src/regexp-codegen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698