forked from mirrors/gecko-dev
		
	 b744ab0807
			
		
	
	
		b744ab0807
		
	
	
	
	
		
			
			There's a lot of overhead to loading scripts from <script> tags in browser.xul. They're loaded asynchronously, and can't begin loading until after we begin loading browser.xul. They're loaded using off-main-thread compilation, which means we need to create and merge a new JS zone for each script we load that way. They don't benefit from the startup cache at all. If we load those scripts using the subscript loader, they're loaded from the preloader cache, and begin loading as early as possible. And they're all loaded into a single off-thread zone, which means there are less zones to create and merge. From a quick test, this seems to save about 20-40ms on Windows ts_paint talos runs. The main downside is that subscript loader scripts don't benefit from lazy parsing, so we might wind up increasing memory usage if most of the functions in those scripts aren't used very often. But we should hopefully be able to fix that by migrating more browser JS to lazy loading. MozReview-Commit-ID: Lozb0d0QweC --HG-- extra : rebase_source : 069a003dfd1d6d66540da814a1fd19742c4fca26 extra : amend_source : b93e0ef7b320c99f4a27ddf6e8af6a681b6dba0f
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable file
		
	
	
	
	
| # -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 | |
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| 
 | |
| # If you update this list, you may need to add a mapping within the following
 | |
| # file so that ESLint works correctly:
 | |
| # tools/lint/eslint/eslint-plugin-mozilla/lib/environments/browser-window.js
 | |
| 
 | |
| <script type="application/javascript">
 | |
| Components.utils.import("resource://gre/modules/Services.jsm");
 | |
| 
 | |
| for (let script of [
 | |
|   "chrome://browser/content/browser.js",
 | |
| 
 | |
|   "chrome://browser/content/browser-captivePortal.js",
 | |
|   "chrome://browser/content/browser-compacttheme.js",
 | |
|   "chrome://browser/content/browser-feeds.js",
 | |
|   "chrome://browser/content/browser-media.js",
 | |
|   "chrome://browser/content/browser-pageActions.js",
 | |
|   "chrome://browser/content/browser-places.js",
 | |
|   "chrome://browser/content/browser-plugins.js",
 | |
|   "chrome://browser/content/browser-sidebar.js",
 | |
|   "chrome://browser/content/browser-tabsintitlebar.js",
 | |
|   "chrome://browser/content/browser-trackingprotection.js",
 | |
| #ifdef MOZ_DATA_REPORTING
 | |
|   "chrome://browser/content/browser-data-submission-info-bar.js",
 | |
| #endif
 | |
| #ifndef MOZILLA_OFFICIAL
 | |
|   "chrome://browser/content/browser-development-helpers.js",
 | |
| #endif
 | |
| ]) {
 | |
|   Services.scriptloader.loadSubScript(script, this);
 | |
| }
 | |
| </script>
 |