OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 (function(global, utils) { | 5 (function(global, utils) { |
6 | 6 |
7 "use strict"; | 7 "use strict"; |
8 | 8 |
9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
10 | 10 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 index2 = TO_INTEGER(index2); | 172 index2 = TO_INTEGER(index2); |
173 if (index1 < 0 || index1 >= %_TypedArrayGetLength(ia) || | 173 if (index1 < 0 || index1 >= %_TypedArrayGetLength(ia) || |
174 index2 < 0 || index2 >= %_TypedArrayGetLength(ia)) { | 174 index2 < 0 || index2 >= %_TypedArrayGetLength(ia)) { |
175 return UNDEFINED; | 175 return UNDEFINED; |
176 } | 176 } |
177 return %AtomicsFutexWakeOrRequeue(ia, index1, count, value, index2); | 177 return %AtomicsFutexWakeOrRequeue(ia, index1, count, value, index2); |
178 } | 178 } |
179 | 179 |
180 // ------------------------------------------------------------------- | 180 // ------------------------------------------------------------------- |
181 | 181 |
182 function AtomicsConstructor() {} | 182 var Atomics = global.Atomics; |
183 | |
184 var Atomics = new AtomicsConstructor(); | |
185 | |
186 %InternalSetPrototype(Atomics, GlobalObject.prototype); | |
187 %AddNamedProperty(global, "Atomics", Atomics, DONT_ENUM); | |
188 %FunctionSetInstanceClassName(AtomicsConstructor, 'Atomics'); | |
189 | 183 |
190 %AddNamedProperty(Atomics, toStringTagSymbol, "Atomics", READ_ONLY | DONT_ENUM); | 184 %AddNamedProperty(Atomics, toStringTagSymbol, "Atomics", READ_ONLY | DONT_ENUM); |
191 | 185 |
192 // These must match the values in src/futex-emulation.h | 186 // These must match the values in src/futex-emulation.h |
193 utils.InstallConstants(Atomics, [ | 187 utils.InstallConstants(Atomics, [ |
194 "OK", 0, | 188 "OK", 0, |
195 "NOTEQUAL", -1, | 189 "NOTEQUAL", -1, |
196 "TIMEDOUT", -2, | 190 "TIMEDOUT", -2, |
197 ]); | 191 ]); |
198 | 192 |
199 utils.InstallFunctions(Atomics, DONT_ENUM, [ | 193 utils.InstallFunctions(Atomics, DONT_ENUM, [ |
200 "compareExchange", AtomicsCompareExchangeJS, | 194 "compareExchange", AtomicsCompareExchangeJS, |
201 "load", AtomicsLoadJS, | 195 // "load", AtomicsLoadJS, |
202 "store", AtomicsStoreJS, | 196 "store", AtomicsStoreJS, |
203 "add", AtomicsAddJS, | 197 "add", AtomicsAddJS, |
204 "sub", AtomicsSubJS, | 198 "sub", AtomicsSubJS, |
205 "and", AtomicsAndJS, | 199 "and", AtomicsAndJS, |
206 "or", AtomicsOrJS, | 200 "or", AtomicsOrJS, |
207 "xor", AtomicsXorJS, | 201 "xor", AtomicsXorJS, |
208 "exchange", AtomicsExchangeJS, | 202 "exchange", AtomicsExchangeJS, |
209 "isLockFree", AtomicsIsLockFreeJS, | 203 "isLockFree", AtomicsIsLockFreeJS, |
210 "futexWait", AtomicsFutexWaitJS, | 204 "futexWait", AtomicsFutexWaitJS, |
211 "futexWake", AtomicsFutexWakeJS, | 205 "futexWake", AtomicsFutexWakeJS, |
212 "futexWakeOrRequeue", AtomicsFutexWakeOrRequeueJS, | 206 "futexWakeOrRequeue", AtomicsFutexWakeOrRequeueJS, |
213 ]); | 207 ]); |
214 | 208 |
215 }) | 209 }) |
OLD | NEW |