OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |