OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/asmjs/asm-typer.h" | 5 #include "src/asmjs/asm-typer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
(...skipping 1726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1737 FAIL(target_as_proxy, | 1737 FAIL(target_as_proxy, |
1738 "Invalid asm.js identifier in temporary variable."); | 1738 "Invalid asm.js identifier in temporary variable."); |
1739 } | 1739 } |
1740 | 1740 |
1741 if (!AddLocal(var, var_info)) { | 1741 if (!AddLocal(var, var_info)) { |
1742 FAIL(assignment, "Failed to add temporary variable to symbol table."); | 1742 FAIL(assignment, "Failed to add temporary variable to symbol table."); |
1743 } | 1743 } |
1744 return value_type; | 1744 return value_type; |
1745 } | 1745 } |
1746 | 1746 |
1747 DCHECK(target_info->type() != AsmType::None()); | 1747 if (!target_info->IsMutable()) { |
| 1748 FAIL(assignment, "Can't assign to immutable symbol."); |
| 1749 } |
| 1750 |
| 1751 DCHECK_NE(AsmType::None(), target_info->type()); |
1748 if (!value_type->IsA(target_info->type())) { | 1752 if (!value_type->IsA(target_info->type())) { |
1749 FAIL(assignment, "Type mismatch in assignment."); | 1753 FAIL(assignment, "Type mismatch in assignment."); |
1750 } | 1754 } |
1751 | 1755 |
1752 return value_type; | 1756 return value_type; |
1753 } | 1757 } |
1754 | 1758 |
1755 if (auto* target_as_property = assignment->target()->AsProperty()) { | 1759 if (auto* target_as_property = assignment->target()->AsProperty()) { |
1756 AsmType* allowed_store_types; | 1760 AsmType* allowed_store_types; |
1757 RECURSE(allowed_store_types = | 1761 RECURSE(allowed_store_types = |
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2760 return true; | 2764 return true; |
2761 } | 2765 } |
2762 | 2766 |
2763 *error_message = typer.error_message(); | 2767 *error_message = typer.error_message(); |
2764 return false; | 2768 return false; |
2765 } | 2769 } |
2766 | 2770 |
2767 } // namespace wasm | 2771 } // namespace wasm |
2768 } // namespace internal | 2772 } // namespace internal |
2769 } // namespace v8 | 2773 } // namespace v8 |
OLD | NEW |