Skip to content

Commit

Permalink
Avoid some unnecessary value tracking deoptimizations (#3278)
Browse files Browse the repository at this point in the history
* Avoid some unnecessary deoptimizations

* Improve coverage

* Improve coverage

* Improve coverage

* Fix vulnerability
  • Loading branch information
lukastaegert committed Dec 11, 2019
1 parent 4d809d1 commit 31747e3
Show file tree
Hide file tree
Showing 23 changed files with 544 additions and 258 deletions.
125 changes: 100 additions & 25 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Expand Up @@ -80,13 +80,13 @@
"chokidar": "^2.1.8",
"codecov": "^3.6.1",
"console-group": "^0.3.3",
"core-js": "^3.4.7",
"core-js": "^3.4.8",
"cross-os": "^1.3.0",
"date-time": "^3.1.0",
"es5-shim": "^4.5.13",
"es6-shim": "^0.35.5",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-import": "^2.19.1",
"execa": "^3.4.0",
"fixturify": "^1.2.0",
"hash.js": "^1.1.7",
Expand All @@ -105,7 +105,7 @@
"pretty-ms": "^5.1.0",
"require-relative": "^0.8.7",
"requirejs": "^2.3.6",
"rollup": "^1.27.8",
"rollup": "^1.27.9",
"rollup-plugin-alias": "^2.2.0",
"rollup-plugin-buble": "^0.19.8",
"rollup-plugin-commonjs": "^10.1.0",
Expand Down
9 changes: 7 additions & 2 deletions src/ast/nodes/BinaryExpression.ts
@@ -1,6 +1,11 @@
import { DeoptimizableEntity } from '../DeoptimizableEntity';
import { HasEffectsContext } from '../ExecutionContext';
import { EMPTY_IMMUTABLE_TRACKER, EMPTY_PATH, ObjectPath, PathTracker } from '../utils/PathTracker';
import {
EMPTY_PATH,
ObjectPath,
PathTracker,
SHARED_RECURSION_TRACKER
} from '../utils/PathTracker';
import { LiteralValueOrUnknown, UnknownValue } from '../values';
import ExpressionStatement from './ExpressionStatement';
import { LiteralValue } from './Literal';
Expand Down Expand Up @@ -68,7 +73,7 @@ export default class BinaryExpression extends NodeBase implements DeoptimizableE
if (
this.operator === '+' &&
this.parent instanceof ExpressionStatement &&
this.left.getLiteralValueAtPath(EMPTY_PATH, EMPTY_IMMUTABLE_TRACKER, this) === ''
this.left.getLiteralValueAtPath(EMPTY_PATH, SHARED_RECURSION_TRACKER, this) === ''
)
return true;
return super.hasEffects(context);
Expand Down

0 comments on commit 31747e3

Please sign in to comment.