Bug 826025 - Part 2: Add some variables to cache properties which are accessed many times. r=cpeterson
authorTetsuharu OHZEKI <saneyuki.s.snyk@gmail.com>
Thu, 03 Jan 2013 17:18:44 -0500 (2013-01-03)
changeset 117517 29080e5ecaedfd7b98e99c24b1844d2e90acfb99
parent 117516 190318a9118a09e92c181e33c97936e3d6efbb16
child 117518 6abeaaa94f24fc7c168c718074f7f9a2801f5f59
push id24101
push usereakhgari@mozilla.com
push dateFri, 04 Jan 2013 17:24:40 +0000 (2013-01-04)
treeherdermozilla-central@259982750c29 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerscpeterson
bugs826025
milestone20.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 826025 - Part 2: Add some variables to cache properties which are accessed many times. r=cpeterson
mobile/android/chrome/content/browser.js
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -3937,38 +3937,38 @@ var BrowserEventHandler = {
         // the user wanted, and neither can any non-root sub-frame, cancel the
         // override so that Java can handle panning the main document.
         let data = JSON.parse(aData);
 
         // round the scroll amounts because they come in as floats and might be
         // subject to minor rounding errors because of zoom values. I've seen values
         // like 0.99 come in here and get truncated to 0; this avoids that problem.
         let zoom = BrowserApp.selectedTab._zoom;
-        data.x = Math.round(data.x / zoom);
-        data.y = Math.round(data.y / zoom);
+        let x = Math.round(data.x / zoom);
+        let y = Math.round(data.y / zoom);
 
         if (this._firstScrollEvent) {
           while (this._scrollableElement != null &&
-                 !this._elementCanScroll(this._scrollableElement, data.x, data.y))
+                 !this._elementCanScroll(this._scrollableElement, x, y))
             this._scrollableElement = this._findScrollableElement(this._scrollableElement, false);
 
           let doc = BrowserApp.selectedBrowser.contentDocument;
           if (this._scrollableElement == null ||
               this._scrollableElement == doc.body ||
               this._scrollableElement == doc.documentElement) {
             sendMessageToJava({ gecko: { type: "Panning:CancelOverride" } });
             return;
           }
 
           this._firstScrollEvent = false;
         }
 
         // Scroll the scrollable element
-        if (this._elementCanScroll(this._scrollableElement, data.x, data.y)) {
-          this._scrollElementBy(this._scrollableElement, data.x, data.y);
+        if (this._elementCanScroll(this._scrollableElement, x, y)) {
+          this._scrollElementBy(this._scrollableElement, x, y);
           sendMessageToJava({ gecko: { type: "Gesture:ScrollAck", scrolled: true } });
           SelectionHandler.subdocumentScrolled(this._scrollableElement);
         } else {
           sendMessageToJava({ gecko: { type: "Gesture:ScrollAck", scrolled: false } });
         }
 
         break;
       }
@@ -3977,24 +3977,25 @@ var BrowserEventHandler = {
         this._cancelTapHighlight();
         break;
 
       case "Gesture:SingleTap": {
         let element = this._highlightElement;
         if (element) {
           try {
             let data = JSON.parse(aData);
+            let [x, y] = [data.x, data.y];
             if (ElementTouchHelper.isElementClickable(element)) {
-              [data.x, data.y] = this._moveClickPoint(element, data.x, data.y);
-              element = ElementTouchHelper.anyElementFromPoint(data.x, data.y);
+              [x, y] = this._moveClickPoint(element, x, y);
+              element = ElementTouchHelper.anyElementFromPoint(x, y);
             }
 
-            this._sendMouseEvent("mousemove", element, data.x, data.y);
-            this._sendMouseEvent("mousedown", element, data.x, data.y);
-            this._sendMouseEvent("mouseup",   element, data.x, data.y);
+            this._sendMouseEvent("mousemove", element, x, y);
+            this._sendMouseEvent("mousedown", element, x, y);
+            this._sendMouseEvent("mouseup",   element, x, y);
 
             // See if its a input element
             if ((element instanceof HTMLInputElement && element.mozIsTextField(false)) ||
                 (element instanceof HTMLTextAreaElement))
                SelectionHandler.showThumb(element);
           } catch(e) {
             Cu.reportError(e);
           }