diff options
-rw-r--r-- | tools/js-optimizer.js | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 57585663..9efca25f 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -2139,6 +2139,9 @@ var IGNORABLE_ELIMINATOR_SCAN_NODES = set('num', 'toplevel', 'string', 'break', var ABORTING_ELIMINATOR_SCAN_NODES = set('new', 'object', 'function', 'defun', 'for', 'while', 'array', 'throw'); // we could handle some of these, TODO, but nontrivial (e.g. for while, the condition is hit multiple times after the body) function isTempDoublePtrAccess(node) { // these are used in bitcasts; they are not really affecting memory, and should cause no invalidation + // XXX note that we assume they have no effect. this is only true due to the compiler emitting (write, read) + // using the comma operator, so they are not split up. Otherwise, we would need to invalidate + // tempDoublePtr when it is used, so write; read; write; read; would not become write; write; read; read; assert(node[0] === 'sub'); return (node[2][0] === 'name' && node[2][1] === 'tempDoublePtr') || (node[2][0] === 'binary' && ((node[2][2][0] === 'name' && node[2][2][1] === 'tempDoublePtr') || |