| 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 #if V8_TARGET_ARCH_IA32 | 5 #if V8_TARGET_ARCH_IA32 |
| 6 | 6 |
| 7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
| 8 #include "src/base/division-by-constant.h" | 8 #include "src/base/division-by-constant.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 745 Condition MacroAssembler::IsObjectNameType(Register heap_object, | 745 Condition MacroAssembler::IsObjectNameType(Register heap_object, |
| 746 Register map, | 746 Register map, |
| 747 Register instance_type) { | 747 Register instance_type) { |
| 748 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); | 748 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); |
| 749 movzx_b(instance_type, FieldOperand(map, Map::kInstanceTypeOffset)); | 749 movzx_b(instance_type, FieldOperand(map, Map::kInstanceTypeOffset)); |
| 750 cmpb(instance_type, static_cast<uint8_t>(LAST_NAME_TYPE)); | 750 cmpb(instance_type, static_cast<uint8_t>(LAST_NAME_TYPE)); |
| 751 return below_equal; | 751 return below_equal; |
| 752 } | 752 } |
| 753 | 753 |
| 754 | 754 |
| 755 void MacroAssembler::IsObjectJSObjectType(Register heap_object, | |
| 756 Register map, | |
| 757 Register scratch, | |
| 758 Label* fail) { | |
| 759 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); | |
| 760 IsInstanceJSObjectType(map, scratch, fail); | |
| 761 } | |
| 762 | |
| 763 | |
| 764 void MacroAssembler::IsInstanceJSObjectType(Register map, | |
| 765 Register scratch, | |
| 766 Label* fail) { | |
| 767 movzx_b(scratch, FieldOperand(map, Map::kInstanceTypeOffset)); | |
| 768 sub(scratch, Immediate(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); | |
| 769 cmp(scratch, | |
| 770 LAST_NONCALLABLE_SPEC_OBJECT_TYPE - FIRST_NONCALLABLE_SPEC_OBJECT_TYPE); | |
| 771 j(above, fail); | |
| 772 } | |
| 773 | |
| 774 | |
| 775 void MacroAssembler::FCmp() { | 755 void MacroAssembler::FCmp() { |
| 776 fucomip(); | 756 fucomip(); |
| 777 fstp(0); | 757 fstp(0); |
| 778 } | 758 } |
| 779 | 759 |
| 780 | 760 |
| 781 void MacroAssembler::AssertNumber(Register object) { | 761 void MacroAssembler::AssertNumber(Register object) { |
| 782 if (emit_debug_code()) { | 762 if (emit_debug_code()) { |
| 783 Label ok; | 763 Label ok; |
| 784 JumpIfSmi(object, &ok); | 764 JumpIfSmi(object, &ok); |
| (...skipping 992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1777 j(sign, then_label); | 1757 j(sign, then_label); |
| 1778 bind(&ok); | 1758 bind(&ok); |
| 1779 } | 1759 } |
| 1780 | 1760 |
| 1781 | 1761 |
| 1782 void MacroAssembler::GetMapConstructor(Register result, Register map, | 1762 void MacroAssembler::GetMapConstructor(Register result, Register map, |
| 1783 Register temp) { | 1763 Register temp) { |
| 1784 Label done, loop; | 1764 Label done, loop; |
| 1785 mov(result, FieldOperand(map, Map::kConstructorOrBackPointerOffset)); | 1765 mov(result, FieldOperand(map, Map::kConstructorOrBackPointerOffset)); |
| 1786 bind(&loop); | 1766 bind(&loop); |
| 1787 JumpIfSmi(result, &done); | 1767 JumpIfSmi(result, &done, Label::kNear); |
| 1788 CmpObjectType(result, MAP_TYPE, temp); | 1768 CmpObjectType(result, MAP_TYPE, temp); |
| 1789 j(not_equal, &done); | 1769 j(not_equal, &done, Label::kNear); |
| 1790 mov(result, FieldOperand(result, Map::kConstructorOrBackPointerOffset)); | 1770 mov(result, FieldOperand(result, Map::kConstructorOrBackPointerOffset)); |
| 1791 jmp(&loop); | 1771 jmp(&loop); |
| 1792 bind(&done); | 1772 bind(&done); |
| 1793 } | 1773 } |
| 1794 | 1774 |
| 1795 | 1775 |
| 1796 void MacroAssembler::TryGetFunctionPrototype(Register function, Register result, | 1776 void MacroAssembler::TryGetFunctionPrototype(Register function, Register result, |
| 1797 Register scratch, Label* miss) { | 1777 Register scratch, Label* miss) { |
| 1798 // Get the prototype or initial map from the function. | 1778 // Get the prototype or initial map from the function. |
| 1799 mov(result, | 1779 mov(result, |
| (...skipping 1383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3183 mov(eax, dividend); | 3163 mov(eax, dividend); |
| 3184 shr(eax, 31); | 3164 shr(eax, 31); |
| 3185 add(edx, eax); | 3165 add(edx, eax); |
| 3186 } | 3166 } |
| 3187 | 3167 |
| 3188 | 3168 |
| 3189 } // namespace internal | 3169 } // namespace internal |
| 3190 } // namespace v8 | 3170 } // namespace v8 |
| 3191 | 3171 |
| 3192 #endif // V8_TARGET_ARCH_IA32 | 3172 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |