4f8a70adca
The code in `AsmJsScanner::Next()` checks for both end of input and parse error: if (token_ == kEndOfInput || token_ == kParseError) { return; } but until now the code in the parsing loop only checked for `kEndOfInput`, resulting in an infinite loop on `kParseError`. R=bradnelson@chromium.org, mstarzinger@chromium.org Bug: chromium:771428 Change-Id: I9170f090503590b3b9b949a0d00ab4daef85bf66 Reviewed-on: https://chromium-review.googlesource.com/699994 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48290}
25 lines
541 B
JavaScript
25 lines
541 B
JavaScript
// Copyright 2017 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.
|
|
|
|
// Flags: --allow-natives-syntax
|
|
function Module() {
|
|
"use asm";
|
|
function f(i) {
|
|
i = i | 0;
|
|
switch (i | 0) {
|
|
case 2:
|
|
// Exceeds value range.
|
|
i = 0x1ffffffff;
|
|
break;
|
|
}
|
|
return i | 0;
|
|
}
|
|
return f;
|
|
}
|
|
var f = Module();
|
|
assertEquals(0, f(0));
|
|
assertEquals(1, f(1));
|
|
assertEquals(-1, f(2));
|
|
assertFalse(%IsAsmWasmCode(Module));
|