| Index: test/cctest/asmjs/test-asm-typer.cc
 | 
| diff --git a/test/cctest/asmjs/test-asm-typer.cc b/test/cctest/asmjs/test-asm-typer.cc
 | 
| index b9b3c58739267f94a8dc55e5df66e5fc464b5e5e..45f6021e2080755c04b5c916cd591b0889d71bd2 100644
 | 
| --- a/test/cctest/asmjs/test-asm-typer.cc
 | 
| +++ b/test/cctest/asmjs/test-asm-typer.cc
 | 
| @@ -1797,4 +1797,113 @@ TEST(CannotReferenceModuleName) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +TEST(InvalidSourceLayout) {
 | 
| +  const char* kTests[] = {
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  return f;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  return f;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  return f;\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  return f;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  return f;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  return f;\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v1 = 0;\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  return f;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  var v1 = 0;\n"
 | 
| +      "  return f;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  return f;\n"
 | 
| +      "  var v1 = 0;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "  return f;\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  return f;\n"
 | 
| +      "  var v = 0;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "  var v_v = [f];\n"
 | 
| +      "}",
 | 
| +      "function asm() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  return f;\n"
 | 
| +      "  function f() {}\n"
 | 
| +      "}",
 | 
| +      "function __f_59() {\n"
 | 
| +      "  'use asm';\n"
 | 
| +      "  function __f_110() {\n"
 | 
| +      "    return 71;\n"
 | 
| +      "  }\n"
 | 
| +      "  function __f_21() {\n"
 | 
| +      "    var __v_38 = 0;\n"
 | 
| +      "    return __v_23[__v_38&0]() | 0;\n"
 | 
| +      "  }\n"
 | 
| +      "  return {__f_21:__f_21};\n"
 | 
| +      "  var __v_23 = [__f_110];\n"
 | 
| +      "}",
 | 
| +  };
 | 
| +
 | 
| +  for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
 | 
| +    if (!ValidationOf(Module(kTests[ii]))
 | 
| +             ->FailsWithMessage("Invalid asm.js source code layout")) {
 | 
| +      std::cerr << "Test:\n" << kTests[ii];
 | 
| +      CHECK(false);
 | 
| +    }
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
| 
 |