fpizlo@apple.com | 9d899a4 | 2012-05-25 05:41:03 +0000 | [diff] [blame] | 1 | description( |
| 2 | "This tests that a polymorphic structure check is actually executed." |
| 3 | ); |
| 4 | |
| 5 | function foo(o, p) { |
| 6 | if (o == p) |
| 7 | return o.f; |
| 8 | else |
| 9 | return 75; |
| 10 | } |
| 11 | |
| 12 | var o1 = {f:42, g:43}; |
| 13 | var o2 = {f:44}; |
| 14 | var o3 = {e:45, f:46}; |
| 15 | |
fpizlo@apple.com | 0fa8386 | 2013-09-06 19:01:21 +0000 | [diff] [blame] | 16 | silentTestPass = true; |
| 17 | noInline(foo); |
| 18 | |
| 19 | for (var i = 0; i < 200; i = dfgIncrement({f:foo, i:i + 1, n:100})) { |
fpizlo@apple.com | 9d899a4 | 2012-05-25 05:41:03 +0000 | [diff] [blame] | 20 | var o; |
| 21 | var expected; |
| 22 | if (i < 150) { |
| 23 | if (i & 1) { |
| 24 | o = o1; |
| 25 | expected = 42; |
| 26 | } else { |
| 27 | o = o2; |
| 28 | expected = 44; |
| 29 | } |
| 30 | } else { |
| 31 | o = o3; |
| 32 | expected = 46; |
| 33 | } |
| 34 | shouldBe("foo(o, o)", "" + expected); |
| 35 | } |