[asm.js] Fix assignment with undeclared target.
R=clemensh@chromium.org BUG=v8:6127 Change-Id: I32d2a36cdc2a65c3e0016e49157524573755d09d Reviewed-on: https://chromium-review.googlesource.com/461185 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Brad Nelson <bradnelson@chromium.org> Cr-Commit-Position: refs/heads/master@{#44260}
This commit is contained in:
parent
36d4ba6233
commit
6748fa7cad
@ -1496,8 +1496,11 @@ AsmType* AsmJsParser::AssignmentExpression() {
|
|||||||
ret = info->type;
|
ret = info->type;
|
||||||
scanner_.Next();
|
scanner_.Next();
|
||||||
if (Check('=')) {
|
if (Check('=')) {
|
||||||
// NOTE: Before this point, this might have been VarKind::kUndefined,
|
// NOTE: Before this point, this might have been VarKind::kUnused even in
|
||||||
// as it might be a label.
|
// valid code, as it might be a label.
|
||||||
|
if (info->kind == VarKind::kUnused) {
|
||||||
|
FAILn("Undeclared assignment target");
|
||||||
|
}
|
||||||
DCHECK(is_local ? info->kind == VarKind::kLocal
|
DCHECK(is_local ? info->kind == VarKind::kLocal
|
||||||
: info->kind == VarKind::kGlobal);
|
: info->kind == VarKind::kGlobal);
|
||||||
AsmType* value;
|
AsmType* value;
|
||||||
|
16
test/message/asm-assignment-undeclared.js
Normal file
16
test/message/asm-assignment-undeclared.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// 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: --validate-asm --no-stress-opt --no-stress-validate-asm --no-suppress-asm-messages --fast-validate-asm
|
||||||
|
|
||||||
|
function Module() {
|
||||||
|
"use asm"
|
||||||
|
function f(a) {
|
||||||
|
a = a | 0;
|
||||||
|
b = (a + 23) | 0;
|
||||||
|
return b | 0;
|
||||||
|
}
|
||||||
|
return { f:f };
|
||||||
|
}
|
||||||
|
Module().f();
|
5
test/message/asm-assignment-undeclared.out
Normal file
5
test/message/asm-assignment-undeclared.out
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
*%(basename)s:11: Invalid asm.js: Undeclared assignment target
|
@ -659,7 +659,6 @@
|
|||||||
['variant == asm_wasm', {
|
['variant == asm_wasm', {
|
||||||
# Issue 6127: We won't fix these in the "old" validator. But we definitely
|
# Issue 6127: We won't fix these in the "old" validator. But we definitely
|
||||||
# need to re-enable these for the "new" validator.
|
# need to re-enable these for the "new" validator.
|
||||||
'compiler/regress-452427': [SKIP],
|
|
||||||
'regress/regress-599719': [SKIP],
|
'regress/regress-599719': [SKIP],
|
||||||
'regress/regress-618608': [SKIP],
|
'regress/regress-618608': [SKIP],
|
||||||
'regress/regress-670808': [SKIP],
|
'regress/regress-670808': [SKIP],
|
||||||
|
Loading…
Reference in New Issue
Block a user