Index: third_party/re2/patches/re2-memory-optimization.patch |
diff --git a/third_party/re2/patches/re2-memory-optimization.patch b/third_party/re2/patches/re2-memory-optimization.patch |
deleted file mode 100644 |
index 05299b396cb415c7150ec25f0c0ae8e8cc6a796c..0000000000000000000000000000000000000000 |
--- a/third_party/re2/patches/re2-memory-optimization.patch |
+++ /dev/null |
@@ -1,133 +0,0 @@ |
-diff --git a/re2/prefilter_tree.cc b/re2/prefilter_tree.cc |
---- a/re2/prefilter_tree.cc |
-+++ b/re2/prefilter_tree.cc |
-@@ -107,21 +107,23 @@ void PrefilterTree::Compile(vector<string>* atom_vec) { |
- // not miss out on any regexps triggering by getting rid of a |
- // prefilter node. |
- for (int i = 0; i < entries_.size(); i++) { |
-- IntMap* parents = entries_[i].parents; |
-+ StdIntMap* parents = entries_[i].parents; |
- if (parents->size() > 8) { |
- // This one triggers too many things. If all the parents are AND |
- // nodes and have other things guarding them, then get rid of |
- // this trigger. TODO(vsri): Adjust the threshold appropriately, |
- // make it a function of total number of nodes? |
- bool have_other_guard = true; |
-- for (IntMap::iterator it = parents->begin(); it != parents->end(); ++it) |
-+ for (StdIntMap::iterator it = parents->begin(); |
-+ it != parents->end(); ++it) { |
- have_other_guard = have_other_guard && |
-- (entries_[it->index()].propagate_up_at_count > 1); |
-+ (entries_[it->first].propagate_up_at_count > 1); |
-+ } |
- |
- if (have_other_guard) { |
-- for (IntMap::iterator it = parents->begin(); |
-+ for (StdIntMap::iterator it = parents->begin(); |
- it != parents->end(); ++it) |
-- entries_[it->index()].propagate_up_at_count -= 1; |
-+ entries_[it->first].propagate_up_at_count -= 1; |
- |
- parents->clear(); // Forget the parents |
- } |
-@@ -213,7 +215,7 @@ void PrefilterTree::AssignUniqueIds(vector<string>* atom_vec) { |
- } |
- entries_.resize(node_map_.size()); |
- |
-- // Create parent IntMap for the entries. |
-+ // Create parent StdIntMap for the entries. |
- for (int i = v.size() - 1; i >= 0; i--) { |
- Prefilter* prefilter = v[i]; |
- if (prefilter == NULL) |
-@@ -223,7 +225,7 @@ void PrefilterTree::AssignUniqueIds(vector<string>* atom_vec) { |
- continue; |
- |
- Entry* entry = &entries_[prefilter->unique_id()]; |
-- entry->parents = new IntMap(node_map_.size()); |
-+ entry->parents = new StdIntMap(); |
- } |
- |
- // Fill the entries. |
-@@ -249,7 +251,7 @@ void PrefilterTree::AssignUniqueIds(vector<string>* atom_vec) { |
- |
- case Prefilter::OR: |
- case Prefilter::AND: { |
-- IntMap uniq_child(node_map_.size()); |
-+ std::set<int> uniq_child; |
- for (int j = 0; j < prefilter->subs()->size() ; j++) { |
- Prefilter* child = (*prefilter->subs())[j]; |
- Prefilter* canonical = CanonicalNode(child); |
-@@ -258,12 +260,12 @@ void PrefilterTree::AssignUniqueIds(vector<string>* atom_vec) { |
- return; |
- } |
- int child_id = canonical->unique_id(); |
-- if (!uniq_child.has_index(child_id)) |
-- uniq_child.set_new(child_id, 1); |
-+ uniq_child.insert(child_id); |
- // To the child, we want to add to parent indices. |
- Entry* child_entry = &entries_[child_id]; |
-- if (!child_entry->parents->has_index(prefilter->unique_id())) |
-- child_entry->parents->set_new(prefilter->unique_id(), 1); |
-+ if (child_entry->parents->find(prefilter->unique_id()) == |
-+ child_entry->parents->end()) |
-+ (*child_entry->parents)[prefilter->unique_id()] = 1; |
- } |
- entry->propagate_up_at_count = |
- prefilter->op() == Prefilter::AND ? uniq_child.size() : 1; |
-@@ -329,10 +331,10 @@ void PrefilterTree::PropagateMatch(const vector<int>& atom_ids, |
- } |
- int c; |
- // Pass trigger up to parents. |
-- for (IntMap::iterator it = entry.parents->begin(); |
-+ for (StdIntMap::iterator it = entry.parents->begin(); |
- it != entry.parents->end(); |
- ++it) { |
-- int j = it->index(); |
-+ int j = it->first; |
- const Entry& parent = entries_[j]; |
- VLOG(10) << " parent= " << j << " trig= " << parent.propagate_up_at_count; |
- // Delay until all the children have succeeded. |
-@@ -364,12 +366,12 @@ void PrefilterTree::PrintDebugInfo() { |
- VLOG(10) << "#Unique Nodes: " << entries_.size(); |
- |
- for (int i = 0; i < entries_.size(); ++i) { |
-- IntMap* parents = entries_[i].parents; |
-+ StdIntMap* parents = entries_[i].parents; |
- const vector<int>& regexps = entries_[i].regexps; |
- VLOG(10) << "EntryId: " << i |
- << " N: " << parents->size() << " R: " << regexps.size(); |
-- for (IntMap::iterator it = parents->begin(); it != parents->end(); ++it) |
-- VLOG(10) << it->index(); |
-+ for (StdIntMap::iterator it = parents->begin(); it != parents->end(); ++it) |
-+ VLOG(10) << it->first; |
- } |
- VLOG(10) << "Map:"; |
- for (map<string, Prefilter*>::const_iterator iter = node_map_.begin(); |
-diff --git a/re2/prefilter_tree.h b/re2/prefilter_tree.h |
---- a/re2/prefilter_tree.h |
-+++ b/re2/prefilter_tree.h |
-@@ -16,12 +16,15 @@ |
- #ifndef RE2_PREFILTER_TREE_H_ |
- #define RE2_PREFILTER_TREE_H_ |
- |
-+#include <map> |
-+ |
- #include "util/util.h" |
- #include "util/sparse_array.h" |
- |
- namespace re2 { |
- |
- typedef SparseArray<int> IntMap; |
-+typedef std::map<int, int> StdIntMap; |
- |
- class Prefilter; |
- |
-@@ -71,7 +74,7 @@ class PrefilterTree { |
- // are two different nodes, but they share the atom 'def'. So when |
- // 'def' matches, it triggers two parents, corresponding to the two |
- // different OR nodes. |
-- IntMap* parents; |
-+ StdIntMap* parents; |
- |
- // When this node is ready to trigger the parent, what are the |
- // regexps that are triggered. |