Skip to content

Commit

Permalink
Merge branch 'master' into 3.11
Browse files Browse the repository at this point in the history
  • Loading branch information
RobbieTheWagner committed Aug 9, 2019
2 parents 40c60fe + bd90b6a commit 434c4ae
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 52 deletions.
33 changes: 32 additions & 1 deletion ember_debug/models/profile-manager.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ProfileNode from './profile-node';
const Ember = window.Ember;
const { run: { scheduleOnce } } = Ember;
const { run: { later, scheduleOnce } } = Ember;

/**
* A class for keeping track of active rendering profiles as a list.
Expand All @@ -11,6 +11,7 @@ export default class ProfileManager {
this.current = null;
this.currentSet = [];
this._profilesAddedCallbacks = [];
this.queue = [];
}

began(timestamp, payload, now) {
Expand Down Expand Up @@ -39,6 +40,19 @@ export default class ProfileManager {
return callback.call(context);
}

/**
* Push a new profile into the queue
* @param info
* @return {number}
*/
addToQueue(info) {
const index = this.queue.push(info);
if (index === 1) {
later(this._flush.bind(this), 50);
}
return index - 1;
}

clearProfiles() {
this.profiles.length = 0;
}
Expand All @@ -60,6 +74,23 @@ export default class ProfileManager {
}
}

_flush() {
let entry, i;
for (i = 0; i < this.queue.length; i++) {
entry = this.queue[i];
if (entry.type === 'began') {
// If there was an error during rendering `entry.endedIndex` never gets set.
if (entry.endedIndex) {
this.queue[entry.endedIndex].profileNode = this.began(entry.timestamp, entry.payload, entry.now);
}
} else {
this.ended(entry.timestamp, entry.payload, entry.profileNode);
}

}
this.queue.length = 0;
}

_profilesFinished() {
return this.wrapForErrors(this, function() {
const firstNode = this.currentSet[0];
Expand Down
2 changes: 1 addition & 1 deletion ember_debug/object-inspector.js
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ export default EmberObject.extend(PortMixin, {
dropObject(objectId) {
let object = this.sentObjects[objectId];

if (object.reopen) {
if (object && object.reopen) {
object.reopen({ willDestroy: object._oldWillDestroy });
delete object._oldWillDestroy;
}
Expand Down
11 changes: 6 additions & 5 deletions ember_debug/render-debug.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import PortMixin from 'ember-debug/mixins/port-mixin';
import { addToQueue, flatten, setupQueue } from './utils/render-utils';
import { flatten } from './utils/render-utils';
import ProfileManager from './models/profile-manager';

const Ember = window.Ember;
const { computed: { readOnly }, subscribe, Object: EmberObject } = Ember;

// Initial setup, that has to occur before the EmberObject init for some reason
let { profileManager, queue } = setupQueue();
let profileManager = new ProfileManager();
_subscribeToRenderEvents();

export default EmberObject.extend(PortMixin, {
Expand Down Expand Up @@ -92,7 +93,7 @@ function _subscribeToRenderEvents() {
now: Date.now()
};

return addToQueue(info);
return profileManager.addToQueue(info);
},

after(name, timestamp, payload, beganIndex) {
Expand All @@ -102,8 +103,8 @@ function _subscribeToRenderEvents() {
payload
};

const index = addToQueue(endedInfo);
queue[beganIndex].endedIndex = index;
const index = profileManager.addToQueue(endedInfo);
profileManager.queue[beganIndex].endedIndex = index;
}
});
}
44 changes: 0 additions & 44 deletions ember_debug/utils/render-utils.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,3 @@
import ProfileManager from 'ember-debug/models/profile-manager';

const Ember = window.Ember;
const { run: { later } } = Ember;

let profileManager, queue;

export function setupQueue() {
profileManager = new ProfileManager();
queue = [];

return { profileManager, queue };
}

/**
* Recursively flatten all profiles and their children
* @param {Profile[]} profiles An array of profiles
Expand All @@ -26,33 +12,3 @@ export function flatten(profiles, array = []) {
return array;
}

/**
* Push a new profile into the queue
* @param info
* @return {number}
*/
export function addToQueue(info) {
const index = queue.push(info);
if (index === 1) {
later(_flush, 50);
}
return index - 1;
}

function _flush() {
let entry, i;
for (i = 0; i < queue.length; i++) {
entry = queue[i];
if (entry.type === 'began') {
// If there was an error during rendering `entry.endedIndex` never gets set.
if (entry.endedIndex) {
queue[entry.endedIndex].profileNode = profileManager.began(entry.timestamp, entry.payload, entry.now);
}
} else {
profileManager.ended(entry.timestamp, entry.payload, entry.profileNode);
}

}
queue.length = 0;
}

3 changes: 2 additions & 1 deletion ember_debug/utils/type-check.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ export function isDescriptor(value) {
*/
export function getDescriptorFor(object, key) {
if (Ember.Debug.isComputed) {
return Ember.__loader.require('@ember/-internals/metal').descriptorForDecorator(object[key]);
const { descriptorForDecorator, descriptorForProperty } = Ember.__loader.require('@ember/-internals/metal');
return descriptorForDecorator(object[key]) || descriptorForProperty(object, key);
}

return object[key];
Expand Down

0 comments on commit 434c4ae

Please sign in to comment.