Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 8d45d12b5457691dac0a49a4708bc9c91f852430..4590d73a0d60720b8bb483f1c3b9419e1f6a57b9 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -843,8 +843,24 @@ bool Object::IsBoolean() const { |
TYPE_CHECKER(JSArray, JS_ARRAY_TYPE) |
-TYPE_CHECKER(JSArrayBuffer, JS_ARRAY_BUFFER_TYPE) |
-TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE) |
+ |
+ |
+bool Object::IsJSArrayBuffer() const { |
+ if (!IsHeapObject()) return false; |
+ |
+ InstanceType type = HeapObject::cast(this)->map()->instance_type(); |
+ return type == JS_ARRAY_BUFFER_TYPE || type == JS_SHARED_ARRAY_BUFFER_TYPE; |
+} |
+ |
+ |
+bool Object::IsJSTypedArray() const { |
+ if (!IsHeapObject()) return false; |
+ |
+ InstanceType type = HeapObject::cast(this)->map()->instance_type(); |
+ return type == JS_TYPED_ARRAY_TYPE || type == JS_SHARED_TYPED_ARRAY_TYPE; |
+} |
+ |
+ |
TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE) |
@@ -1965,8 +1981,10 @@ int JSObject::GetHeaderSize() { |
case JS_ARRAY_TYPE: |
return JSArray::kSize; |
case JS_ARRAY_BUFFER_TYPE: |
+ case JS_SHARED_ARRAY_BUFFER_TYPE: |
return JSArrayBuffer::kSize; |
case JS_TYPED_ARRAY_TYPE: |
+ case JS_SHARED_TYPED_ARRAY_TYPE: |
return JSTypedArray::kSize; |
case JS_DATA_VIEW_TYPE: |
return JSDataView::kSize; |
@@ -6463,6 +6481,16 @@ void JSArrayBuffer::set_is_neuterable(bool value) { |
} |
+bool JSArrayBuffer::is_shared() { |
+ return BooleanBit::get(flag(), kIsSharedBit); |
+} |
+ |
+ |
+void JSArrayBuffer::set_is_shared(bool value) { |
+ set_flag(BooleanBit::set(flag(), kIsSharedBit, value)); |
+} |
+ |
+ |
ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) |
ACCESSORS(JSArrayBuffer, weak_first_view, Object, kWeakFirstViewOffset) |
@@ -6473,6 +6501,17 @@ ACCESSORS(JSArrayBufferView, byte_length, Object, kByteLengthOffset) |
ACCESSORS(JSArrayBufferView, weak_next, Object, kWeakNextOffset) |
ACCESSORS(JSTypedArray, length, Object, kLengthOffset) |
+ |
+bool JSTypedArray::is_shared() const { |
+ return Smi::cast(READ_FIELD(this, kIsSharedOffset))->value() != 0; |
+} |
+ |
+ |
+void JSTypedArray::set_is_shared(bool value) { |
+ WRITE_FIELD(this, kIsSharedOffset, Smi::FromInt(value)); |
+} |
+ |
+ |
ACCESSORS(JSRegExp, data, Object, kDataOffset) |