Commit e5fd9cba authored by Iain Ireland's avatar Iain Ireland Committed by Commit Bot

[regexp] Simplify allocation of RegExpMacroAssemblerTracer

This change is motivated by SpiderMonkey's policy against bare
new/delete. (I also think it's just a nicer way to write this.)

R=jgruber@chromium.org

here is the same as the change I made in the equivalent SM code.

Note: I'm not importing regexp.cc into SpiderMonkey, but the change
Bug: v8:10303
Change-Id: I3c81727eb7dea9c0ec78241e3c82ffc9e7007827
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2091858
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66713}
parent 7695c860
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include "src/execution/isolate.h" #include "src/execution/isolate.h"
#include "src/objects/objects-inl.h" #include "src/objects/objects-inl.h"
#include "src/regexp/regexp-macro-assembler-arch.h" #include "src/regexp/regexp-macro-assembler-arch.h"
#include "src/regexp/regexp-macro-assembler-tracer.h"
#ifdef V8_INTL_SUPPORT #ifdef V8_INTL_SUPPORT
#include "src/regexp/special-case.h" #include "src/regexp/special-case.h"
#endif // V8_INTL_SUPPORT #endif // V8_INTL_SUPPORT
...@@ -245,12 +244,7 @@ RegExpCompiler::RegExpCompiler(Isolate* isolate, Zone* zone, int capture_count, ...@@ -245,12 +244,7 @@ RegExpCompiler::RegExpCompiler(Isolate* isolate, Zone* zone, int capture_count,
RegExpCompiler::CompilationResult RegExpCompiler::Assemble( RegExpCompiler::CompilationResult RegExpCompiler::Assemble(
Isolate* isolate, RegExpMacroAssembler* macro_assembler, RegExpNode* start, Isolate* isolate, RegExpMacroAssembler* macro_assembler, RegExpNode* start,
int capture_count, Handle<String> pattern) { int capture_count, Handle<String> pattern) {
#ifdef DEBUG macro_assembler_ = macro_assembler;
if (FLAG_trace_regexp_assembler)
macro_assembler_ = new RegExpMacroAssemblerTracer(isolate, macro_assembler);
else
#endif
macro_assembler_ = macro_assembler;
ZoneVector<RegExpNode*> work_list(zone()); ZoneVector<RegExpNode*> work_list(zone());
work_list_ = &work_list; work_list_ = &work_list;
...@@ -275,11 +269,6 @@ RegExpCompiler::CompilationResult RegExpCompiler::Assemble( ...@@ -275,11 +269,6 @@ RegExpCompiler::CompilationResult RegExpCompiler::Assemble(
isolate->IncreaseTotalRegexpCodeGenerated(code); isolate->IncreaseTotalRegexpCodeGenerated(code);
work_list_ = nullptr; work_list_ = nullptr;
#ifdef DEBUG
if (FLAG_trace_regexp_assembler) {
delete macro_assembler_;
}
#endif
return {*code, next_register_}; return {*code, next_register_};
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "src/regexp/regexp-dotprinter.h" #include "src/regexp/regexp-dotprinter.h"
#include "src/regexp/regexp-interpreter.h" #include "src/regexp/regexp-interpreter.h"
#include "src/regexp/regexp-macro-assembler-arch.h" #include "src/regexp/regexp-macro-assembler-arch.h"
#include "src/regexp/regexp-macro-assembler-tracer.h"
#include "src/regexp/regexp-parser.h" #include "src/regexp/regexp-parser.h"
#include "src/strings/string-search.h" #include "src/strings/string-search.h"
#include "src/utils/ostreams.h" #include "src/utils/ostreams.h"
...@@ -878,8 +879,18 @@ bool RegExpImpl::Compile(Isolate* isolate, Zone* zone, RegExpCompileData* data, ...@@ -878,8 +879,18 @@ bool RegExpImpl::Compile(Isolate* isolate, Zone* zone, RegExpCompileData* data,
macro_assembler->set_global_mode(mode); macro_assembler->set_global_mode(mode);
} }
RegExpMacroAssembler* macro_assembler_ptr = macro_assembler.get();
#ifdef DEBUG
std::unique_ptr<RegExpMacroAssembler> tracer_macro_assembler;
if (FLAG_trace_regexp_assembler) {
tracer_macro_assembler.reset(
new RegExpMacroAssemblerTracer(isolate, macro_assembler_ptr));
macro_assembler_ptr = tracer_macro_assembler.get();
}
#endif
RegExpCompiler::CompilationResult result = compiler.Assemble( RegExpCompiler::CompilationResult result = compiler.Assemble(
isolate, macro_assembler.get(), node, data->capture_count, pattern); isolate, macro_assembler_ptr, node, data->capture_count, pattern);
// Code / bytecode printing. // Code / bytecode printing.
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment