Changeset 39043 in webkit for trunk/JavaScriptCore/assembler/MacroAssembler.h
- Timestamp:
- Dec 5, 2008, 2:14:11 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssembler.h
r39020 r39043 168 168 public: 169 169 Jump() 170 : m_assembler(0)171 {172 }173 174 Jump(X86Assembler& assembler, X86Assembler::JmpSrc jmp)175 : m_assembler(&assembler)176 , m_jmp(jmp)177 170 { 178 171 } 179 172 180 void link() 181 { 182 ASSERT(m_assembler); 183 m_assembler->link(m_jmp, m_assembler->label()); 173 Jump(X86Assembler::JmpSrc jmp) 174 : m_jmp(jmp) 175 { 184 176 } 185 177 186 void linkTo(Label label) 187 { 188 ASSERT(m_assembler); 189 m_assembler->link(m_jmp, label.m_label); 178 void link(MacroAssembler* masm) 179 { 180 masm->m_assembler.link(m_jmp, masm->m_assembler.label()); 181 } 182 183 void linkTo(Label label, MacroAssembler* masm) 184 { 185 masm->m_assembler.link(m_jmp, label.m_label); 190 186 } 191 187 … … 197 193 198 194 private: 199 X86Assembler* m_assembler;200 195 X86Assembler::JmpSrc m_jmp; 201 196 }; … … 207 202 class JumpList { 208 203 public: 209 void link( )204 void link(MacroAssembler* masm) 210 205 { 211 206 size_t size = m_jumps.size(); 212 207 for (size_t i = 0; i < size; ++i) 213 m_jumps[i].link( );208 m_jumps[i].link(masm); 214 209 m_jumps.clear(); 215 210 } 216 211 217 void linkTo(Label label )212 void linkTo(Label label, MacroAssembler* masm) 218 213 { 219 214 size_t size = m_jumps.size(); 220 215 for (size_t i = 0; i < size; ++i) 221 m_jumps[i].linkTo(label );216 m_jumps[i].linkTo(label, masm); 222 217 m_jumps.clear(); 223 218 } … … 564 559 { 565 560 compareImm32ForBranch(left, right.m_value); 566 return Jump(m_assembler , m_assembler.jae());561 return Jump(m_assembler.jae()); 567 562 } 568 563 … … 570 565 { 571 566 m_assembler.cmpl_rr(op1, op2); 572 return Jump(m_assembler , m_assembler.je());567 return Jump(m_assembler.je()); 573 568 } 574 569 … … 576 571 { 577 572 m_assembler.cmpl_rm(op1, op2.offset, op2.base); 578 return Jump(m_assembler , m_assembler.je());573 return Jump(m_assembler.je()); 579 574 } 580 575 … … 582 577 { 583 578 compareImm32ForBranchEquality(reg, imm.m_value); 584 return Jump(m_assembler , m_assembler.je());579 return Jump(m_assembler.je()); 585 580 } 586 581 … … 592 587 m_assembler.cmpw_rm(op1, op2.offset, op2.base, op2.index, op2.scale); 593 588 594 return Jump(m_assembler , m_assembler.je());589 return Jump(m_assembler.je()); 595 590 } 596 591 … … 598 593 { 599 594 m_assembler.cmpl_rr(right, left); 600 return Jump(m_assembler , m_assembler.jg());595 return Jump(m_assembler.jg()); 601 596 } 602 597 … … 604 599 { 605 600 m_assembler.cmpl_rr(right, left); 606 return Jump(m_assembler , m_assembler.jge());601 return Jump(m_assembler.jge()); 607 602 } 608 603 … … 610 605 { 611 606 compareImm32ForBranch(left, right.m_value); 612 return Jump(m_assembler , m_assembler.jge());607 return Jump(m_assembler.jge()); 613 608 } 614 609 … … 616 611 { 617 612 compareImm32ForBranch(left, right.m_value); 618 return Jump(m_assembler , m_assembler.jl());613 return Jump(m_assembler.jl()); 619 614 } 620 615 … … 622 617 { 623 618 m_assembler.cmpl_rr(right, left); 624 return Jump(m_assembler , m_assembler.jle());619 return Jump(m_assembler.jle()); 625 620 } 626 621 … … 628 623 { 629 624 compareImm32ForBranch(left, right.m_value); 630 return Jump(m_assembler , m_assembler.jle());625 return Jump(m_assembler.jle()); 631 626 } 632 627 … … 635 630 { 636 631 compareImm32ForBranchEquality(address, reinterpret_cast<uint32_t>(ptr)); 637 return Jump(m_assembler , m_assembler.jne());632 return Jump(m_assembler.jne()); 638 633 } 639 634 #endif … … 642 637 { 643 638 m_assembler.cmpl_rr(op1, op2); 644 return Jump(m_assembler , m_assembler.jne());639 return Jump(m_assembler.jne()); 645 640 } 646 641 … … 648 643 { 649 644 compareImm32ForBranchEquality(reg, imm.m_value); 650 return Jump(m_assembler , m_assembler.jne());645 return Jump(m_assembler.jne()); 651 646 } 652 647 … … 658 653 else 659 654 m_assembler.testl_i32r(imm.m_value, reg); 660 return Jump(m_assembler , m_assembler.je());655 return Jump(m_assembler.je()); 661 656 } 662 657 … … 668 663 else 669 664 m_assembler.testl_i32r(imm.m_value, reg); 670 return Jump(m_assembler , m_assembler.jne());665 return Jump(m_assembler.jne()); 671 666 } 672 667 673 668 Jump jump() 674 669 { 675 return Jump(m_assembler , m_assembler.jmp());670 return Jump(m_assembler.jmp()); 676 671 } 677 672 … … 699 694 void je32(Imm32 imm, RegisterID op2, Label target) 700 695 { 701 je32(imm, op2).linkTo(target );696 je32(imm, op2).linkTo(target, this); 702 697 } 703 698 704 699 void je16(RegisterID op1, BaseIndex op2, Label target) 705 700 { 706 je16(op1, op2).linkTo(target );701 je16(op1, op2).linkTo(target, this); 707 702 } 708 703 709 704 void jl32(RegisterID left, Imm32 right, Label target) 710 705 { 711 jl32(left, right).linkTo(target );706 jl32(left, right).linkTo(target, this); 712 707 } 713 708 714 709 void jle32(RegisterID left, RegisterID right, Label target) 715 710 { 716 jle32(left, right).linkTo(target );711 jle32(left, right).linkTo(target, this); 717 712 } 718 713 719 714 void jne32(RegisterID op1, RegisterID op2, Label target) 720 715 { 721 jne32(op1, op2).linkTo(target );716 jne32(op1, op2).linkTo(target, this); 722 717 } 723 718 724 719 void jne32(Imm32 imm, RegisterID op2, Label target) 725 720 { 726 jne32(imm, op2).linkTo(target );721 jne32(imm, op2).linkTo(target, this); 727 722 } 728 723 … … 749 744 else 750 745 m_assembler.subl_i32r(imm.m_value, dest); 751 return Jump(m_assembler , m_assembler.je());746 return Jump(m_assembler.je()); 752 747 } 753 748 … … 755 750 { 756 751 m_assembler.addl_rr(src, dest); 757 return Jump(m_assembler , m_assembler.jo());752 return Jump(m_assembler.jo()); 758 753 } 759 754 … … 768 763 Jump call() 769 764 { 770 return Jump(m_assembler , m_assembler.call());765 return Jump(m_assembler.call()); 771 766 } 772 767 773 768 Jump call(RegisterID target) 774 769 { 775 return Jump(m_assembler , m_assembler.call(target));770 return Jump(m_assembler.call(target)); 776 771 } 777 772
Note:
See TracChangeset
for help on using the changeset viewer.