Bug 1388631: Don't call generateQI for every defineLazyPreferenceGetter call. r?mixedpuppy
MozReview-Commit-ID: 9n8VyXFM7bc
--- a/js/xpconnect/loader/XPCOMUtils.jsm
+++ b/js/xpconnect/loader/XPCOMUtils.jsm
@@ -404,17 +404,17 @@ this.XPCOMUtils = {
aTransform = val => val)
{
// Note: We need to keep a reference to this observer alive as long
// as aObject is alive. This means that all of our getters need to
// explicitly close over the variable that holds the object, and we
// cannot define a value in place of a getter after we read the
// preference.
let observer = {
- QueryInterface: this.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
+ QueryInterface: XPCU_lazyPreferenceObserverQI,
value: undefined,
observe(subject, topic, data) {
if (data == aPreference) {
if (aOnUpdate) {
let previous = this.value;
@@ -577,16 +577,18 @@ this.XPCOMUtils = {
Object.defineProperty(aObj, aName, {
value: aValue,
enumerable: true,
writable: false
});
},
};
+var XPCU_lazyPreferenceObserverQI = XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]);
+
XPCOMUtils.defineLazyModuleGetter(this, "Services",
"resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyServiceGetter(XPCOMUtils, "categoryManager",
"@mozilla.org/categorymanager;1",
"nsICategoryManager");
/**