diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-08-24 15:57:31 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-08-26 16:59:33 +0000 |
commit | e4e220fb568e22a4da7e6bd3d28ac34038041759 (patch) | |
tree | 2327058e1997f3b3d73a0313ce96fe5fe7e7c777 /src/qml/jsruntime/qv4typedarray_p.h | |
parent | 7bdb46c5aae3da345653fe91fbe9281b39015497 (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.h | 26 |
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 { |