aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-18 19:22:09 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-18 19:22:09 -0700
commit1c11fdd98530b6d35e51c0eba14fb1f375d05229 (patch)
treebd471ce02003d0e1d16dfe773d1ed4d0acdcb499 /tools/js-optimizer.js
parentd6cff2177ec065aa14f228ab547abc29ef37b248 (diff)
parent327b6f859e95be71e5613f24cc1c9d4f4b97c15f (diff)
merge
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js18
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 213e2257..b51fe22e 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -24,11 +24,14 @@ if (ENVIRONMENT_IS_NODE) {
};
var nodeFS = require('fs');
+ var nodePath = require('path');
read = function(filename) {
+ filename = nodePath['normalize'](filename);
var ret = nodeFS['readFileSync'](filename).toString();
- if (!ret && filename[0] != '/') {
- filename = __dirname.split('/').slice(0, -1).join('/') + '/src/' + filename;
+ // The path is absolute if the normalized version is the same as the resolved.
+ if (!ret && filename != nodePath['resolve'](filename)) {
+ filename = path.join(__dirname, '..', 'src', filename);
ret = nodeFS['readFileSync'](filename).toString();
}
return ret;
@@ -46,9 +49,9 @@ if (ENVIRONMENT_IS_NODE) {
this['read'] = function(f) { snarf(f) };
}
- if (!this['arguments']) {
+ if (typeof scriptArgs != 'undefined') {
arguments_ = scriptArgs;
- } else {
+ } else if (typeof arguments != 'undefined') {
arguments_ = arguments;
}
@@ -97,12 +100,15 @@ if (typeof print === 'undefined') {
// Fix read for our location
read = function(filename) {
- if (filename[0] != '/') filename = __dirname.split('/').slice(0, -1).join('/') + '/src/' + filename;
+ // The path is absolute if the normalized version is the same as the resolved.
+ filename = path.normalize(filename);
+ if (filename != path.resolve(filename)) filename = path.join(__dirname, '..', 'src', filename);
return fs.readFileSync(filename).toString();
}
var uglify = require('../tools/eliminator/node_modules/uglify-js');
var fs = require('fs');
+var path = require('path');
// Load some modules
@@ -382,7 +388,7 @@ function simplifyExpressionsPre(ast) {
function simplifyBitops(ast) {
var USEFUL_BINARY_OPS = set('<<', '>>', '|', '&', '^');
- var SAFE_BINARY_OPS = set('+', '-', '*', '/', '%');
+ var SAFE_BINARY_OPS = set('+', '-', '*', '%'); // division is unsafe as it creates non-ints in JS
var ZERO = ['num', 0];
var rerun = true;
while (rerun) {