Bug 1396856: Part 1 - Remove spread call fallback overhead in event dispatch. r?zombie draft
authorKris Maglione <maglione.k@gmail.com>
Tue, 05 Sep 2017 11:20:43 -0700
changeset 659696 a97f6d4698b5c9eec28076262bb8e40b726582ec
parent 659695 7b199070805fc0472eaf8409932517700ed23d49
child 659697 4aa4ab6fe8c46ed7aa54f227ea1e90c9975fde07
push id78171
push usermaglione.k@gmail.com
push dateWed, 06 Sep 2017 06:26:38 +0000
reviewerszombie
bugs1396856
milestone57.0a1
Bug 1396856: Part 1 - Remove spread call fallback overhead in event dispatch. r?zombie MozReview-Commit-ID: 3c5p9OvRqHI
toolkit/components/extensions/ExtensionCommon.jsm
toolkit/components/extensions/ExtensionParent.jsm
--- a/toolkit/components/extensions/ExtensionCommon.jsm
+++ b/toolkit/components/extensions/ExtensionCommon.jsm
@@ -1561,36 +1561,36 @@ EventManager.prototype = {
         return true;
       }
       return false;
     };
 
     let fire = {
       sync: (...args) => {
         if (shouldFire()) {
-          return this.context.runSafe(callback, ...args);
+          return this.context.applySafe(callback, args);
         }
       },
       async: (...args) => {
         return Promise.resolve().then(() => {
           if (shouldFire()) {
-            return this.context.runSafe(callback, ...args);
+            return this.context.applySafe(callback, args);
           }
         });
       },
       raw: (...args) => {
         if (!shouldFire()) {
           throw new Error("Called raw() on unloaded/inactive context");
         }
-        return callback(...args);
+        return Reflect.apply(callback, null, args);
       },
       asyncWithoutClone: (...args) => {
         return Promise.resolve().then(() => {
           if (shouldFire()) {
-            return this.context.runSafeWithoutClone(callback, ...args);
+            return this.context.applySafeWithoutClone(callback, args);
           }
         });
       },
     };
 
 
     let unregister = this.register(fire, ...args);
     this.unregister.set(callback, unregister);
--- a/toolkit/components/extensions/ExtensionParent.jsm
+++ b/toolkit/components/extensions/ExtensionParent.jsm
@@ -411,20 +411,20 @@ class ProxyContextParent extends BaseCon
       this.pendingEventBrowser = savedBrowser;
     }
   }
 
   get cloneScope() {
     return this.sandbox;
   }
 
-  runSafe(...args) {
+  applySafe(callback, args) {
     // There's no need to clone when calling listeners for a proxied
     // context.
-    return this.runSafeWithoutClone(...args);
+    return this.applySafeWithoutClone(callback, args);
   }
 
   get xulBrowser() {
     return this.messageManagerProxy.eventTarget;
   }
 
   get parentMessageManager() {
     return this.messageManagerProxy.messageManager;