// Copyright (C) 2018 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: |
    An Array of all representable Well-Known Intrinsic Objects
defines: [WellKnownIntrinsicObjects]
---*/

const WellKnownIntrinsicObjects = [
  {
    intrinsicName: "%Array%",
    globalNameOrSource: "Array"
  },
  {
    intrinsicName: "%ArrayBuffer%",
    globalNameOrSource: "ArrayBuffer"
  },
  {
    intrinsicName: "%ArrayBufferPrototype%",
    globalNameOrSource: "ArrayBuffer.prototype"
  },
  {
    intrinsicName: "%ArrayIteratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf([][Symbol.iterator]())"
  },
  {
    intrinsicName: "%ArrayPrototype%",
    globalNameOrSource: "Array.prototype"
  },
  {
    intrinsicName: "%ArrayProto_entries%",
    globalNameOrSource: "Array.prototype.entries"
  },
  {
    intrinsicName: "%ArrayProto_forEach%",
    globalNameOrSource: "Array.prototype.forEach"
  },
  {
    intrinsicName: "%ArrayProto_keys%",
    globalNameOrSource: "Array.prototype.keys"
  },
  {
    intrinsicName: "%ArrayProto_values%",
    globalNameOrSource: "Array.prototype.values"
  },
  {
    intrinsicName: "%AsyncFromSyncIteratorPrototype%",
    globalNameOrSource: "undefined"
  },
  {
    intrinsicName: "%AsyncFunction%",
    globalNameOrSource: "(async function() {}).constructor"
  },
  {
    intrinsicName: "%AsyncFunctionPrototype%",
    globalNameOrSource: "(async function() {}).constructor.prototype"
  },
  {
    intrinsicName: "%AsyncGenerator%",
    globalNameOrSource: "Object.getPrototypeOf((async function * () {})())"
  },
  {
    intrinsicName: "%AsyncGeneratorFunction%",
    globalNameOrSource: "Object.getPrototypeOf(async function * () {})"
  },
  {
    intrinsicName: "%AsyncGeneratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(async function * () {}).prototype"
  },
  {
    intrinsicName: "%AsyncIteratorPrototype%",
    globalNameOrSource: "((async function * () {})())[Symbol.asyncIterator]()"
  },
  {
    intrinsicName: "%Atomics%",
    globalNameOrSource: "Atomics"
  },
  {
    intrinsicName: "%Boolean%",
    globalNameOrSource: "Boolean"
  },
  {
    intrinsicName: "%BooleanPrototype%",
    globalNameOrSource: "Boolean.prototype"
  },
  {
    intrinsicName: "%DataView%",
    globalNameOrSource: "DataView"
  },
  {
    intrinsicName: "%DataViewPrototype%",
    globalNameOrSource: "DataView.prototype"
  },
  {
    intrinsicName: "%Date%",
    globalNameOrSource: "Date"
  },
  {
    intrinsicName: "%DatePrototype%",
    globalNameOrSource: "Date.prototype"
  },
  {
    intrinsicName: "%decodeURI%",
    globalNameOrSource: "decodeURI"
  },
  {
    intrinsicName: "%decodeURIComponent%",
    globalNameOrSource: "decodeURIComponent"
  },
  {
    intrinsicName: "%encodeURI%",
    globalNameOrSource: "encodeURI"
  },
  {
    intrinsicName: "%encodeURIComponent%",
    globalNameOrSource: "encodeURIComponent"
  },
  {
    intrinsicName: "%Error%",
    globalNameOrSource: "Error"
  },
  {
    intrinsicName: "%ErrorPrototype%",
    globalNameOrSource: "Error.prototype"
  },
  {
    intrinsicName: "%eval%",
    globalNameOrSource: "eval"
  },
  {
    intrinsicName: "%EvalError%",
    globalNameOrSource: "EvalError"
  },
  {
    intrinsicName: "%EvalErrorPrototype%",
    globalNameOrSource: "EvalError.prototype"
  },
  {
    intrinsicName: "%Float32Array%",
    globalNameOrSource: "Float32Array"
  },
  {
    intrinsicName: "%Float32ArrayPrototype%",
    globalNameOrSource: "Float32Array.prototype"
  },
  {
    intrinsicName: "%Float64Array%",
    globalNameOrSource: "Float64Array"
  },
  {
    intrinsicName: "%Float64ArrayPrototype%",
    globalNameOrSource: "Float64Array.prototype"
  },
  {
    intrinsicName: "%Function%",
    globalNameOrSource: "Function"
  },
  {
    intrinsicName: "%FunctionPrototype%",
    globalNameOrSource: "Function.prototype"
  },
  {
    intrinsicName: "%Generator%",
    globalNameOrSource: "Object.getPrototypeOf((function * () {})())"
  },
  {
    intrinsicName: "%GeneratorFunction%",
    globalNameOrSource: "Object.getPrototypeOf(function * () {})"
  },
  {
    intrinsicName: "%GeneratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(function * () {}).prototype"
  },
  {
    intrinsicName: "%Int8Array%",
    globalNameOrSource: "Int8Array"
  },
  {
    intrinsicName: "%Int8ArrayPrototype%",
    globalNameOrSource: "Int8Array.prototype"
  },
  {
    intrinsicName: "%Int16Array%",
    globalNameOrSource: "Int16Array"
  },
  {
    intrinsicName: "%Int16ArrayPrototype%",
    globalNameOrSource: "Int16Array.prototype"
  },
  {
    intrinsicName: "%Int32Array%",
    globalNameOrSource: "Int32Array"
  },
  {
    intrinsicName: "%Int32ArrayPrototype%",
    globalNameOrSource: "Int32Array.prototype"
  },
  {
    intrinsicName: "%isFinite%",
    globalNameOrSource: "isFinite"
  },
  {
    intrinsicName: "%isNaN%",
    globalNameOrSource: "isNaN"
  },
  {
    intrinsicName: "%IteratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))"
  },
  {
    intrinsicName: "%JSON%",
    globalNameOrSource: "JSON"
  },
  {
    intrinsicName: "%JSONParse%",
    globalNameOrSource: "JSON.parse"
  },
  {
    intrinsicName: "%Map%",
    globalNameOrSource: "Map"
  },
  {
    intrinsicName: "%MapIteratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(new Map()[Symbol.iterator]())"
  },
  {
    intrinsicName: "%MapPrototype%",
    globalNameOrSource: "Map.prototype"
  },
  {
    intrinsicName: "%Math%",
    globalNameOrSource: "Math"
  },
  {
    intrinsicName: "%Number%",
    globalNameOrSource: "Number"
  },
  {
    intrinsicName: "%NumberPrototype%",
    globalNameOrSource: "Number.prototype"
  },
  {
    intrinsicName: "%Object%",
    globalNameOrSource: "Object"
  },
  {
    intrinsicName: "%ObjectPrototype%",
    globalNameOrSource: "Object.prototype"
  },
  {
    intrinsicName: "%ObjProto_toString%",
    globalNameOrSource: "Object.prototype.toString"
  },
  {
    intrinsicName: "%ObjProto_valueOf%",
    globalNameOrSource: "Object.prototype.valueOf"
  },
  {
    intrinsicName: "%parseFloat%",
    globalNameOrSource: "parseFloat"
  },
  {
    intrinsicName: "%parseInt%",
    globalNameOrSource: "parseInt"
  },
  {
    intrinsicName: "%Promise%",
    globalNameOrSource: "Promise"
  },
  {
    intrinsicName: "%PromisePrototype%",
    globalNameOrSource: "Promise.prototype"
  },
  {
    intrinsicName: "%PromiseProto_then%",
    globalNameOrSource: "Promise.prototype.then"
  },
  {
    intrinsicName: "%Promise_all%",
    globalNameOrSource: "Promise.all"
  },
  {
    intrinsicName: "%Promise_reject%",
    globalNameOrSource: "Promise.reject"
  },
  {
    intrinsicName: "%Promise_resolve%",
    globalNameOrSource: "Promise.resolve"
  },
  {
    intrinsicName: "%Proxy%",
    globalNameOrSource: "Proxy"
  },
  {
    intrinsicName: "%RangeError%",
    globalNameOrSource: "RangeError"
  },
  {
    intrinsicName: "%RangeErrorPrototype%",
    globalNameOrSource: "RangeError.prototype"
  },
  {
    intrinsicName: "%ReferenceError%",
    globalNameOrSource: "ReferenceError"
  },
  {
    intrinsicName: "%ReferenceErrorPrototype%",
    globalNameOrSource: "ReferenceError.prototype"
  },
  {
    intrinsicName: "%Reflect%",
    globalNameOrSource: "Reflect"
  },
  {
    intrinsicName: "%RegExp%",
    globalNameOrSource: "RegExp"
  },
  {
    intrinsicName: "%RegExpPrototype%",
    globalNameOrSource: "RegExp.prototype"
  },
  {
    intrinsicName: "%Set%",
    globalNameOrSource: "Set"
  },
  {
    intrinsicName: "%SetIteratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(new Set()[Symbol.iterator]())"
  },
  {
    intrinsicName: "%SetPrototype%",
    globalNameOrSource: "Set.prototype"
  },
  {
    intrinsicName: "%SharedArrayBuffer%",
    globalNameOrSource: "SharedArrayBuffer"
  },
  {
    intrinsicName: "%SharedArrayBufferPrototype%",
    globalNameOrSource: "SharedArrayBuffer.prototype"
  },
  {
    intrinsicName: "%String%",
    globalNameOrSource: "String"
  },
  {
    intrinsicName: "%StringIteratorPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(new String()[Symbol.iterator]())"
  },
  {
    intrinsicName: "%StringPrototype%",
    globalNameOrSource: "String.prototype"
  },
  {
    intrinsicName: "%Symbol%",
    globalNameOrSource: "Symbol"
  },
  {
    intrinsicName: "%SymbolPrototype%",
    globalNameOrSource: "Symbol.prototype"
  },
  {
    intrinsicName: "%SyntaxError%",
    globalNameOrSource: "SyntaxError"
  },
  {
    intrinsicName: "%SyntaxErrorPrototype%",
    globalNameOrSource: "SyntaxError.prototype"
  },
  {
    intrinsicName: "%ThrowTypeError%",
    globalNameOrSource: "(function() { 'use strict'; return Object.getOwnPropertyDescriptor(arguments, 'callee').get })()"
  },
  {
    intrinsicName: "%TypedArray%",
    globalNameOrSource: "Object.getPrototypeOf(Uint8Array)"
  },
  {
    intrinsicName: "%TypedArrayPrototype%",
    globalNameOrSource: "Object.getPrototypeOf(Uint8Array).prototype"
  },
  {
    intrinsicName: "%TypeError%",
    globalNameOrSource: "TypeError"
  },
  {
    intrinsicName: "%TypeErrorPrototype%",
    globalNameOrSource: "TypeError.prototype"
  },
  {
    intrinsicName: "%Uint8Array%",
    globalNameOrSource: "Uint8Array"
  },
  {
    intrinsicName: "%Uint8ArrayPrototype%",
    globalNameOrSource: "Uint8Array.prototype"
  },
  {
    intrinsicName: "%Uint8ClampedArray%",
    globalNameOrSource: "Uint8ClampedArray"
  },
  {
    intrinsicName: "%Uint8ClampedArrayPrototype%",
    globalNameOrSource: "Uint8ClampedArray.prototype"
  },
  {
    intrinsicName: "%Uint16Array%",
    globalNameOrSource: "Uint16Array"
  },
  {
    intrinsicName: "%Uint16ArrayPrototype%",
    globalNameOrSource: "Uint16Array.prototype"
  },
  {
    intrinsicName: "%Uint32Array%",
    globalNameOrSource: "Uint32Array"
  },
  {
    intrinsicName: "%Uint32ArrayPrototype%",
    globalNameOrSource: "Uint32Array.prototype"
  },
  {
    intrinsicName: "%URIError%",
    globalNameOrSource: "URIError"
  },
  {
    intrinsicName: "%URIErrorPrototype%",
    globalNameOrSource: "URIError.prototype"
  },
  {
    intrinsicName: "%WeakMap%",
    globalNameOrSource: "WeakMap"
  },
  {
    intrinsicName: "%WeakMapPrototype%",
    globalNameOrSource: "WeakMap.prototype"
  },
  {
    intrinsicName: "%WeakSet%",
    globalNameOrSource: "WeakSet"
  },
  {
    intrinsicName: "%WeakSetPrototype%",
    globalNameOrSource: "WeakSet.prototype"
  }
];


WellKnownIntrinsicObjects.forEach(wkio => {
  var actual;

  try {
    actual = new Function("return " + wkio.globalNameOrSource)();
  } catch (exception) {
    // Nothing to do here.
  }

  wkio.reference = actual;
});
