| Index: test/mjsunit/harmony/to-length.js | 
| diff --git a/test/mjsunit/harmony/to-length.js b/test/mjsunit/harmony/to-length.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..b805e5cffe08546274fa405803948326e99ad208 | 
| --- /dev/null | 
| +++ b/test/mjsunit/harmony/to-length.js | 
| @@ -0,0 +1,76 @@ | 
| +// Copyright 2015 the V8 project authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +// Flags: --allow-natives-syntax | 
| + | 
| +assertEquals(0, %ToLength(NaN)); | 
| +assertEquals(0, %_ToLength(NaN)); | 
| + | 
| +assertEquals(0, %ToLength(-Infinity)); | 
| +assertEquals(0, %_ToLength(-Infinity)); | 
| + | 
| +assertEquals(0, %ToLength(0)); | 
| +assertEquals(0, %_ToLength(0)); | 
| + | 
| +assertEquals(0, %ToLength(.5)); | 
| +assertEquals(0, %_ToLength(.5)); | 
| + | 
| +assertEquals(42, %ToLength(42.99999)); | 
| +assertEquals(42, %_ToLength(42.99999)); | 
| + | 
| +assertEquals(9007199254740991, %ToLength(9007199254740991)); | 
| +assertEquals(9007199254740991, %_ToLength(9007199254740991)); | 
| + | 
| +assertEquals(9007199254740991, %ToLength(Infinity)); | 
| +assertEquals(9007199254740991, %_ToLength(Infinity)); | 
| + | 
| +assertEquals(0, %ToLength(null)); | 
| +assertEquals(0, %_ToLength(null)); | 
| + | 
| +assertEquals(1, %ToLength(true)); | 
| +assertEquals(1, %_ToLength(true)); | 
| + | 
| +assertEquals(0, %ToLength(false)); | 
| +assertEquals(0, %_ToLength(false)); | 
| + | 
| +assertEquals(0, %ToLength(undefined)); | 
| +assertEquals(0, %_ToLength(undefined)); | 
| + | 
| +assertEquals(0, %ToLength("-1")); | 
| +assertEquals(0, %_ToLength("-1")); | 
| +assertEquals(123, %ToLength("123")); | 
| +assertEquals(123, %_ToLength("123")); | 
| +assertEquals(0, %ToLength("random text")); | 
| +assertEquals(0, %_ToLength("random text")); | 
| + | 
| +assertThrows(function() { %ToLength(Symbol.toPrimitive) }, TypeError); | 
| +assertThrows(function() { %_ToLength(Symbol.toPrimitive) }, TypeError); | 
| + | 
| +var a = { toString: function() { return 54321 }}; | 
| +assertEquals(54321, %ToLength(a)); | 
| +assertEquals(54321, %_ToLength(a)); | 
| + | 
| +var b = { valueOf: function() { return 42 }}; | 
| +assertEquals(42, %ToLength(b)); | 
| +assertEquals(42, %_ToLength(b)); | 
| + | 
| +var c = { | 
| +  toString: function() { return "x"}, | 
| +  valueOf: function() { return 123 } | 
| +}; | 
| +assertEquals(123, %ToLength(c)); | 
| +assertEquals(123, %_ToLength(c)); | 
| + | 
| +var d = { | 
| +  [Symbol.toPrimitive]: function(hint) { | 
| +    assertEquals("number", hint); | 
| +    return 987654321; | 
| +  } | 
| +}; | 
| +assertEquals(987654321, %ToLength(d)); | 
| +assertEquals(987654321, %_ToLength(d)); | 
| + | 
| +var e = new Date(0); | 
| +assertEquals(0, %ToLength(e)); | 
| +assertEquals(0, %_ToLength(e)); | 
|  |