From 6882a04fb36642862b11efe514251d32070c3d65 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Thu, 25 Aug 2016 19:20:41 +0300 Subject: Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443) Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev --- Source/JavaScriptCore/runtime/IndexingHeader.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'Source/JavaScriptCore/runtime/IndexingHeader.h') diff --git a/Source/JavaScriptCore/runtime/IndexingHeader.h b/Source/JavaScriptCore/runtime/IndexingHeader.h index 145b61876..a88643239 100644 --- a/Source/JavaScriptCore/runtime/IndexingHeader.h +++ b/Source/JavaScriptCore/runtime/IndexingHeader.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 Apple Inc. All rights reserved. + * Copyright (C) 2012, 2014 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -27,10 +27,10 @@ #define IndexingHeader_h #include "PropertyStorage.h" -#include namespace JSC { +class ArrayBuffer; class Butterfly; class LLIntOffsetsExtractor; class Structure; @@ -44,6 +44,7 @@ public: static ptrdiff_t offsetOfIndexingHeader() { return -static_cast(sizeof(IndexingHeader)); } + static ptrdiff_t offsetOfArrayBuffer() { return OBJECT_OFFSETOF(IndexingHeader, u.typedArray.buffer); } static ptrdiff_t offsetOfPublicLength() { return OBJECT_OFFSETOF(IndexingHeader, u.lengths.publicLength); } static ptrdiff_t offsetOfVectorLength() { return OBJECT_OFFSETOF(IndexingHeader, u.lengths.vectorLength); } @@ -61,9 +62,12 @@ public: u.lengths.vectorLength = length; } - uint32_t publicLength() { return u.lengths.publicLength; } + uint32_t publicLength() const { return u.lengths.publicLength; } void setPublicLength(uint32_t auxWord) { u.lengths.publicLength = auxWord; } + ArrayBuffer* arrayBuffer() { return u.typedArray.buffer; } + void setArrayBuffer(ArrayBuffer* buffer) { u.typedArray.buffer = buffer; } + static IndexingHeader* from(Butterfly* butterfly) { return reinterpret_cast(butterfly) - 1; @@ -76,7 +80,12 @@ public: static IndexingHeader* from(ArrayStorage* arrayStorage) { - return reinterpret_cast(arrayStorage) - 1; + return const_cast(from(const_cast(arrayStorage))); + } + + static const IndexingHeader* from(const ArrayStorage* arrayStorage) + { + return reinterpret_cast(arrayStorage) - 1; } static IndexingHeader* fromEndOf(PropertyStorage propertyStorage) @@ -117,6 +126,10 @@ private: uint32_t publicLength; // The meaning of this field depends on the array type, but for all JSArrays we rely on this being the publicly visible length (array.length). uint32_t vectorLength; // The length of the indexed property storage. The actual size of the storage depends on this, and the type. } lengths; + + struct { + ArrayBuffer* buffer; + } typedArray; } u; }; -- cgit v1.2.1