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_X87 | 5 #if V8_TARGET_ARCH_X87 |
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 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 Condition MacroAssembler::IsObjectNameType(Register heap_object, | 658 Condition MacroAssembler::IsObjectNameType(Register heap_object, |
659 Register map, | 659 Register map, |
660 Register instance_type) { | 660 Register instance_type) { |
661 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); | 661 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); |
662 movzx_b(instance_type, FieldOperand(map, Map::kInstanceTypeOffset)); | 662 movzx_b(instance_type, FieldOperand(map, Map::kInstanceTypeOffset)); |
663 cmpb(instance_type, static_cast<uint8_t>(LAST_NAME_TYPE)); | 663 cmpb(instance_type, static_cast<uint8_t>(LAST_NAME_TYPE)); |
664 return below_equal; | 664 return below_equal; |
665 } | 665 } |
666 | 666 |
667 | 667 |
668 void MacroAssembler::IsObjectJSObjectType(Register heap_object, | |
669 Register map, | |
670 Register scratch, | |
671 Label* fail) { | |
672 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); | |
673 IsInstanceJSObjectType(map, scratch, fail); | |
674 } | |
675 | |
676 | |
677 void MacroAssembler::IsInstanceJSObjectType(Register map, | |
678 Register scratch, | |
679 Label* fail) { | |
680 movzx_b(scratch, FieldOperand(map, Map::kInstanceTypeOffset)); | |
681 sub(scratch, Immediate(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); | |
682 cmp(scratch, | |
683 LAST_NONCALLABLE_SPEC_OBJECT_TYPE - FIRST_NONCALLABLE_SPEC_OBJECT_TYPE); | |
684 j(above, fail); | |
685 } | |
686 | |
687 | |
688 void MacroAssembler::FCmp() { | 668 void MacroAssembler::FCmp() { |
689 fucompp(); | 669 fucompp(); |
690 push(eax); | 670 push(eax); |
691 fnstsw_ax(); | 671 fnstsw_ax(); |
692 sahf(); | 672 sahf(); |
693 pop(eax); | 673 pop(eax); |
694 } | 674 } |
695 | 675 |
696 | 676 |
697 void MacroAssembler::FXamMinusZero() { | 677 void MacroAssembler::FXamMinusZero() { |
(...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1743 j(sign, then_label); | 1723 j(sign, then_label); |
1744 bind(&ok); | 1724 bind(&ok); |
1745 } | 1725 } |
1746 | 1726 |
1747 | 1727 |
1748 void MacroAssembler::GetMapConstructor(Register result, Register map, | 1728 void MacroAssembler::GetMapConstructor(Register result, Register map, |
1749 Register temp) { | 1729 Register temp) { |
1750 Label done, loop; | 1730 Label done, loop; |
1751 mov(result, FieldOperand(map, Map::kConstructorOrBackPointerOffset)); | 1731 mov(result, FieldOperand(map, Map::kConstructorOrBackPointerOffset)); |
1752 bind(&loop); | 1732 bind(&loop); |
1753 JumpIfSmi(result, &done); | 1733 JumpIfSmi(result, &done, Label::kNear); |
1754 CmpObjectType(result, MAP_TYPE, temp); | 1734 CmpObjectType(result, MAP_TYPE, temp); |
1755 j(not_equal, &done); | 1735 j(not_equal, &done, Label::kNear); |
1756 mov(result, FieldOperand(result, Map::kConstructorOrBackPointerOffset)); | 1736 mov(result, FieldOperand(result, Map::kConstructorOrBackPointerOffset)); |
1757 jmp(&loop); | 1737 jmp(&loop); |
1758 bind(&done); | 1738 bind(&done); |
1759 } | 1739 } |
1760 | 1740 |
1761 | 1741 |
1762 void MacroAssembler::TryGetFunctionPrototype(Register function, Register result, | 1742 void MacroAssembler::TryGetFunctionPrototype(Register function, Register result, |
1763 Register scratch, Label* miss) { | 1743 Register scratch, Label* miss) { |
1764 // Get the prototype or initial map from the function. | 1744 // Get the prototype or initial map from the function. |
1765 mov(result, | 1745 mov(result, |
(...skipping 1294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3060 mov(eax, dividend); | 3040 mov(eax, dividend); |
3061 shr(eax, 31); | 3041 shr(eax, 31); |
3062 add(edx, eax); | 3042 add(edx, eax); |
3063 } | 3043 } |
3064 | 3044 |
3065 | 3045 |
3066 } // namespace internal | 3046 } // namespace internal |
3067 } // namespace v8 | 3047 } // namespace v8 |
3068 | 3048 |
3069 #endif // V8_TARGET_ARCH_X87 | 3049 #endif // V8_TARGET_ARCH_X87 |
OLD | NEW |