1 // Copyright 2015 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 7 function deopt(f) { 8 return { valueOf : function() { %DeoptimizeFunction(f); return 1.1; } }; 9 } 10 11 function or_zero(o) { 12 return o|0; 13 } 14 15 function multiply_one(o) { 16 return +o; 17 } 18 19 function multiply_one_symbol() { 20 return +Symbol(); 21 } 22 23 assertThrows(multiply_one_symbol, TypeError); 24 assertEquals(1, or_zero(deopt(or_zero))); 25 assertEquals(1.1, multiply_one(deopt(multiply_one))); 26