Compare commits

...

2 Commits

Author SHA1 Message Date
Sebastian McKenzie
5d3074b460 v4.6.3 2015-03-01 11:03:55 +11:00
Sebastian McKenzie
a57475abc9 better rest param member expression deopt 2015-03-01 11:01:06 +11:00
4 changed files with 50 additions and 36 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "babel",
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
"version": "4.6.2",
"version": "4.6.3",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
"repository": "babel/babel",

View File

@@ -29,7 +29,6 @@ var memberExpressionOptimisationVisitor = {
var prop = parent.property;
if (isNumber(prop.value) || t.isUnaryExpression(prop) || t.isBinaryExpression(prop)) {
state.candidates.push(this);
state.canOptimise = true;
return;
}
}
@@ -81,7 +80,7 @@ exports.Function = function (node, parent, scope) {
var state = {
outerBinding: scope.getBindingIdentifier(rest.name),
canOptimise: false,
canOptimise: true,
candidates: [],
method: node,
name: rest.name
@@ -90,7 +89,7 @@ exports.Function = function (node, parent, scope) {
scope.traverse(node, memberExpressionOptimisationVisitor, state);
// we only have shorthands and there's no other references
if (state.canOptimise) {
if (state.canOptimise && state.candidates.length) {
for (var i = 0; i < state.candidates.length; i++) {
var candidate = state.candidates[i];
candidate.node = argsId;

View File

@@ -8,17 +8,23 @@ var y = function (foo, ...bar) {
};
};
var b = function (x, y, ...args) {
console.log(args[0]);
args.pop();
console.log(args[1]);
};
var z = function (foo, ...bar) {
var x = function () {
bar[1] = 5;
};
var x = function () {
bar[1] = 5;
};
};
var a = function (foo, ...bar) {
return bar.join(',');
return bar.join(',');
};
var b = function (foo, ...bar) {
var join = "join";
return bar[join];
var join = "join";
return bar[join];
};

View File

@@ -1,47 +1,56 @@
"use strict";
var x = function x(foo) {
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
console.log(bar);
console.log(bar);
};
var y = function y(foo) {
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
var x = function z(bar) {
bar[1] = 5;
};
var x = function z(bar) {
bar[1] = 5;
};
};
var b = function b(x, y) {
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
console.log(args[0]);
args.pop();
console.log(args[1]);
};
var z = function z(foo) {
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
var x = function x() {
bar[1] = 5;
};
var x = function x() {
bar[1] = 5;
};
};
var a = function a(foo) {
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
return bar.join(",");
return bar.join(",");
};
var b = function b(foo) {
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
for (var _len = arguments.length, bar = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
bar[_key - 1] = arguments[_key];
}
var join = "join";
return bar[join];
var join = "join";
return bar[join];
};