| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- // Implements Atomics according to http://tc39.github.io/ecmascript_sharedmem/shmem.html
- //----------------------------------------------------------------------------
- #pragma once
- namespace Js
- {
- class AtomicsObject
- {
- public:
- class EntryInfo
- {
- public:
- static FunctionInfo Add;
- static FunctionInfo And;
- static FunctionInfo CompareExchange;
- static FunctionInfo Exchange;
- static FunctionInfo IsLockFree;
- static FunctionInfo Load;
- static FunctionInfo Or;
- static FunctionInfo Store;
- static FunctionInfo Sub;
- static FunctionInfo Wait;
- static FunctionInfo Wake;
- static FunctionInfo Xor;
- };
- static Var EntryAdd(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryAnd(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryCompareExchange(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryExchange(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryIsLockFree(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryLoad(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryOr(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryStore(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntrySub(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryWait(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryWake(RecyclableObject* function, CallInfo callInfo, ...);
- static Var EntryXor(RecyclableObject* function, CallInfo callInfo, ...);
- private:
- static Var ValidateSharedIntegerTypedArray(Var typedArray, ScriptContext *scriptContext, bool onlyInt32);
- static uint32 ValidateAtomicAccess(Var typedArray, Var index, ScriptContext *scriptContext);
- static TypedArrayBase * ValidateAndGetTypedArray(Var typedArray, Var index, __out uint32 *accessIndex, ScriptContext *scriptContext, bool onlyInt32 = false);
- };
- }
|