| Index: third_party/re2/re2/testing/dfa_test.cc
|
| diff --git a/third_party/re2/re2/testing/dfa_test.cc b/third_party/re2/re2/testing/dfa_test.cc
|
| index 8e95ae4b7efb3a5825b72936ac16eff988dd26e0..e9c7befd6906d871bff780775317c8debe1a22a8 100644
|
| --- a/third_party/re2/re2/testing/dfa_test.cc
|
| +++ b/third_party/re2/re2/testing/dfa_test.cc
|
| @@ -2,14 +2,16 @@
|
| // Use of this source code is governed by a BSD-style
|
| // license that can be found in the LICENSE file.
|
|
|
| -#include "util/test.h"
|
| #include "util/thread.h"
|
| +#include "util/test.h"
|
| #include "re2/prog.h"
|
| #include "re2/re2.h"
|
| #include "re2/regexp.h"
|
| #include "re2/testing/regexp_generator.h"
|
| #include "re2/testing/string_generator.h"
|
|
|
| +static const bool UsingMallocCounter = false;
|
| +
|
| DECLARE_bool(re2_dfa_bail_when_slow);
|
|
|
| DEFINE_int32(size, 8, "log2(number of DFA nodes)");
|
| @@ -42,7 +44,7 @@ TEST(Multithreaded, BuildEntireDFA) {
|
| // Check that single-threaded code works.
|
| {
|
| //LOG(INFO) << s;
|
| - Regexp* re = Regexp::Parse(s.c_str(), Regexp::LikePerl, NULL);
|
| + Regexp* re = Regexp::Parse(s, Regexp::LikePerl, NULL);
|
| CHECK(re);
|
| Prog* prog = re->CompileToProg(0);
|
| CHECK(prog);
|
| @@ -57,7 +59,7 @@ TEST(Multithreaded, BuildEntireDFA) {
|
|
|
| // Build the DFA simultaneously in a bunch of threads.
|
| for (int i = 0; i < FLAGS_repeat; i++) {
|
| - Regexp* re = Regexp::Parse(s.c_str(), Regexp::LikePerl, NULL);
|
| + Regexp* re = Regexp::Parse(s, Regexp::LikePerl, NULL);
|
| CHECK(re);
|
| Prog* prog = re->CompileToProg(0);
|
| CHECK(prog);
|
| @@ -92,14 +94,13 @@ TEST(SingleThreaded, BuildEntireDFA) {
|
| s += "[ab]";
|
| s += "b";
|
|
|
| - //LOG(INFO) << s;
|
| - Regexp* re = Regexp::Parse(s.c_str(), Regexp::LikePerl, NULL);
|
| + Regexp* re = Regexp::Parse(s, Regexp::LikePerl, NULL);
|
| CHECK(re);
|
| int max = 24;
|
| for (int i = 17; i < max; i++) {
|
| - int limit = 1<<i;
|
| - int usage;
|
| - //int progusage, dfamem;
|
| + int64 limit = 1<<i;
|
| + int64 usage;
|
| + //int64 progusage, dfamem;
|
| {
|
| testing::MallocCounter m(testing::MallocCounter::THIS_THREAD_ONLY);
|
| Prog* prog = re->CompileToProg(limit);
|
| @@ -113,10 +114,13 @@ TEST(SingleThreaded, BuildEntireDFA) {
|
| }
|
| if (!UsingMallocCounter)
|
| continue;
|
| - //LOG(INFO) << StringPrintf("Limit %d: prog used %d, DFA budget %d, total %d\n",
|
| - // limit, progusage, dfamem, usage);
|
| + //LOG(INFO) << "limit " << limit << ", "
|
| + // << "prog usage " << progusage << ", "
|
| + // << "DFA budget " << dfamem << ", "
|
| + // << "total " << usage;
|
| + // Tolerate +/- 10%.
|
| CHECK_GT(usage, limit*9/10);
|
| - CHECK_LT(usage, limit + (16<<10)); // 16kB of slop okay
|
| + CHECK_LT(usage, limit*11/10);
|
| }
|
| re->Decref();
|
| }
|
| @@ -132,7 +136,7 @@ TEST(SingleThreaded, BuildEntireDFA) {
|
| // position in the input, never reusing any states until it gets to the
|
| // end of the string. This is the worst possible case for DFA execution.
|
| static string DeBruijnString(int n) {
|
| - CHECK_LT(n, 8*sizeof(int));
|
| + CHECK_LT(n, static_cast<int>(8*sizeof(int)));
|
| CHECK_GT(n, 0);
|
|
|
| vector<bool> did(1<<n);
|
| @@ -221,13 +225,13 @@ TEST(SingleThreaded, SearchDFA) {
|
| peak_usage = m.PeakHeapGrowth();
|
| delete prog;
|
| }
|
| - re->Decref();
|
| -
|
| if (!UsingMallocCounter)
|
| return;
|
| - //LOG(INFO) << "usage " << usage << " " << peak_usage;
|
| + //LOG(INFO) << "usage " << usage << ", "
|
| + // << "peak usage " << peak_usage;
|
| CHECK_LT(usage, 1<<n);
|
| CHECK_LT(peak_usage, 1<<n);
|
| + re->Decref();
|
| }
|
|
|
| // Helper thread: searches for match, which should match,
|
|
|