1// Copyright 2014 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 5var error = "error"; 6function counter(x) { 7 return (function() { if (x-- == 0) throw error;}); 8} 9 10function Module() { 11 "use asm"; 12 13 function w0(f) { 14 while (1) f(); 15 return 108; 16 } 17 18 function w1(f) { 19 if (1) while (1) f(); 20 return 109; 21 } 22 23 function w2(f) { 24 if (1) while (1) f(); 25 else while (1) f(); 26 return 110; 27 } 28 29 function w3(f) { 30 if (0) while (1) f(); 31 return 111; 32 } 33 34 return { w0: w0, w1: w1, w2: w2, w3: w3 }; 35} 36 37var m = Module(); 38assertThrowsEquals(function() { m.w0(counter(5)) }, error); 39assertThrowsEquals(function() { m.w1(counter(5)) }, error); 40assertThrowsEquals(function() { m.w2(counter(5)) }, error); 41assertEquals(111, m.w3(counter(5))); 42