summaryrefslogtreecommitdiff
path: root/lib/internal/per_context.js
blob: 725ba403df2348dfb8cea6dc0c92553fa5ecb2ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// This file is compiled as if it's wrapped in a function with arguments
// passed by node::NewContext()
/* global global */

'use strict';

// https://github.com/nodejs/node/issues/14909
if (global.Intl) delete global.Intl.v8BreakIterator;

// https://github.com/nodejs/node/issues/21219
// Adds Atomics.notify and warns on first usage of Atomics.wake
// https://github.com/v8/v8/commit/c79206b363 adds Atomics.notify so
// now we alias Atomics.wake to notify so that we can remove it
// semver major without worrying about V8.

const AtomicsNotify = global.Atomics.notify;
const ReflectApply = global.Reflect.apply;

const warning = 'Atomics.wake will be removed in a future version, ' +
  'use Atomics.notify instead.';

let wakeWarned = false;
function wake(typedArray, index, count) {
  if (!wakeWarned) {
    wakeWarned = true;

    if (global.process !== undefined) {
      global.process.emitWarning(warning, 'Atomics');
    } else {
      global.console.error(`Atomics: ${warning}`);
    }
  }

  return ReflectApply(AtomicsNotify, this, arguments);
}

global.Object.defineProperties(global.Atomics, {
  wake: {
    value: wake,
    writable: true,
    enumerable: false,
    configurable: true,
  },
});