From 952b1f6d71a0e7b4663cde1c3bb9a2e6af79db5a Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 1 Aug 2013 17:15:52 -0400 Subject: [PATCH] Performance: Improve Ember.Object.create speed --- .../javascripts/external_development/ember.js | 23 +++++++++---------- .../javascripts/external_production/ember.js | 23 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/external_development/ember.js b/app/assets/javascripts/external_development/ember.js index 281a5be913a..eb28f82d2cc 100755 --- a/app/assets/javascripts/external_development/ember.js +++ b/app/assets/javascripts/external_development/ember.js @@ -3509,15 +3509,6 @@ ChainNodePrototype.didChange = function(suppressEvent) { if (this._parent) { this._parent.chainDidChange(this, this._key, 1); } }; -Ember.finishChains = function(obj) { - var m = metaFor(obj, false), chains = m.chains; - if (chains) { - if (chains.value() !== obj) { - m.chains = chains = chains.copy(obj); - } - chains.didChange(true); - } -}; })(); @@ -11817,7 +11808,6 @@ var set = Ember.set, get = Ember.get, generateGuid = Ember.generateGuid, meta = Ember.meta, rewatch = Ember.rewatch, - finishChains = Ember.finishChains, destroy = Ember.destroy, schedule = Ember.run.schedule, Mixin = Ember.Mixin, @@ -11917,9 +11907,18 @@ function makeCtor() { } } } + finishPartial(this, m); + var hasChains = (typeof m.chains) !== "undefined"; delete m.proto; - finishChains(this); + + if (hasChains) { + if (m.chains.value() !== this) { + m.chains = m.chains.copy(this); + } + m.chains.didChange(true); + } + this.init.apply(this, arguments); }; @@ -17344,7 +17343,7 @@ Ember.View = Ember.CoreView.extend( */ _elementDidChange: Ember.observer(function() { this.forEachChildView(function(view) { - var meta = Em.meta(view); + var meta = Ember.meta(view); delete meta.cache['element']; }); }, 'element'), diff --git a/app/assets/javascripts/external_production/ember.js b/app/assets/javascripts/external_production/ember.js index 1ca609403f9..043f32fa233 100644 --- a/app/assets/javascripts/external_production/ember.js +++ b/app/assets/javascripts/external_production/ember.js @@ -3344,15 +3344,6 @@ ChainNodePrototype.didChange = function(suppressEvent) { if (this._parent) { this._parent.chainDidChange(this, this._key, 1); } }; -Ember.finishChains = function(obj) { - var m = metaFor(obj, false), chains = m.chains; - if (chains) { - if (chains.value() !== obj) { - m.chains = chains = chains.copy(obj); - } - chains.didChange(true); - } -}; })(); @@ -11650,7 +11641,6 @@ var set = Ember.set, get = Ember.get, generateGuid = Ember.generateGuid, meta = Ember.meta, rewatch = Ember.rewatch, - finishChains = Ember.finishChains, destroy = Ember.destroy, schedule = Ember.run.schedule, Mixin = Ember.Mixin, @@ -11748,9 +11738,18 @@ function makeCtor() { } } } + finishPartial(this, m); + var hasChains = (typeof m.chains) !== "undefined"; delete m.proto; - finishChains(this); + + if (hasChains) { + if (m.chains.value() !== this) { + m.chains = m.chains.copy(this); + } + m.chains.didChange(true); + } + this.init.apply(this, arguments); }; @@ -17165,7 +17164,7 @@ Ember.View = Ember.CoreView.extend( */ _elementDidChange: Ember.observer(function() { this.forEachChildView(function(view) { - var meta = Em.meta(view); + var meta = Ember.meta(view); delete meta.cache['element']; }); }, 'element'),