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 e9c7befd6906d871bff780775317c8debe1a22a8..8e95ae4b7efb3a5825b72936ac16eff988dd26e0 100644 |
--- a/third_party/re2/re2/testing/dfa_test.cc |
+++ b/third_party/re2/re2/testing/dfa_test.cc |
@@ -2,15 +2,13 @@ |
// 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); |
@@ -44,7 +42,7 @@ |
// Check that single-threaded code works. |
{ |
//LOG(INFO) << s; |
- Regexp* re = Regexp::Parse(s, Regexp::LikePerl, NULL); |
+ Regexp* re = Regexp::Parse(s.c_str(), Regexp::LikePerl, NULL); |
CHECK(re); |
Prog* prog = re->CompileToProg(0); |
CHECK(prog); |
@@ -59,7 +57,7 @@ |
// Build the DFA simultaneously in a bunch of threads. |
for (int i = 0; i < FLAGS_repeat; i++) { |
- Regexp* re = Regexp::Parse(s, Regexp::LikePerl, NULL); |
+ Regexp* re = Regexp::Parse(s.c_str(), Regexp::LikePerl, NULL); |
CHECK(re); |
Prog* prog = re->CompileToProg(0); |
CHECK(prog); |
@@ -94,13 +92,14 @@ |
s += "[ab]"; |
s += "b"; |
- Regexp* re = Regexp::Parse(s, Regexp::LikePerl, NULL); |
+ //LOG(INFO) << s; |
+ Regexp* re = Regexp::Parse(s.c_str(), Regexp::LikePerl, NULL); |
CHECK(re); |
int max = 24; |
for (int i = 17; i < max; i++) { |
- int64 limit = 1<<i; |
- int64 usage; |
- //int64 progusage, dfamem; |
+ int limit = 1<<i; |
+ int usage; |
+ //int progusage, dfamem; |
{ |
testing::MallocCounter m(testing::MallocCounter::THIS_THREAD_ONLY); |
Prog* prog = re->CompileToProg(limit); |
@@ -114,13 +113,10 @@ |
} |
if (!UsingMallocCounter) |
continue; |
- //LOG(INFO) << "limit " << limit << ", " |
- // << "prog usage " << progusage << ", " |
- // << "DFA budget " << dfamem << ", " |
- // << "total " << usage; |
- // Tolerate +/- 10%. |
+ //LOG(INFO) << StringPrintf("Limit %d: prog used %d, DFA budget %d, total %d\n", |
+ // limit, progusage, dfamem, usage); |
CHECK_GT(usage, limit*9/10); |
- CHECK_LT(usage, limit*11/10); |
+ CHECK_LT(usage, limit + (16<<10)); // 16kB of slop okay |
} |
re->Decref(); |
} |
@@ -136,7 +132,7 @@ |
// 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, static_cast<int>(8*sizeof(int))); |
+ CHECK_LT(n, 8*sizeof(int)); |
CHECK_GT(n, 0); |
vector<bool> did(1<<n); |
@@ -225,13 +221,13 @@ |
peak_usage = m.PeakHeapGrowth(); |
delete prog; |
} |
+ re->Decref(); |
+ |
if (!UsingMallocCounter) |
return; |
- //LOG(INFO) << "usage " << usage << ", " |
- // << "peak usage " << peak_usage; |
+ //LOG(INFO) << "usage " << usage << " " << peak_usage; |
CHECK_LT(usage, 1<<n); |
CHECK_LT(peak_usage, 1<<n); |
- re->Decref(); |
} |
// Helper thread: searches for match, which should match, |