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

Side by Side Diff: src/code-stubs.cc

Issue 2489743002: [stubs] Ensure CSA_ASSERT and CSA_SLOW_ASSERT do not produce unused instructions in release mode. (Closed)
Patch Set: Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/code-stubs.h" 5 #include "src/code-stubs.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/ast/ast.h" 9 #include "src/ast/ast.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 1736 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 // Load the HeapNumber value. 1747 // Load the HeapNumber value.
1748 var_finc_value.Bind(assembler->LoadHeapNumberValue(value)); 1748 var_finc_value.Bind(assembler->LoadHeapNumberValue(value));
1749 assembler->Goto(&do_finc); 1749 assembler->Goto(&do_finc);
1750 } 1750 }
1751 1751
1752 assembler->Bind(&if_valuenotnumber); 1752 assembler->Bind(&if_valuenotnumber);
1753 { 1753 {
1754 // We do not require an Or with earlier feedback here because once we 1754 // We do not require an Or with earlier feedback here because once we
1755 // convert the value to a number, we cannot reach this path. We can 1755 // convert the value to a number, we cannot reach this path. We can
1756 // only reach this path on the first pass when the feedback is kNone. 1756 // only reach this path on the first pass when the feedback is kNone.
1757 assembler->Assert(assembler->Word32Equal( 1757 assembler->CSA_ASSERT(assembler->Word32Equal(
1758 var_type_feedback.value(), 1758 var_type_feedback.value(),
1759 assembler->Int32Constant(BinaryOperationFeedback::kNone))); 1759 assembler->Int32Constant(BinaryOperationFeedback::kNone)));
1760 1760
1761 Label if_valueisoddball(assembler), if_valuenotoddball(assembler); 1761 Label if_valueisoddball(assembler), if_valuenotoddball(assembler);
1762 Node* instance_type = assembler->LoadMapInstanceType(value_map); 1762 Node* instance_type = assembler->LoadMapInstanceType(value_map);
1763 Node* is_oddball = assembler->Word32Equal( 1763 Node* is_oddball = assembler->Word32Equal(
1764 instance_type, assembler->Int32Constant(ODDBALL_TYPE)); 1764 instance_type, assembler->Int32Constant(ODDBALL_TYPE));
1765 assembler->Branch(is_oddball, &if_valueisoddball, &if_valuenotoddball); 1765 assembler->Branch(is_oddball, &if_valueisoddball, &if_valuenotoddball);
1766 1766
1767 assembler->Bind(&if_valueisoddball); 1767 assembler->Bind(&if_valueisoddball);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 // Load the HeapNumber value. 1886 // Load the HeapNumber value.
1887 var_fdec_value.Bind(assembler->LoadHeapNumberValue(value)); 1887 var_fdec_value.Bind(assembler->LoadHeapNumberValue(value));
1888 assembler->Goto(&do_fdec); 1888 assembler->Goto(&do_fdec);
1889 } 1889 }
1890 1890
1891 assembler->Bind(&if_valuenotnumber); 1891 assembler->Bind(&if_valuenotnumber);
1892 { 1892 {
1893 // We do not require an Or with earlier feedback here because once we 1893 // We do not require an Or with earlier feedback here because once we
1894 // convert the value to a number, we cannot reach this path. We can 1894 // convert the value to a number, we cannot reach this path. We can
1895 // only reach this path on the first pass when the feedback is kNone. 1895 // only reach this path on the first pass when the feedback is kNone.
1896 assembler->Assert(assembler->Word32Equal( 1896 assembler->CSA_ASSERT(assembler->Word32Equal(
1897 var_type_feedback.value(), 1897 var_type_feedback.value(),
1898 assembler->Int32Constant(BinaryOperationFeedback::kNone))); 1898 assembler->Int32Constant(BinaryOperationFeedback::kNone)));
1899 1899
1900 Label if_valueisoddball(assembler), if_valuenotoddball(assembler); 1900 Label if_valueisoddball(assembler), if_valuenotoddball(assembler);
1901 Node* instance_type = assembler->LoadMapInstanceType(value_map); 1901 Node* instance_type = assembler->LoadMapInstanceType(value_map);
1902 Node* is_oddball = assembler->Word32Equal( 1902 Node* is_oddball = assembler->Word32Equal(
1903 instance_type, assembler->Int32Constant(ODDBALL_TYPE)); 1903 instance_type, assembler->Int32Constant(ODDBALL_TYPE));
1904 assembler->Branch(is_oddball, &if_valueisoddball, &if_valuenotoddball); 1904 assembler->Branch(is_oddball, &if_valueisoddball, &if_valuenotoddball);
1905 1905
1906 assembler->Bind(&if_valueisoddball); 1906 assembler->Bind(&if_valueisoddball);
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
2564 assembler->GotoIf(is_async, &if_async); 2564 assembler->GotoIf(is_async, &if_async);
2565 2565
2566 Node* is_class_constructor = assembler->Word32And( 2566 Node* is_class_constructor = assembler->Word32And(
2567 compiler_hints, 2567 compiler_hints,
2568 assembler->Int32Constant(FunctionKind::kClassConstructor 2568 assembler->Int32Constant(FunctionKind::kClassConstructor
2569 << SharedFunctionInfo::kFunctionKindShift)); 2569 << SharedFunctionInfo::kFunctionKindShift));
2570 assembler->GotoIf(is_class_constructor, &if_class_constructor); 2570 assembler->GotoIf(is_class_constructor, &if_class_constructor);
2571 2571
2572 if (FLAG_debug_code) { 2572 if (FLAG_debug_code) {
2573 // Function must be a function without a prototype. 2573 // Function must be a function without a prototype.
2574 assembler->Assert(assembler->Word32And( 2574 assembler->CSA_ASSERT(assembler->Word32And(
2575 compiler_hints, 2575 compiler_hints,
2576 assembler->Int32Constant((FunctionKind::kAccessorFunction | 2576 assembler->Int32Constant((FunctionKind::kAccessorFunction |
2577 FunctionKind::kArrowFunction | 2577 FunctionKind::kArrowFunction |
2578 FunctionKind::kConciseMethod) 2578 FunctionKind::kConciseMethod)
2579 << SharedFunctionInfo::kFunctionKindShift))); 2579 << SharedFunctionInfo::kFunctionKindShift)));
2580 } 2580 }
2581 assembler->Goto(&if_function_without_prototype); 2581 assembler->Goto(&if_function_without_prototype);
2582 2582
2583 assembler->Bind(&if_normal); 2583 assembler->Bind(&if_normal);
2584 { 2584 {
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after
3319 3319
3320 if (type == MachineType::Pointer()) { 3320 if (type == MachineType::Pointer()) {
3321 return Representation::External(); 3321 return Representation::External();
3322 } 3322 }
3323 3323
3324 return Representation::Tagged(); 3324 return Representation::Tagged();
3325 } 3325 }
3326 3326
3327 } // namespace internal 3327 } // namespace internal
3328 } // namespace v8 3328 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698