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

Unified Diff: src/jsregexp.cc

Issue 10795: Fixes to RegExp-IA32. (Closed)
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/jsregexp.cc
diff --git a/src/jsregexp.cc b/src/jsregexp.cc
index 7bb94826fb07b7ae661d0a275818ed27412d75db..0286900dd420631c3fbf214f70d5a527e6612135 100644
--- a/src/jsregexp.cc
+++ b/src/jsregexp.cc
@@ -42,6 +42,7 @@
#include "parser.h"
#include "assembler-irregexp.h"
#include "regexp-macro-assembler.h"
+#include "regexp-macro-assembler-tracer.h"
#include "regexp-macro-assembler-irregexp.h"
#ifdef ARM
@@ -944,11 +945,16 @@ Handle<FixedArray> RegExpCompiler::Assemble(
RegExpMacroAssembler* macro_assembler,
RegExpNode* start,
int capture_count) {
- macro_assembler_ = macro_assembler;
+#ifdef DEBUG
+ if (FLAG_trace_regexp_assembler) {
+ macro_assembler_ = new RegExpMacroAssemblerTracer(macro_assembler);
+ } else
+#endif
+ macro_assembler_ = macro_assembler;
List <RegExpNode*> work_list(0);
work_list_ = &work_list;
Label fail;
- macro_assembler->PushBacktrack(&fail);
+ macro_assembler_->PushBacktrack(&fail);
if (!start->GoTo(this)) {
fail.Unuse();
return Handle<FixedArray>::null();
@@ -959,19 +965,24 @@ Handle<FixedArray> RegExpCompiler::Assemble(
return Handle<FixedArray>::null();
}
}
- macro_assembler->Bind(&fail);
- macro_assembler->Fail();
+ macro_assembler_->Bind(&fail);
+ macro_assembler_->Fail();
Handle<FixedArray> array =
Factory::NewFixedArray(RegExpImpl::kIrregexpDataLength);
array->set(RegExpImpl::kIrregexpImplementationIndex,
- Smi::FromInt(macro_assembler->Implementation()));
+ Smi::FromInt(macro_assembler_->Implementation()));
array->set(RegExpImpl::kIrregexpNumberOfRegistersIndex,
Smi::FromInt(next_register_));
array->set(RegExpImpl::kIrregexpNumberOfCapturesIndex,
Smi::FromInt(capture_count));
- Handle<Object> code = macro_assembler->GetCode();
+ Handle<Object> code = macro_assembler_->GetCode();
array->set(RegExpImpl::kIrregexpCodeIndex, *code);
work_list_ = NULL;
+#ifdef DEBUG
+ if (FLAG_trace_regexp_assembler) {
+ delete macro_assembler_;
+ }
+#endif
return array;
}

Powered by Google App Engine
This is Rietveld 408576698