// Copyright 2014 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 Module() {
  "use asm";

  function w0(a) {
    a = a | 0;
    if (a) while (1);
    return 42;
  }

  function w1(a) {
    a = a | 0;
    while (1) return 42;
    return 106;
  }

  function d0(a) {
    a = a | 0;
    if (a) do ; while(1);
    return 42;
  }

  function d1(a) {
    a = a | 0;
    do return 42; while(1);
    return 107;
  }

  function f0(a) {
    a = a | 0;
    if (a) for (;;) ;
    return 42;
  }

  function f1(a) {
    a = a | 0;
    for(;;) return 42;
    return 108;
  }

  return { w0: w0, w1: w1, d0: d0, d1: d1, f0: f0, f1: f1 };
}

var m = Module();
assertEquals(42, m.w0(0));
assertEquals(42, m.w1(0));
assertEquals(42, m.d0(0));
assertEquals(42, m.d1(0));
assertEquals(42, m.f0(0));
assertEquals(42, m.f1(0));