Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(375)

Side by Side Diff: src/compiler/js-native-context-specialization.cc

Issue 2668643002: [turbofan] Remove over-restrictive DCHECKs. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-crbug-685050.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/compiler/js-native-context-specialization.h" 5 #include "src/compiler/js-native-context-specialization.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 #include "src/compilation-dependencies.h" 9 #include "src/compilation-dependencies.h"
10 #include "src/compiler/access-builder.h" 10 #include "src/compiler/access-builder.h"
(...skipping 1749 matching lines...) Expand 10 before | Expand all | Expand 10 after
1760 1760
1761 if (store_mode == STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS) { 1761 if (store_mode == STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS) {
1762 // Check that the {index} is a valid array index, we do the actual 1762 // Check that the {index} is a valid array index, we do the actual
1763 // bounds check below and just skip the store below if it's out of 1763 // bounds check below and just skip the store below if it's out of
1764 // bounds for the {receiver}. 1764 // bounds for the {receiver}.
1765 index = effect = graph()->NewNode(simplified()->CheckBounds(), index, 1765 index = effect = graph()->NewNode(simplified()->CheckBounds(), index,
1766 jsgraph()->Constant(Smi::kMaxValue), 1766 jsgraph()->Constant(Smi::kMaxValue),
1767 effect, control); 1767 effect, control);
1768 } else { 1768 } else {
1769 // Check that the {index} is in the valid range for the {receiver}. 1769 // Check that the {index} is in the valid range for the {receiver}.
1770 DCHECK_EQ(STANDARD_STORE, store_mode);
1771 index = effect = graph()->NewNode(simplified()->CheckBounds(), index, 1770 index = effect = graph()->NewNode(simplified()->CheckBounds(), index,
1772 length, effect, control); 1771 length, effect, control);
1773 } 1772 }
1774 1773
1775 // Access the actual element. 1774 // Access the actual element.
1776 ExternalArrayType external_array_type = 1775 ExternalArrayType external_array_type =
1777 GetArrayTypeFromElementsKind(elements_kind); 1776 GetArrayTypeFromElementsKind(elements_kind);
1778 switch (access_mode) { 1777 switch (access_mode) {
1779 case AccessMode::kLoad: { 1778 case AccessMode::kLoad: {
1780 value = effect = graph()->NewNode( 1779 value = effect = graph()->NewNode(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1818 Node* efalse = effect; 1817 Node* efalse = effect;
1819 { 1818 {
1820 // Just ignore the out-of-bounds write. 1819 // Just ignore the out-of-bounds write.
1821 } 1820 }
1822 1821
1823 control = graph()->NewNode(common()->Merge(2), if_true, if_false); 1822 control = graph()->NewNode(common()->Merge(2), if_true, if_false);
1824 effect = 1823 effect =
1825 graph()->NewNode(common()->EffectPhi(2), etrue, efalse, control); 1824 graph()->NewNode(common()->EffectPhi(2), etrue, efalse, control);
1826 } else { 1825 } else {
1827 // Perform the actual store 1826 // Perform the actual store
1828 DCHECK_EQ(STANDARD_STORE, store_mode);
1829 effect = graph()->NewNode( 1827 effect = graph()->NewNode(
1830 simplified()->StoreTypedElement(external_array_type), buffer, 1828 simplified()->StoreTypedElement(external_array_type), buffer,
1831 base_pointer, external_pointer, index, value, effect, control); 1829 base_pointer, external_pointer, index, value, effect, control);
1832 } 1830 }
1833 break; 1831 break;
1834 } 1832 }
1835 } 1833 }
1836 } else { 1834 } else {
1837 // Load the elements for the {receiver}. 1835 // Load the elements for the {receiver}.
1838 Node* elements = effect = graph()->NewNode( 1836 Node* elements = effect = graph()->NewNode(
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
2260 return jsgraph()->javascript(); 2258 return jsgraph()->javascript();
2261 } 2259 }
2262 2260
2263 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { 2261 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const {
2264 return jsgraph()->simplified(); 2262 return jsgraph()->simplified();
2265 } 2263 }
2266 2264
2267 } // namespace compiler 2265 } // namespace compiler
2268 } // namespace internal 2266 } // namespace internal
2269 } // namespace v8 2267 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-crbug-685050.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698