Change in code/re2[master]: Make it easier to swap in a scalable reader-writer mutex.

2 views
Skip to first unread message

Paul Wankadia (Gerrit)

unread,
Feb 24, 2021, 4:58:31 AM2/24/21
to Paul Wankadia, re2...@googlegroups.com

Paul Wankadia has uploaded this change for review.

View Change

Make it easier to swap in a scalable reader-writer mutex.

Change-Id: I04837646dfb41c2b545af54312dac63f47473dd6
---
M re2/dfa.cc
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/re2/dfa.cc b/re2/dfa.cc
index 3f6571d..f292ff1 100644
--- a/re2/dfa.cc
+++ b/re2/dfa.cc
@@ -167,6 +167,9 @@
typedef std::unordered_set<State*, StateHash, StateEqual> StateSet;

private:
+ // Make it easier to swap in a scalable reader-writer mutex.
+ using CacheMutex = Mutex;
+
enum {
// Indices into start_ for unanchored searches.
// Add kStartAnchored for anchored searches.
@@ -331,7 +334,7 @@
// while holding cache_mutex_ for writing, to avoid interrupting other
// readers. Any State* pointers are only valid while cache_mutex_
// is held.
- Mutex cache_mutex_;
+ CacheMutex cache_mutex_;
int64_t mem_budget_; // Total memory budget for all States.
int64_t state_budget_; // Amount of memory remaining for new States.
StateSet state_cache_; // All States computed so far.
@@ -1106,7 +1109,7 @@

class DFA::RWLocker {
public:
- explicit RWLocker(Mutex* mu);
+ explicit RWLocker(CacheMutex* mu);
~RWLocker();

// If the lock is only held for reading right now,
@@ -1116,14 +1119,14 @@
void LockForWriting();

private:
- Mutex* mu_;
+ CacheMutex* mu_;
bool writing_;

RWLocker(const RWLocker&) = delete;
RWLocker& operator=(const RWLocker&) = delete;
};

-DFA::RWLocker::RWLocker(Mutex* mu) : mu_(mu), writing_(false) {
+DFA::RWLocker::RWLocker(CacheMutex* mu) : mu_(mu), writing_(false) {
mu_->ReaderLock();
}


To view, visit change 58430. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: re2
Gerrit-Branch: master
Gerrit-Change-Id: I04837646dfb41c2b545af54312dac63f47473dd6
Gerrit-Change-Number: 58430
Gerrit-PatchSet: 1
Gerrit-Owner: Paul Wankadia <jun...@google.com>
Gerrit-MessageType: newchange

Paul Wankadia (Gerrit)

unread,
Feb 24, 2021, 4:59:19 AM2/24/21
to Paul Wankadia, re2...@googlegroups.com

Patch set 1:Code-Review +2

View Change

    To view, visit change 58430. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: re2
    Gerrit-Branch: master
    Gerrit-Change-Id: I04837646dfb41c2b545af54312dac63f47473dd6
    Gerrit-Change-Number: 58430
    Gerrit-PatchSet: 1
    Gerrit-Owner: Paul Wankadia <jun...@google.com>
    Gerrit-Reviewer: Paul Wankadia <jun...@google.com>
    Gerrit-Comment-Date: Wed, 24 Feb 2021 09:59:15 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    Gerrit-MessageType: comment

    Paul Wankadia (Gerrit)

    unread,
    Feb 24, 2021, 4:59:23 AM2/24/21
    to Paul Wankadia, re2...@googlegroups.com

    Paul Wankadia submitted this change.

    View Change

    Approvals: Paul Wankadia: Looks good to me, approved
    Make it easier to swap in a scalable reader-writer mutex.

    Change-Id: I04837646dfb41c2b545af54312dac63f47473dd6
    Reviewed-on: https://code-review.googlesource.com/c/re2/+/58430
    Reviewed-by: Paul Wankadia <jun...@google.com>

    To view, visit change 58430. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: re2
    Gerrit-Branch: master
    Gerrit-Change-Id: I04837646dfb41c2b545af54312dac63f47473dd6
    Gerrit-Change-Number: 58430
    Gerrit-PatchSet: 2
    Gerrit-Owner: Paul Wankadia <jun...@google.com>
    Gerrit-Reviewer: Paul Wankadia <jun...@google.com>
    Gerrit-MessageType: merged
    Reply all
    Reply to author
    Forward
    0 new messages