| Index: src/harmony-atomics.js
|
| diff --git a/src/harmony-atomics.js b/src/harmony-atomics.js
|
| deleted file mode 100644
|
| index 7412494e30368e9e984174f72b642aa97ed3f7d7..0000000000000000000000000000000000000000
|
| --- a/src/harmony-atomics.js
|
| +++ /dev/null
|
| @@ -1,213 +0,0 @@
|
| -// Copyright 2015 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -(function(global, utils) {
|
| -
|
| -"use strict";
|
| -
|
| -%CheckIsBootstrapping();
|
| -
|
| -// -------------------------------------------------------------------
|
| -// Imports
|
| -
|
| -var GlobalObject = global.Object;
|
| -var MathMax;
|
| -var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol");
|
| -
|
| -utils.Import(function(from) {
|
| - MathMax = from.MathMax;
|
| -});
|
| -
|
| -// -------------------------------------------------------------------
|
| -
|
| -
|
| -function CheckSharedIntegerTypedArray(ia) {
|
| - if (!%IsSharedIntegerTypedArray(ia)) {
|
| - throw MakeTypeError(kNotIntegerSharedTypedArray, ia);
|
| - }
|
| -}
|
| -
|
| -function CheckSharedInteger32TypedArray(ia) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - if (%_ClassOf(ia) !== 'Int32Array') {
|
| - throw MakeTypeError(kNotInt32SharedTypedArray, ia);
|
| - }
|
| -}
|
| -
|
| -//-------------------------------------------------------------------
|
| -
|
| -function AtomicsCompareExchangeJS(sta, index, oldValue, newValue) {
|
| - CheckSharedIntegerTypedArray(sta);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(sta)) {
|
| - return UNDEFINED;
|
| - }
|
| - oldValue = TO_NUMBER(oldValue);
|
| - newValue = TO_NUMBER(newValue);
|
| - return %_AtomicsCompareExchange(sta, index, oldValue, newValue);
|
| -}
|
| -
|
| -function AtomicsLoadJS(sta, index) {
|
| - CheckSharedIntegerTypedArray(sta);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(sta)) {
|
| - return UNDEFINED;
|
| - }
|
| - return %_AtomicsLoad(sta, index);
|
| -}
|
| -
|
| -function AtomicsStoreJS(sta, index, value) {
|
| - CheckSharedIntegerTypedArray(sta);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(sta)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsStore(sta, index, value);
|
| -}
|
| -
|
| -function AtomicsAddJS(ia, index, value) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsAdd(ia, index, value);
|
| -}
|
| -
|
| -function AtomicsSubJS(ia, index, value) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsSub(ia, index, value);
|
| -}
|
| -
|
| -function AtomicsAndJS(ia, index, value) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsAnd(ia, index, value);
|
| -}
|
| -
|
| -function AtomicsOrJS(ia, index, value) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsOr(ia, index, value);
|
| -}
|
| -
|
| -function AtomicsXorJS(ia, index, value) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsXor(ia, index, value);
|
| -}
|
| -
|
| -function AtomicsExchangeJS(ia, index, value) {
|
| - CheckSharedIntegerTypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - value = TO_NUMBER(value);
|
| - return %_AtomicsExchange(ia, index, value);
|
| -}
|
| -
|
| -function AtomicsIsLockFreeJS(size) {
|
| - return %_AtomicsIsLockFree(size);
|
| -}
|
| -
|
| -// Futexes
|
| -
|
| -function AtomicsFutexWaitJS(ia, index, value, timeout) {
|
| - CheckSharedInteger32TypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - if (IS_UNDEFINED(timeout)) {
|
| - timeout = INFINITY;
|
| - } else {
|
| - timeout = TO_NUMBER(timeout);
|
| - if (NUMBER_IS_NAN(timeout)) {
|
| - timeout = INFINITY;
|
| - } else {
|
| - timeout = MathMax(0, timeout);
|
| - }
|
| - }
|
| - return %AtomicsFutexWait(ia, index, value, timeout);
|
| -}
|
| -
|
| -function AtomicsFutexWakeJS(ia, index, count) {
|
| - CheckSharedInteger32TypedArray(ia);
|
| - index = TO_INTEGER(index);
|
| - if (index < 0 || index >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - count = MathMax(0, TO_INTEGER(count));
|
| - return %AtomicsFutexWake(ia, index, count);
|
| -}
|
| -
|
| -function AtomicsFutexWakeOrRequeueJS(ia, index1, count, value, index2) {
|
| - CheckSharedInteger32TypedArray(ia);
|
| - index1 = TO_INTEGER(index1);
|
| - count = MathMax(0, TO_INTEGER(count));
|
| - value = TO_INT32(value);
|
| - index2 = TO_INTEGER(index2);
|
| - if (index1 < 0 || index1 >= %_TypedArrayGetLength(ia) ||
|
| - index2 < 0 || index2 >= %_TypedArrayGetLength(ia)) {
|
| - return UNDEFINED;
|
| - }
|
| - return %AtomicsFutexWakeOrRequeue(ia, index1, count, value, index2);
|
| -}
|
| -
|
| -// -------------------------------------------------------------------
|
| -
|
| -function AtomicsConstructor() {}
|
| -
|
| -var Atomics = new AtomicsConstructor();
|
| -
|
| -%InternalSetPrototype(Atomics, GlobalObject.prototype);
|
| -%AddNamedProperty(global, "Atomics", Atomics, DONT_ENUM);
|
| -%FunctionSetInstanceClassName(AtomicsConstructor, 'Atomics');
|
| -
|
| -%AddNamedProperty(Atomics, toStringTagSymbol, "Atomics", READ_ONLY | DONT_ENUM);
|
| -
|
| -// These must match the values in src/futex-emulation.h
|
| -utils.InstallConstants(Atomics, [
|
| - "OK", 0,
|
| - "NOTEQUAL", -1,
|
| - "TIMEDOUT", -2,
|
| -]);
|
| -
|
| -utils.InstallFunctions(Atomics, DONT_ENUM, [
|
| - "compareExchange", AtomicsCompareExchangeJS,
|
| - "load", AtomicsLoadJS,
|
| - "store", AtomicsStoreJS,
|
| - "add", AtomicsAddJS,
|
| - "sub", AtomicsSubJS,
|
| - "and", AtomicsAndJS,
|
| - "or", AtomicsOrJS,
|
| - "xor", AtomicsXorJS,
|
| - "exchange", AtomicsExchangeJS,
|
| - "isLockFree", AtomicsIsLockFreeJS,
|
| - "futexWait", AtomicsFutexWaitJS,
|
| - "futexWake", AtomicsFutexWakeJS,
|
| - "futexWakeOrRequeue", AtomicsFutexWakeOrRequeueJS,
|
| -]);
|
| -
|
| -})
|
|
|