| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/typing-asm.h" | 5 #include "src/typing-asm.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "src/v8.h" | 9 #include "src/v8.h" |
| 10 | 10 |
| (...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 774 RECURSE(Visit(expr->key())); | 774 RECURSE(Visit(expr->key())); |
| 775 } else { | 775 } else { |
| 776 BinaryOperation* bin = expr->key()->AsBinaryOperation(); | 776 BinaryOperation* bin = expr->key()->AsBinaryOperation(); |
| 777 if (bin == NULL || bin->op() != Token::SAR) { | 777 if (bin == NULL || bin->op() != Token::SAR) { |
| 778 FAIL(expr->key(), "expected >> in heap access"); | 778 FAIL(expr->key(), "expected >> in heap access"); |
| 779 } | 779 } |
| 780 RECURSE(VisitWithExpectation(bin->left(), cache_.kAsmSigned, | 780 RECURSE(VisitWithExpectation(bin->left(), cache_.kAsmSigned, |
| 781 "array index expected to be integer")); | 781 "array index expected to be integer")); |
| 782 Literal* right = bin->right()->AsLiteral(); | 782 Literal* right = bin->right()->AsLiteral(); |
| 783 if (right == NULL || right->raw_value()->ContainsDot()) { | 783 if (right == NULL || right->raw_value()->ContainsDot()) { |
| 784 FAIL(right, "heap access shift must be integer"); | 784 FAIL(bin->right(), "heap access shift must be integer"); |
| 785 } | 785 } |
| 786 RECURSE(VisitWithExpectation(bin->right(), cache_.kAsmSigned, | 786 RECURSE(VisitWithExpectation(bin->right(), cache_.kAsmSigned, |
| 787 "array shift expected to be integer")); | 787 "array shift expected to be integer")); |
| 788 int n = static_cast<int>(right->raw_value()->AsNumber()); | 788 int n = static_cast<int>(right->raw_value()->AsNumber()); |
| 789 if (expected_shift < 0 || n != expected_shift) { | 789 if (expected_shift < 0 || n != expected_shift) { |
| 790 FAIL(right, "heap access shift must match element size"); | 790 FAIL(right, "heap access shift must match element size"); |
| 791 } | 791 } |
| 792 } | 792 } |
| 793 expr->key()->set_bounds(Bounds(cache_.kAsmSigned)); | 793 expr->key()->set_bounds(Bounds(cache_.kAsmSigned)); |
| 794 } | 794 } |
| (...skipping 820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1615 } | 1615 } |
| 1616 | 1616 |
| 1617 | 1617 |
| 1618 void AsmTyper::VisitRewritableExpression(RewritableExpression* expr) { | 1618 void AsmTyper::VisitRewritableExpression(RewritableExpression* expr) { |
| 1619 RECURSE(Visit(expr->expression())); | 1619 RECURSE(Visit(expr->expression())); |
| 1620 } | 1620 } |
| 1621 | 1621 |
| 1622 | 1622 |
| 1623 } // namespace internal | 1623 } // namespace internal |
| 1624 } // namespace v8 | 1624 } // namespace v8 |
| OLD | NEW |