diff options
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; }; |