mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-03-01 22:25:47 +01:00
After some profiling, give all modules a common prototype.
This commit is contained in:
@@ -10,8 +10,7 @@ try {
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("addons", {
|
defineModule("addons", {
|
||||||
exports: ["AddonManager", "Addons", "Addon", "addons"],
|
exports: ["AddonManager", "Addons", "Addon", "addons"],
|
||||||
require: ["services"],
|
require: ["services"]
|
||||||
use: ["completion", "config", "io", "messages", "prefs", "template", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var callResult = function callResult(method) {
|
var callResult = function callResult(method) {
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ if (!Object.keys)
|
|||||||
|
|
||||||
let getGlobalForObject = Cu.getGlobalForObject || function (obj) obj.__parent__;
|
let getGlobalForObject = Cu.getGlobalForObject || function (obj) obj.__parent__;
|
||||||
|
|
||||||
|
let jsmodules = {};
|
||||||
let use = {};
|
let use = {};
|
||||||
let loaded = {};
|
let loaded = {};
|
||||||
let currentModule;
|
let currentModule;
|
||||||
@@ -132,18 +133,15 @@ function defineModule(name, params, module) {
|
|||||||
|
|
||||||
module.NAME = name;
|
module.NAME = name;
|
||||||
module.EXPORTED_SYMBOLS = params.exports || [];
|
module.EXPORTED_SYMBOLS = params.exports || [];
|
||||||
|
delete module.File;
|
||||||
|
|
||||||
defineModule.loadLog.push("[Begin " + name + "]");
|
defineModule.loadLog.push("[Begin " + name + "]");
|
||||||
defineModule.prefix += " ";
|
defineModule.prefix += " ";
|
||||||
for (let [, mod] in Iterator(params.require || []))
|
|
||||||
require(module, mod);
|
|
||||||
|
|
||||||
for (let [, mod] in Iterator(params.use || []))
|
for (let [, mod] in Iterator(params.require || []))
|
||||||
if (loaded.hasOwnProperty(mod))
|
require(jsmodules, mod, null, name);
|
||||||
require(module, mod, "use");
|
module.__proto__ = jsmodules;
|
||||||
else {
|
|
||||||
use[mod] = use[mod] || [];
|
|
||||||
use[mod].push(module);
|
|
||||||
}
|
|
||||||
module._lastModule = currentModule;
|
module._lastModule = currentModule;
|
||||||
currentModule = module;
|
currentModule = module;
|
||||||
module.startTime = Date.now();
|
module.startTime = Date.now();
|
||||||
@@ -189,14 +187,12 @@ function endModule() {
|
|||||||
defineModule.prefix = defineModule.prefix.slice(0, -2);
|
defineModule.prefix = defineModule.prefix.slice(0, -2);
|
||||||
defineModule.loadLog.push("(End " + currentModule.NAME + ")");
|
defineModule.loadLog.push("(End " + currentModule.NAME + ")");
|
||||||
|
|
||||||
for (let [, mod] in Iterator(use[currentModule.NAME] || []))
|
|
||||||
require(mod, currentModule.NAME, "use");
|
|
||||||
|
|
||||||
loaded[currentModule.NAME] = 1;
|
loaded[currentModule.NAME] = 1;
|
||||||
|
require(jsmodules, currentModule.NAME);
|
||||||
currentModule = currentModule._lastModule;
|
currentModule = currentModule._lastModule;
|
||||||
}
|
}
|
||||||
|
|
||||||
function require(obj, name, from) {
|
function require(obj, name, from, targetName) {
|
||||||
try {
|
try {
|
||||||
if (arguments.length === 1)
|
if (arguments.length === 1)
|
||||||
[obj, name] = [{}, obj];
|
[obj, name] = [{}, obj];
|
||||||
@@ -204,7 +200,8 @@ function require(obj, name, from) {
|
|||||||
let caller = Components.stack.caller;
|
let caller = Components.stack.caller;
|
||||||
|
|
||||||
if (!loaded[name])
|
if (!loaded[name])
|
||||||
defineModule.loadLog.push((from || "require") + ": loading " + name + " into " + (obj.NAME || caller.filename + ":" + caller.lineNumber));
|
defineModule.loadLog.push((from || "require") + ": loading " + name +
|
||||||
|
" into " + (targetName || obj.NAME || caller.filename + ":" + caller.lineNumber));
|
||||||
|
|
||||||
JSMLoader.load(name + ".jsm", obj);
|
JSMLoader.load(name + ".jsm", obj);
|
||||||
return obj;
|
return obj;
|
||||||
@@ -228,8 +225,7 @@ defineModule("base", {
|
|||||||
"isGenerator", "isinstance", "isObject", "isString", "isSubclass", "iter", "iterAll",
|
"isGenerator", "isinstance", "isObject", "isString", "isSubclass", "iter", "iterAll",
|
||||||
"iterOwnProperties", "keys", "memoize", "octal", "properties", "require", "set", "update",
|
"iterOwnProperties", "keys", "memoize", "octal", "properties", "require", "set", "update",
|
||||||
"values", "withCallerGlobal"
|
"values", "withCallerGlobal"
|
||||||
],
|
]
|
||||||
use: ["config", "services", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
function Runnable(self, func, args) {
|
function Runnable(self, func, args) {
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ try {
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("commands", {
|
defineModule("commands", {
|
||||||
exports: ["ArgType", "Command", "Commands", "CommandOption", "Ex", "commands"],
|
exports: ["ArgType", "Command", "Commands", "CommandOption", "Ex", "commands"],
|
||||||
require: ["contexts", "messages", "util"],
|
require: ["contexts", "messages", "util"]
|
||||||
use: ["config", "help", "options", "services", "template"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ try {
|
|||||||
|
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("completion", {
|
defineModule("completion", {
|
||||||
exports: ["CompletionContext", "Completion", "completion"],
|
exports: ["CompletionContext", "Completion", "completion"]
|
||||||
use: ["config", "messages", "template", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ let global = this;
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("config", {
|
defineModule("config", {
|
||||||
exports: ["ConfigBase", "Config", "config"],
|
exports: ["ConfigBase", "Config", "config"],
|
||||||
require: ["dom", "protocol", "services", "storage", "util", "template"],
|
require: ["dom", "protocol", "services", "storage", "util", "template"]
|
||||||
use: ["io", "messages", "prefs", "styles"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
function AboutHandler() {}
|
function AboutHandler() {}
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ try {
|
|||||||
|
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("contexts", {
|
defineModule("contexts", {
|
||||||
exports: ["Contexts", "Group", "contexts"],
|
exports: ["Contexts", "Group", "contexts"]
|
||||||
use: ["commands", "messages", "options", "services", "storage", "styles", "template", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var Const = function Const(val) Class.Property({ enumerable: true, value: val });
|
var Const = function Const(val) Class.Property({ enumerable: true, value: val });
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("dom", {
|
defineModule("dom", {
|
||||||
exports: ["$", "DOM", "NS", "XBL", "XHTML", "XUL"],
|
exports: ["$", "DOM", "NS", "XBL", "XHTML", "XUL"]
|
||||||
use: ["config", "highlight", "template", "util"],
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var XBL = Namespace("xbl", "http://www.mozilla.org/xbl");
|
var XBL = Namespace("xbl", "http://www.mozilla.org/xbl");
|
||||||
|
|||||||
@@ -6,8 +6,7 @@
|
|||||||
|
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("downloads", {
|
defineModule("downloads", {
|
||||||
exports: ["Download", "Downloads", "downloads"],
|
exports: ["Download", "Downloads", "downloads"]
|
||||||
use: ["io", "messages", "prefs", "services", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/DownloadUtils.jsm", this);
|
Cu.import("resource://gre/modules/DownloadUtils.jsm", this);
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("finder", {
|
defineModule("finder", {
|
||||||
exports: ["RangeFind", "RangeFinder", "rangefinder"],
|
exports: ["RangeFind", "RangeFinder", "rangefinder"],
|
||||||
require: ["prefs"],
|
require: ["prefs"]
|
||||||
use: ["dom", "messages", "services", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
function equals(a, b) XPCNativeWrapper(a) == XPCNativeWrapper(b);
|
function equals(a, b) XPCNativeWrapper(a) == XPCNativeWrapper(b);
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("help", {
|
defineModule("help", {
|
||||||
exports: ["help"],
|
exports: ["help"],
|
||||||
require: ["dom", "protocol", "services", "util"],
|
require: ["dom", "protocol", "services", "util"]
|
||||||
use: ["config", "highlight", "messages", "template"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var Help = Module("Help", {
|
var Help = Module("Help", {
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("highlight", {
|
defineModule("highlight", {
|
||||||
exports: ["Highlight", "Highlights", "highlight"],
|
exports: ["Highlight", "Highlights", "highlight"],
|
||||||
require: ["services", "styles", "util"],
|
require: ["services", "styles", "util"]
|
||||||
use: ["messages", "template"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var Highlight = Struct("class", "selector", "sites",
|
var Highlight = Struct("class", "selector", "sites",
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ try {
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("io", {
|
defineModule("io", {
|
||||||
exports: ["IO", "io"],
|
exports: ["IO", "io"],
|
||||||
require: ["services"],
|
require: ["services"]
|
||||||
use: ["config", "help", "messages", "storage", "styles", "template", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
// TODO: why are we passing around strings rather than file objects?
|
// TODO: why are we passing around strings rather than file objects?
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ try {
|
|||||||
|
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("javascript", {
|
defineModule("javascript", {
|
||||||
exports: ["JavaScript", "javascript"],
|
exports: ["JavaScript", "javascript"]
|
||||||
use: ["messages", "services", "template", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
let isPrototypeOf = Object.prototype.isPrototypeOf;
|
let isPrototypeOf = Object.prototype.isPrototypeOf;
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ try {
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("options", {
|
defineModule("options", {
|
||||||
exports: ["Option", "Options", "ValueError", "options"],
|
exports: ["Option", "Options", "ValueError", "options"],
|
||||||
require: ["contexts", "messages", "storage"],
|
require: ["contexts", "messages", "storage"]
|
||||||
use: ["commands", "completion", "config", "prefs", "services", "styles", "template", "util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
/** @scope modules */
|
/** @scope modules */
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ try {
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("prefs", {
|
defineModule("prefs", {
|
||||||
exports: ["Prefs", "localPrefs", "prefs"],
|
exports: ["Prefs", "localPrefs", "prefs"],
|
||||||
require: ["services", "util"],
|
require: ["services", "util"]
|
||||||
use: ["config", "messages", "template"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var Prefs = Module("prefs", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), {
|
var Prefs = Module("prefs", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ try {
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("sanitizer", {
|
defineModule("sanitizer", {
|
||||||
exports: ["Range", "Sanitizer", "sanitizer"],
|
exports: ["Range", "Sanitizer", "sanitizer"],
|
||||||
use: ["config"],
|
|
||||||
require: ["messages", "prefs", "services", "storage", "template", "util"]
|
require: ["messages", "prefs", "services", "storage", "template", "util"]
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ try {
|
|||||||
var global = this;
|
var global = this;
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("services", {
|
defineModule("services", {
|
||||||
exports: ["services"],
|
exports: ["services"]
|
||||||
use: ["util"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ var Storage = Module("Storage", {
|
|||||||
* @param {boolean} checkPWD Whether to allow expansion relative to the
|
* @param {boolean} checkPWD Whether to allow expansion relative to the
|
||||||
* current directory. @default true
|
* current directory. @default true
|
||||||
*/
|
*/
|
||||||
var File = Class("File", {
|
this.File = Class("File", {
|
||||||
init: function (path, checkPWD) {
|
init: function (path, checkPWD) {
|
||||||
let file = services.File();
|
let file = services.File();
|
||||||
|
|
||||||
@@ -621,6 +621,6 @@ var File = Class("File", {
|
|||||||
|
|
||||||
endModule();
|
endModule();
|
||||||
|
|
||||||
// catch(e){dump(e.fileName+":"+e.lineNumber+": "+e+"\n" + e.stack);}
|
// catch(e){ dump(e + "\n" + (e.stack || Error().stack)); Components.utils.reportError(e) }
|
||||||
|
|
||||||
// vim: set fdm=marker sw=4 sts=4 et ft=javascript:
|
// vim: set fdm=marker sw=4 sts=4 et ft=javascript:
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("styles", {
|
defineModule("styles", {
|
||||||
exports: ["Style", "Styles", "styles"],
|
exports: ["Style", "Styles", "styles"],
|
||||||
require: ["services", "util"],
|
require: ["services", "util"]
|
||||||
use: ["contexts", "dom", "messages", "template"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
function cssUri(css) "chrome-data:text/css," + encodeURI(css);
|
function cssUri(css) "chrome-data:text/css," + encodeURI(css);
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("template", {
|
defineModule("template", {
|
||||||
exports: ["Binding", "Template", "template"],
|
exports: ["Binding", "Template", "template"],
|
||||||
require: ["util"],
|
require: ["util"]
|
||||||
use: ["help", "messages", "services"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
default xml namespace = XHTML;
|
default xml namespace = XHTML;
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
let global=this;
|
||||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||||
defineModule("util", {
|
defineModule("util", {
|
||||||
exports: ["DOM", "$", "FailedAssertion", "Math", "NS", "Point", "Util", "XBL", "XHTML", "XUL", "util"],
|
exports: ["DOM", "$", "FailedAssertion", "Math", "NS", "Point", "Util", "XBL", "XHTML", "XUL", "util"],
|
||||||
require: ["dom", "services"],
|
require: ["dom", "services"]
|
||||||
use: ["commands", "config", "highlight", "messages", "overlay", "storage", "template"]
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
var FailedAssertion = Class("FailedAssertion", ErrorBase, {
|
var FailedAssertion = Class("FailedAssertion", ErrorBase, {
|
||||||
|
|||||||
Reference in New Issue
Block a user