From 4f01f67dd616ddb53a77fbdb414b58eddf98c086 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 16 Jan 2015 19:59:04 +0300 Subject: [PATCH] Avoid delete in favor of null assignment to prevent deoptimizations --- .../transformers/es6-rest-parameters.js | 2 +- lib/6to5/traverse/index.js | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/6to5/transformation/transformers/es6-rest-parameters.js b/lib/6to5/transformation/transformers/es6-rest-parameters.js index 68dfdd0ae8..5bfcf88601 100644 --- a/lib/6to5/transformation/transformers/es6-rest-parameters.js +++ b/lib/6to5/transformation/transformers/es6-rest-parameters.js @@ -5,7 +5,7 @@ exports.Function = function (node, parent, file) { if (!node.rest) return; var rest = node.rest; - delete node.rest; + node.rest = null; t.ensureBlock(node); diff --git a/lib/6to5/traverse/index.js b/lib/6to5/traverse/index.js index 5667ce1f46..b27d840420 100644 --- a/lib/6to5/traverse/index.js +++ b/lib/6to5/traverse/index.js @@ -102,7 +102,6 @@ function traverse(parent, opts, scope) { return; } - // unknown node type to traverse var keys = t.VISITOR_KEYS[parent.type]; if (!keys) return; @@ -139,15 +138,15 @@ function traverse(parent, opts, scope) { traverse.removeProperties = function (tree) { var clear = function (node) { - delete node._declarations; - delete node.extendedRange; - delete node._scopeInfo; - delete node.tokens; - delete node.range; - delete node.start; - delete node.end; - delete node.loc; - delete node.raw; + node._declarations = null; + node.extendedRange = null; + node._scopeInfo = null; + node.tokens = null; + node.range = null; + node.start = null; + node.end = null; + node.loc = null; + node.raw = null; clearComments(node.trailingComments); clearComments(node.leadingComments);