Skip to content

Commit

Permalink
Only freeze helper args if weakmap present
Browse files Browse the repository at this point in the history
  • Loading branch information
mixonic committed Dec 12, 2016
1 parent 2f4e846 commit aec459f
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 7 deletions.
19 changes: 13 additions & 6 deletions packages/ember-glimmer/lib/utils/references.js
@@ -1,5 +1,6 @@
import { symbol, EmptyObject } from 'ember-utils';
import {
HAS_NATIVE_WEAKMAP,
get,
set,
tagForProperty,
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions packages/ember-metal/lib/index.js
Expand Up @@ -43,6 +43,7 @@ export {
setDispatchOverride
} from './error_handler';
export {
HAS_NATIVE_WEAKMAP,
META_DESC,
meta,
peekMeta
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-metal/lib/meta.js
Expand Up @@ -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; }
Expand Down

0 comments on commit aec459f

Please sign in to comment.