summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/string-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/string-inl.h')
-rw-r--r--deps/v8/src/objects/string-inl.h26
1 files changed, 17 insertions, 9 deletions
diff --git a/deps/v8/src/objects/string-inl.h b/deps/v8/src/objects/string-inl.h
index 39f642063e..349fa31f9d 100644
--- a/deps/v8/src/objects/string-inl.h
+++ b/deps/v8/src/objects/string-inl.h
@@ -19,8 +19,17 @@
namespace v8 {
namespace internal {
-SMI_ACCESSORS(String, length, kLengthOffset)
-SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset)
+INT32_ACCESSORS(String, length, kLengthOffset)
+
+int String::synchronized_length() const {
+ return base::AsAtomic32::Acquire_Load(
+ reinterpret_cast<const int32_t*>(FIELD_ADDR(this, kLengthOffset)));
+}
+
+void String::synchronized_set_length(int value) {
+ base::AsAtomic32::Release_Store(
+ reinterpret_cast<int32_t*>(FIELD_ADDR(this, kLengthOffset)), value);
+}
CAST_ACCESSOR(ConsString)
CAST_ACCESSOR(ExternalOneByteString)
@@ -536,9 +545,9 @@ HeapObject* ThinString::unchecked_actual() const {
return reinterpret_cast<HeapObject*>(READ_FIELD(this, kActualOffset));
}
-bool ExternalString::is_short() const {
+bool ExternalString::is_uncached() const {
InstanceType type = map()->instance_type();
- return (type & kShortExternalStringMask) == kShortExternalStringTag;
+ return (type & kUncachedExternalStringMask) == kUncachedExternalStringTag;
}
Address ExternalString::resource_as_address() {
@@ -562,7 +571,7 @@ uint32_t ExternalString::resource_as_uint32() {
void ExternalString::set_uint32_as_resource(uint32_t value) {
*reinterpret_cast<uintptr_t*>(FIELD_ADDR(this, kResourceOffset)) = value;
- if (is_short()) return;
+ if (is_uncached()) return;
const char** data_field =
reinterpret_cast<const char**>(FIELD_ADDR(this, kResourceDataOffset));
*data_field = nullptr;
@@ -573,7 +582,7 @@ const ExternalOneByteString::Resource* ExternalOneByteString::resource() {
}
void ExternalOneByteString::update_data_cache() {
- if (is_short()) return;
+ if (is_uncached()) return;
const char** data_field =
reinterpret_cast<const char**>(FIELD_ADDR(this, kResourceDataOffset));
*data_field = resource()->data();
@@ -609,7 +618,7 @@ const ExternalTwoByteString::Resource* ExternalTwoByteString::resource() {
}
void ExternalTwoByteString::update_data_cache() {
- if (is_short()) return;
+ if (is_uncached()) return;
const uint16_t** data_field =
reinterpret_cast<const uint16_t**>(FIELD_ADDR(this, kResourceDataOffset));
*data_field = resource()->data();
@@ -733,8 +742,7 @@ class String::SubStringRange::iterator final {
typedef uc16* pointer;
typedef uc16& reference;
- iterator(const iterator& other)
- : content_(other.content_), offset_(other.offset_) {}
+ iterator(const iterator& other) = default;
uc16 operator*() { return content_.Get(offset_); }
bool operator==(const iterator& other) const {