e2accb425c
This fixes the bounds checking of "unsigned" numeric literals (those that do not contains dots) by the parser. In particular this fixes a bogus truncation to 32-bit in the scanner. It also makes the scanner more robust by limiting the range of those numeric literals, hence completely avoiding rounding loss or truncation errors. R=clemensh@chromium.org TEST=unittests/AsmJsScannerTest.UnsignedNumbers BUG=v8:6298 Change-Id: Id31ab3c652e99fa8d3d6663315768e1bfaf3b773 Reviewed-on: https://chromium-review.googlesource.com/486881 Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#44890}
17 lines
433 B
JavaScript
17 lines
433 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(stdlib, imports, buffer) {
|
|
"use asm";
|
|
function f() {
|
|
return (281474976710655 * 1048575) | 0;
|
|
}
|
|
return { f:f };
|
|
}
|
|
var m = Module(this);
|
|
assertEquals(-1048576, m.f());
|
|
assertFalse(%IsAsmWasmCode(Module));
|