OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 assertEquals(4.5, o.f.d); | 166 assertEquals(4.5, o.f.d); |
167 assertEquals(5.9, o.e); | 167 assertEquals(5.9, o.e); |
168 assertEquals(6.7, o.g); | 168 assertEquals(6.7, o.g); |
169 } | 169 } |
170 func(); func(); | 170 func(); func(); |
171 %OptimizeFunctionOnNextCall(func); | 171 %OptimizeFunctionOnNextCall(func); |
172 func(); func(); | 172 func(); func(); |
173 delete deopt.deopt; | 173 delete deopt.deopt; |
174 func(); func(); | 174 func(); func(); |
175 })(); | 175 })(); |
| 176 |
| 177 |
| 178 // Test map checks on captured objects. |
| 179 (function testMapCheck() { |
| 180 var sum = 0; |
| 181 function getter() { return 27; } |
| 182 function setter(v) { sum += v; } |
| 183 function constructor() { |
| 184 this.x = 23; |
| 185 this.y = 42; |
| 186 } |
| 187 function check(x, y) { |
| 188 var o = new constructor(); |
| 189 assertEquals(x, o.x); |
| 190 assertEquals(y, o.y); |
| 191 } |
| 192 var monkey = Object.create(null, { |
| 193 x: { get:getter, set:setter }, |
| 194 y: { get:getter, set:setter } |
| 195 }); |
| 196 check(23, 42); check(23, 42); |
| 197 %OptimizeFunctionOnNextCall(check); |
| 198 check(23, 42); check(23, 42); |
| 199 constructor.prototype = monkey; |
| 200 check(27, 27); check(27, 27); |
| 201 assertEquals(130, sum); |
| 202 })(); |
OLD | NEW |