Fix old V8 JIT bug that has cropped up again.

This commit is contained in:
jdalton
2015-04-22 20:17:39 -07:00
parent 0b907a3efa
commit 641cd63462
2 changed files with 6 additions and 5 deletions

View File

@@ -1016,6 +1016,7 @@
(function(x) { (function(x) {
var Ctor = function() { this.x = x; }, var Ctor = function() { this.x = x; },
args = arguments,
object = { '0': x, 'length': x }, object = { '0': x, 'length': x },
props = []; props = [];
@@ -1029,7 +1030,7 @@
* @memberOf _.support * @memberOf _.support
* @type boolean * @type boolean
*/ */
support.argsTag = objToString.call(arguments) == argsTag; support.argsTag = objToString.call(args) == argsTag;
/** /**
* Detect if `name` or `message` properties of `Error.prototype` are * Detect if `name` or `message` properties of `Error.prototype` are
@@ -1158,7 +1159,7 @@
* @type boolean * @type boolean
*/ */
try { try {
support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); support.nonEnumArgs = !propertyIsEnumerable.call(args, 1);
} catch(e) { } catch(e) {
support.nonEnumArgs = true; support.nonEnumArgs = true;
} }

View File

@@ -8973,7 +8973,7 @@
}); });
test('`_.' + methodName + '` should work with `arguments` objects (test in IE < 9)', 1, function() { test('`_.' + methodName + '` should work with `arguments` objects (test in IE < 9)', 1, function() {
if (!(isPhantom || isStrict)) { if (!isStrict) {
deepEqual(func(args).sort(), ['0', '1', '2']); deepEqual(func(args).sort(), ['0', '1', '2']);
} }
else { else {
@@ -8982,7 +8982,7 @@
}); });
test('`_.' + methodName + '` should return keys for custom properties on `arguments` objects', 1, function() { test('`_.' + methodName + '` should return keys for custom properties on `arguments` objects', 1, function() {
if (!(isPhantom || isStrict)) { if (!isStrict) {
args.a = 1; args.a = 1;
deepEqual(func(args).sort(), ['0', '1', '2', 'a']); deepEqual(func(args).sort(), ['0', '1', '2', 'a']);
delete args.a; delete args.a;
@@ -8993,7 +8993,7 @@
}); });
test('`_.' + methodName + '` should ' + (isKeys ? 'not' : '') + ' include inherited properties of `arguments` objects', 1, function() { test('`_.' + methodName + '` should ' + (isKeys ? 'not' : '') + ' include inherited properties of `arguments` objects', 1, function() {
if (!(isPhantom || isStrict)) { if (!isStrict) {
var expected = isKeys ? ['0', '1', '2'] : ['0', '1', '2', 'a']; var expected = isKeys ? ['0', '1', '2'] : ['0', '1', '2', 'a'];
objectProto.a = 1; objectProto.a = 1;