summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/IndexingHeader.h
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
commit881da28418d380042aa95a97f0cbd42560a64f7c (patch)
treea794dff3274695e99c651902dde93d934ea7a5af /Source/JavaScriptCore/runtime/IndexingHeader.h
parent7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff)
parent0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff)
downloadqtwebkit-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.h21
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;
};