blob: 694cd8a75be881ac527972b935db32afe9565c02 [file] [log] [blame]
Ben Murdoch61f157c2016-09-16 13:49:30 +01001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --allow-natives-syntax
6
7var a = [0, 1];
8a["true"] = "true";
9a["false"] = "false";
10a["null"] = "null";
11a["undefined"] = "undefined";
12
13// Ensure we don't accidentially truncate true when used to index arrays.
14(function() {
15 function f(x) { return a[x]; }
16
17 assertEquals(0, f(0));
18 assertEquals(0, f(0));
19 %OptimizeFunctionOnNextCall(f);
20 assertEquals("true", f(true));
21})();
22
23// Ensure we don't accidentially truncate false when used to index arrays.
24(function() {
25 function f( x) { return a[x]; }
26
27 assertEquals(0, f(0));
28 assertEquals(0, f(0));
29 %OptimizeFunctionOnNextCall(f);
30 assertEquals("false", f(false));
31})();
32
33// Ensure we don't accidentially truncate null when used to index arrays.
34(function() {
35 function f( x) { return a[x]; }
36
37 assertEquals(0, f(0));
38 assertEquals(0, f(0));
39 %OptimizeFunctionOnNextCall(f);
40 assertEquals("null", f(null));
41})();
42
43// Ensure we don't accidentially truncate undefined when used to index arrays.
44(function() {
45 function f( x) { return a[x]; }
46
47 assertEquals(0, f(0));
48 assertEquals(0, f(0));
49 %OptimizeFunctionOnNextCall(f);
50 assertEquals("undefined", f(undefined));
51})();