| function assert(actual, expected) { |
| if (actual != expected) |
| throw("FAILED: actual " + actual + ", expected " + expected); |
| } |
| |
| Object.defineProperty(this, "t0", { |
| get: function() { |
| "use strict"; |
| return t2.subarray(4, 7); |
| } |
| }); |
| |
| t2 = new Uint16Array(); |
| |
| var exception; |
| function test() { |
| exception = void 0; |
| try { |
| return t0; |
| } catch (e) { |
| exception = e; |
| } |
| } |
| |
| for (var i = 0; i < 100; ++i) { |
| test(); |
| assert(exception, void 0); |
| } |
| |
| t2.__proto__ = { |
| subarray: 1 |
| }; |
| |
| test(); |
| assert(exception, "TypeError: t2.subarray is not a function. (In 't2.subarray(4, 7)', 't2.subarray' is 1)"); |
| |
| test(); |
| assert(exception, "TypeError: t2.subarray is not a function. (In 't2.subarray(4, 7)', 't2.subarray' is 1)"); |