diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-30 12:48:17 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-30 12:48:17 +0200 |
commit | 881da28418d380042aa95a97f0cbd42560a64f7c (patch) | |
tree | a794dff3274695e99c651902dde93d934ea7a5af /Source/JavaScriptCore/runtime/IndexingHeader.h | |
parent | 7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff) | |
parent | 0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff) | |
download | qtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz |
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
Diffstat (limited to 'Source/JavaScriptCore/runtime/IndexingHeader.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/IndexingHeader.h | 21 |
1 files changed, 17 insertions, 4 deletions
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 <wtf/Platform.h> namespace JSC { +class ArrayBuffer; class Butterfly; class LLIntOffsetsExtractor; class Structure; @@ -44,6 +44,7 @@ public: static ptrdiff_t offsetOfIndexingHeader() { return -static_cast<ptrdiff_t>(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<IndexingHeader*>(butterfly) - 1; @@ -76,7 +80,12 @@ public: static IndexingHeader* from(ArrayStorage* arrayStorage) { - return reinterpret_cast<IndexingHeader*>(arrayStorage) - 1; + return const_cast<IndexingHeader*>(from(const_cast<const ArrayStorage*>(arrayStorage))); + } + + static const IndexingHeader* from(const ArrayStorage* arrayStorage) + { + return reinterpret_cast<const IndexingHeader*>(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; }; |