From aec459fbc1b6901130fb4d00733b43ac9e39add5 Mon Sep 17 00:00:00 2001 From: Matthew Beale Date: Sat, 10 Dec 2016 18:54:54 -0800 Subject: [PATCH] Only freeze helper args if weakmap present --- .../ember-glimmer/lib/utils/references.js | 19 +++++++++++++------ packages/ember-metal/lib/index.js | 1 + packages/ember-metal/lib/meta.js | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/ember-glimmer/lib/utils/references.js b/packages/ember-glimmer/lib/utils/references.js index d318135fc94..520ee57e2a9 100644 --- a/packages/ember-glimmer/lib/utils/references.js +++ b/packages/ember-glimmer/lib/utils/references.js @@ -1,5 +1,6 @@ import { symbol, EmptyObject } from 'ember-utils'; import { + HAS_NATIVE_WEAKMAP, get, set, tagForProperty, @@ -289,8 +290,10 @@ export class SimpleHelperReference extends CachedReference { let namedValue = named.value(); runInDebug(() => { - Object.freeze(positionalValue); - Object.freeze(namedValue); + if (HAS_NATIVE_WEAKMAP) { + Object.freeze(positionalValue); + Object.freeze(namedValue); + } }); let result = helper(positionalValue, namedValue); @@ -324,8 +327,10 @@ export class SimpleHelperReference extends CachedReference { let namedValue = named.value(); runInDebug(() => { - Object.freeze(positionalValue); - Object.freeze(namedValue); + if (HAS_NATIVE_WEAKMAP) { + Object.freeze(positionalValue); + Object.freeze(namedValue); + } }); return helper(positionalValue, namedValue); @@ -354,8 +359,10 @@ export class ClassBasedHelperReference extends CachedReference { let namedValue = named.value(); runInDebug(() => { - Object.freeze(positionalValue); - Object.freeze(namedValue); + if (HAS_NATIVE_WEAKMAP) { + Object.freeze(positionalValue); + Object.freeze(namedValue); + } }); return instance.compute(positionalValue, namedValue); diff --git a/packages/ember-metal/lib/index.js b/packages/ember-metal/lib/index.js index 7ff41ffee0b..441352647af 100644 --- a/packages/ember-metal/lib/index.js +++ b/packages/ember-metal/lib/index.js @@ -43,6 +43,7 @@ export { setDispatchOverride } from './error_handler'; export { + HAS_NATIVE_WEAKMAP, META_DESC, meta, peekMeta diff --git a/packages/ember-metal/lib/meta.js b/packages/ember-metal/lib/meta.js index f76ecdbcfd8..cfd1b09d6df 100644 --- a/packages/ember-metal/lib/meta.js +++ b/packages/ember-metal/lib/meta.js @@ -460,7 +460,7 @@ if (isEnabled('mandatory-setter')) { }; } -const HAS_NATIVE_WEAKMAP = (function() { +export const HAS_NATIVE_WEAKMAP = (function() { // detect if `WeakMap` is even present let hasWeakMap = typeof WeakMap === 'function'; if (!hasWeakMap) { return false; }