--- /dev/null
+var global = require('../internals/global');
+var shared = require('../internals/shared');
+var has = require('../internals/has');
+var uid = require('../internals/uid');
+var NATIVE_SYMBOL = require('../internals/native-symbol');
+var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
+
+var WellKnownSymbolsStore = shared('wks');
+var Symbol = global.Symbol;
+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
+
+module.exports = function (name) {
+ if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
+ if (NATIVE_SYMBOL && has(Symbol, name)) {
+ WellKnownSymbolsStore[name] = Symbol[name];
+ } else {
+ WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
+ }
+ } return WellKnownSymbolsStore[name];
+};