summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/string-comparator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/string-comparator.cc')
-rw-r--r--deps/v8/src/objects/string-comparator.cc24
1 files changed, 14 insertions, 10 deletions
diff --git a/deps/v8/src/objects/string-comparator.cc b/deps/v8/src/objects/string-comparator.cc
index 79ec348c71..3330f772ff 100644
--- a/deps/v8/src/objects/string-comparator.cc
+++ b/deps/v8/src/objects/string-comparator.cc
@@ -9,17 +9,19 @@
namespace v8 {
namespace internal {
-void StringComparator::State::Init(String string) {
- ConsString cons_string = String::VisitFlat(this, string);
+void StringComparator::State::Init(
+ String string, const SharedStringAccessGuardIfNeeded& access_guard) {
+ ConsString cons_string = String::VisitFlat(this, string, 0, access_guard);
iter_.Reset(cons_string);
if (!cons_string.is_null()) {
int offset;
string = iter_.Next(&offset);
- String::VisitFlat(this, string, offset);
+ String::VisitFlat(this, string, offset, access_guard);
}
}
-void StringComparator::State::Advance(int consumed) {
+void StringComparator::State::Advance(
+ int consumed, const SharedStringAccessGuardIfNeeded& access_guard) {
DCHECK(consumed <= length_);
// Still in buffer.
if (length_ != consumed) {
@@ -36,13 +38,15 @@ void StringComparator::State::Advance(int consumed) {
String next = iter_.Next(&offset);
DCHECK_EQ(0, offset);
DCHECK(!next.is_null());
- String::VisitFlat(this, next);
+ String::VisitFlat(this, next, 0, access_guard);
}
-bool StringComparator::Equals(String string_1, String string_2) {
+bool StringComparator::Equals(
+ String string_1, String string_2,
+ const SharedStringAccessGuardIfNeeded& access_guard) {
int length = string_1.length();
- state_1_.Init(string_1);
- state_2_.Init(string_2);
+ state_1_.Init(string_1, access_guard);
+ state_2_.Init(string_2, access_guard);
while (true) {
int to_check = std::min(state_1_.length_, state_2_.length_);
DCHECK(to_check > 0 && to_check <= length);
@@ -65,8 +69,8 @@ bool StringComparator::Equals(String string_1, String string_2) {
length -= to_check;
// Exit condition. Strings are equal.
if (length == 0) return true;
- state_1_.Advance(to_check);
- state_2_.Advance(to_check);
+ state_1_.Advance(to_check, access_guard);
+ state_2_.Advance(to_check, access_guard);
}
}