Browse Source

Few optimisations

sanex3339 7 years ago
parent
commit
255dd1476b

File diff suppressed because it is too large
+ 0 - 0
dist/index.js


+ 6 - 2
src/node-transformers/TransformersRunner.ts

@@ -63,14 +63,18 @@ export class TransformersRunner implements ITransformersRunner {
             }
 
             if (visitor.enter) {
-                enterVisitors.push(visitor);
+                enterVisitors.push({ enter: visitor.enter });
             }
 
             if (visitor.leave) {
-                leaveVisitors.push(visitor);
+                leaveVisitors.push({ leave: visitor.leave });
             }
         }
 
+        if (!enterVisitors.length && !leaveVisitors.length) {
+            return astTree;
+        }
+
         estraverse.replace(astTree, {
             enter: this.mergeVisitorsForDirection(enterVisitors, VisitorDirection.Enter),
             leave: this.mergeVisitorsForDirection(leaveVisitors, VisitorDirection.Leave)

+ 6 - 2
src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts

@@ -39,9 +39,9 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer {
     private static readonly minCollectedBlockStatementsCount: number = 5;
 
     /**
-     * @type {WeakSet <BlockStatement>}
+     * @type {Set <BlockStatement>}
      */
-    private readonly deadCodeInjectionRootAstHostNodeSet: WeakSet <ESTree.BlockStatement> = new WeakSet();
+    private readonly deadCodeInjectionRootAstHostNodeSet: Set <ESTree.BlockStatement> = new Set();
 
     /**
      * @type {ESTree.BlockStatement[]}
@@ -135,6 +135,10 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer {
                 };
 
             case TransformationStage.Finalizing:
+                if (!this.deadCodeInjectionRootAstHostNodeSet.size) {
+                    return null;
+                }
+
                 return {
                     enter: (node: ESTree.Node, parentNode: ESTree.Node | null) => {
                         if (parentNode && this.isDeadCodeInjectionRootAstHostNode(node)) {

+ 6 - 2
src/node-transformers/preparing-transformers/EvaCallExpressionTransformer.ts

@@ -20,9 +20,9 @@ import { NodeUtils } from '../../node/NodeUtils';
 @injectable()
 export class EvalCallExpressionTransformer extends AbstractNodeTransformer {
     /**
-     * @type {WeakSet <FunctionExpression>}
+     * @type {Set <FunctionExpression>}
      */
-    private readonly evalRootAstHostNodeSet: WeakSet <ESTree.FunctionExpression> = new WeakSet();
+    private readonly evalRootAstHostNodeSet: Set <ESTree.FunctionExpression> = new Set();
 
     /**
      * @param {IRandomGenerator} randomGenerator
@@ -97,6 +97,10 @@ export class EvalCallExpressionTransformer extends AbstractNodeTransformer {
                 };
 
             case TransformationStage.Finalizing:
+                if (!this.evalRootAstHostNodeSet.size) {
+                    return null;
+                }
+
                 return {
                     leave: (node: ESTree.Node, parentNode: ESTree.Node | null) => {
                         if (parentNode && this.isEvalRootAstHostNode(node)) {

Some files were not shown because too many files changed in this diff