From 34705d1d70f08e7038686d5abf139b7a4c72548c Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Tue, 25 Apr 2017 12:47:09 -0700 Subject: [PATCH] [BUGFIX Beta] [PERF] avoid extra `meta` lookup in constructor --- packages/ember-metal/lib/events.js | 13 ++++++++----- packages/ember-runtime/lib/system/core_object.js | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/ember-metal/lib/events.js b/packages/ember-metal/lib/events.js index 14d6fc70196..3cc93227091 100644 --- a/packages/ember-metal/lib/events.js +++ b/packages/ember-metal/lib/events.js @@ -200,16 +200,19 @@ export function watchedEvents(obj) { @param {String} eventName @param {Array} params Optional parameters for each listener. @param {Array} actions Optional array of actions (listeners). + @param {Meta} meta Optional meta to lookup listeners @return true @public */ -export function sendEvent(obj, eventName, params, actions) { - if (!actions) { - let meta = peekMeta(obj); - actions = meta && meta.matchingListeners(eventName); +export function sendEvent(obj, eventName, params, actions, _meta) { + if (actions === undefined) { + let meta = _meta || peekMeta(obj); + actions = typeof meta === 'object' && + meta !== null && + meta.matchingListeners(eventName); } - if (!actions || actions.length === 0) { return; } + if (actions === undefined || actions.length === 0) { return; } for (let i = actions.length - 3; i >= 0; i -= 3) { // looping in reverse for once listeners let target = actions[i]; diff --git a/packages/ember-runtime/lib/system/core_object.js b/packages/ember-runtime/lib/system/core_object.js index e23c8f06aaf..d5239e72b3b 100644 --- a/packages/ember-runtime/lib/system/core_object.js +++ b/packages/ember-runtime/lib/system/core_object.js @@ -168,7 +168,7 @@ function makeCtor() { m.proto = proto; finishChains(m); - sendEvent(this, 'init'); + sendEvent(this, 'init', undefined, undefined, undefined, m); } static willReopen() {