aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4typedarray_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-08-24 15:57:31 +0200
committerLars Knoll <lars.knoll@qt.io>2018-08-26 16:59:33 +0000
commite4e220fb568e22a4da7e6bd3d28ac34038041759 (patch)
tree2327058e1997f3b3d73a0313ce96fe5fe7e7c777 /src/qml/jsruntime/qv4typedarray_p.h
parent7bdb46c5aae3da345653fe91fbe9281b39015497 (diff)
Partial Atomics support
Implement support for basic atomic operations on SharedArrayBuffers. Half of the methods still need a proper implementation. Change-Id: Ia88da358e0c2ae6d28e9bcc1feb8980b6f51a812 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4typedarray_p.h')
-rw-r--r--src/qml/jsruntime/qv4typedarray_p.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4typedarray_p.h b/src/qml/jsruntime/qv4typedarray_p.h
index a5eabb168c..0a26bcb533 100644
--- a/src/qml/jsruntime/qv4typedarray_p.h
+++ b/src/qml/jsruntime/qv4typedarray_p.h
@@ -60,30 +60,44 @@ namespace QV4 {
struct ArrayBuffer;
-typedef ReturnedValue (*TypedArrayRead)(const char *data);
-typedef void (*TypedArrayWrite)(char *data, Value value);
-
enum TypedArrayType {
Int8Array,
UInt8Array,
- UInt8ClampedArray,
Int16Array,
UInt16Array,
Int32Array,
UInt32Array,
+ UInt8ClampedArray,
Float32Array,
Float64Array,
NTypedArrayTypes
};
+enum AtomicModifyOps {
+ AtomicAdd,
+ AtomicAnd,
+ AtomicExchange,
+ AtomicOr,
+ AtomicSub,
+ AtomicXor,
+ NAtomicModifyOps
+};
+
struct TypedArrayOperations {
+ typedef ReturnedValue (*Read)(const char *data);
+ typedef void (*Write)(char *data, Value value);
+ typedef ReturnedValue (*AtomicModify)(char *data, Value value);
+
template<typename T>
static constexpr TypedArrayOperations create(const char *name);
+ template<typename T>
+ static constexpr TypedArrayOperations createWithAtomics(const char *name);
int bytesPerElement;
const char *name;
- TypedArrayRead read;
- TypedArrayWrite write;
+ Read read;
+ Write write;
+ AtomicModify atomicModifyOps[AtomicModifyOps::NAtomicModifyOps];
};
namespace Heap {