// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. function counter() { var i = 100; return function() { if (i-- > 0) return i; throw "done"; } } var c1 = counter(); var c2 = counter(); var f = (function() { "use asm"; return function f(i) { i = i|0; do { if (i > 0) c1(); else c2(); } while (true); } })(); assertThrows(function() { f(0); }); assertThrows(function() { f(1); }); var c3 = counter(); var g = (function() { "use asm"; return function g(i) { i = i + 1; do { i = c3(i); } while (true); } })(); assertThrows(function() { g(0); }); assertThrows(function() { g(1); });