| 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 |