1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-15 10:25:56 +00:00

build custom layer of Dojo to speed up loading of tt-rss (refs #293)

This commit is contained in:
Andrew Dolgov
2011-03-04 19:02:28 +03:00
parent cfad9259a6
commit a089699c89
144 changed files with 55627 additions and 13766 deletions

View File

@@ -5,46 +5,83 @@
*/
/*
* SpiderMonkey host environment
*/
if(dojo.config["baseUrl"]){
dojo.baseUrl=dojo.config["baseUrl"];
dojo.baseUrl = dojo.config["baseUrl"];
}else{
dojo.baseUrl="./";
dojo.baseUrl = "./";
}
dojo._name="spidermonkey";
dojo.isSpidermonkey=true;
dojo.exit=function(_1){
quit(_1);
dojo._name = 'spidermonkey';
/*=====
dojo.isSpidermonkey = {
// summary: Detect spidermonkey
};
if(typeof print=="function"){
console.debug=print;
=====*/
dojo.isSpidermonkey = true;
dojo.exit = function(exitcode){
quit(exitcode);
}
if(typeof line2pc=="undefined"){
throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global");
if(typeof print == "function"){
console.debug = print;
}
dojo._spidermonkeyCurrentFile=function(_2){
var s="";
try{
throw Error("whatever");
if(typeof line2pc == 'undefined'){
throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global");
}
catch(e){
s=e.stack;
dojo._spidermonkeyCurrentFile = function(depth){
//
// This is a hack that determines the current script file by parsing a
// generated stack trace (relying on the non-standard "stack" member variable
// of the SpiderMonkey Error object).
//
// If param depth is passed in, it'll return the script file which is that far down
// the stack, but that does require that you know how deep your stack is when you are
// calling.
//
var s = '';
try{
throw Error("whatever");
}catch(e){
s = e.stack;
}
// lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101
var matches = s.match(/[^@]*\.js/gi);
if(!matches){
throw Error("could not parse stack string: '" + s + "'");
}
var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1];
if(!fname){
throw Error("could not find file name in stack string '" + s + "'");
}
//print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'");
return fname;
}
var _3=s.match(/[^@]*\.js/gi);
if(!_3){
throw Error("could not parse stack string: '"+s+"'");
// print(dojo._spidermonkeyCurrentFile(0));
dojo._loadUri = function(uri){
// spidermonkey load() evaluates the contents into the global scope (which
// is what we want).
// TODO: sigh, load() does not return a useful value.
// Perhaps it is returning the value of the last thing evaluated?
var ok = load(uri);
// console.log("spidermonkey load(", uri, ") returned ", ok);
return 1;
}
var _4=(typeof _2!="undefined"&&_2)?_3[_2+1]:_3[_3.length-1];
if(!_4){
throw Error("could not find file name in stack string '"+s+"'");
}
return _4;
};
dojo._loadUri=function(_5){
var ok=load(_5);
return 1;
};
//Register any module paths set up in djConfig. Need to do this
//in the hostenvs since hostenv_browser can read djConfig from a
//script tag's attribute.
if(dojo.config["modulePaths"]){
for(var param in dojo.config["modulePaths"]){
dojo.registerModulePath(param,dojo.config["modulePaths"][param]);
}
for(var param in dojo.config["modulePaths"]){
dojo.registerModulePath(param, dojo.config["modulePaths"][param]);
}
}