| OLD | NEW | 
|---|
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 
| 2 // All Rights Reserved. | 2 // All Rights Reserved. | 
| 3 // | 3 // | 
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without | 
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions | 
| 6 // are met: | 6 // are met: | 
| 7 // | 7 // | 
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, | 
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. | 
| 10 // | 10 // | 
| (...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 560   EnsureSpace ensure_space(this); | 560   EnsureSpace ensure_space(this); | 
| 561   if (src.is(eax) || dst.is(eax)) {  // Single-byte encoding. | 561   if (src.is(eax) || dst.is(eax)) {  // Single-byte encoding. | 
| 562     EMIT(0x90 | (src.is(eax) ? dst.code() : src.code())); | 562     EMIT(0x90 | (src.is(eax) ? dst.code() : src.code())); | 
| 563   } else { | 563   } else { | 
| 564     EMIT(0x87); | 564     EMIT(0x87); | 
| 565     EMIT(0xC0 | src.code() << 3 | dst.code()); | 565     EMIT(0xC0 | src.code() << 3 | dst.code()); | 
| 566   } | 566   } | 
| 567 } | 567 } | 
| 568 | 568 | 
| 569 | 569 | 
|  | 570 void Assembler::xchg(Register dst, const Operand& src) { | 
|  | 571   EnsureSpace ensure_space(this); | 
|  | 572   EMIT(0x87); | 
|  | 573   emit_operand(dst, src); | 
|  | 574 } | 
|  | 575 | 
|  | 576 | 
| 570 void Assembler::adc(Register dst, int32_t imm32) { | 577 void Assembler::adc(Register dst, int32_t imm32) { | 
| 571   EnsureSpace ensure_space(this); | 578   EnsureSpace ensure_space(this); | 
| 572   emit_arith(2, Operand(dst), Immediate(imm32)); | 579   emit_arith(2, Operand(dst), Immediate(imm32)); | 
| 573 } | 580 } | 
| 574 | 581 | 
| 575 | 582 | 
| 576 void Assembler::adc(Register dst, const Operand& src) { | 583 void Assembler::adc(Register dst, const Operand& src) { | 
| 577   EnsureSpace ensure_space(this); | 584   EnsureSpace ensure_space(this); | 
| 578   EMIT(0x13); | 585   EMIT(0x13); | 
| 579   emit_operand(dst, src); | 586   emit_operand(dst, src); | 
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 743   emit_operand(ecx, dst); | 750   emit_operand(ecx, dst); | 
| 744 } | 751 } | 
| 745 | 752 | 
| 746 | 753 | 
| 747 void Assembler::cdq() { | 754 void Assembler::cdq() { | 
| 748   EnsureSpace ensure_space(this); | 755   EnsureSpace ensure_space(this); | 
| 749   EMIT(0x99); | 756   EMIT(0x99); | 
| 750 } | 757 } | 
| 751 | 758 | 
| 752 | 759 | 
| 753 void Assembler::idiv(Register src) { | 760 void Assembler::idiv(const Operand& src) { | 
| 754   EnsureSpace ensure_space(this); | 761   EnsureSpace ensure_space(this); | 
| 755   EMIT(0xF7); | 762   EMIT(0xF7); | 
| 756   EMIT(0xF8 | src.code()); | 763   emit_operand(edi, src); | 
| 757 } | 764 } | 
| 758 | 765 | 
| 759 | 766 | 
|  | 767 void Assembler::div(const Operand& src) { | 
|  | 768   EnsureSpace ensure_space(this); | 
|  | 769   EMIT(0xF7); | 
|  | 770   emit_operand(esi, src); | 
|  | 771 } | 
|  | 772 | 
|  | 773 | 
| 760 void Assembler::imul(Register reg) { | 774 void Assembler::imul(Register reg) { | 
| 761   EnsureSpace ensure_space(this); | 775   EnsureSpace ensure_space(this); | 
| 762   EMIT(0xF7); | 776   EMIT(0xF7); | 
| 763   EMIT(0xE8 | reg.code()); | 777   EMIT(0xE8 | reg.code()); | 
| 764 } | 778 } | 
| 765 | 779 | 
| 766 | 780 | 
| 767 void Assembler::imul(Register dst, const Operand& src) { | 781 void Assembler::imul(Register dst, const Operand& src) { | 
| 768   EnsureSpace ensure_space(this); | 782   EnsureSpace ensure_space(this); | 
| 769   EMIT(0x0F); | 783   EMIT(0x0F); | 
| 770   EMIT(0xAF); | 784   EMIT(0xAF); | 
| 771   emit_operand(dst, src); | 785   emit_operand(dst, src); | 
| 772 } | 786 } | 
| 773 | 787 | 
| 774 | 788 | 
| 775 void Assembler::imul(Register dst, Register src, int32_t imm32) { | 789 void Assembler::imul(Register dst, Register src, int32_t imm32) { | 
|  | 790   imul(dst, Operand(src), imm32); | 
|  | 791 } | 
|  | 792 | 
|  | 793 | 
|  | 794 void Assembler::imul(Register dst, const Operand& src, int32_t imm32) { | 
| 776   EnsureSpace ensure_space(this); | 795   EnsureSpace ensure_space(this); | 
| 777   if (is_int8(imm32)) { | 796   if (is_int8(imm32)) { | 
| 778     EMIT(0x6B); | 797     EMIT(0x6B); | 
| 779     EMIT(0xC0 | dst.code() << 3 | src.code()); | 798     emit_operand(dst, src); | 
| 780     EMIT(imm32); | 799     EMIT(imm32); | 
| 781   } else { | 800   } else { | 
| 782     EMIT(0x69); | 801     EMIT(0x69); | 
| 783     EMIT(0xC0 | dst.code() << 3 | src.code()); | 802     emit_operand(dst, src); | 
| 784     emit(imm32); | 803     emit(imm32); | 
| 785   } | 804   } | 
| 786 } | 805 } | 
| 787 | 806 | 
| 788 | 807 | 
| 789 void Assembler::inc(Register dst) { | 808 void Assembler::inc(Register dst) { | 
| 790   EnsureSpace ensure_space(this); | 809   EnsureSpace ensure_space(this); | 
| 791   EMIT(0x40 | dst.code()); | 810   EMIT(0x40 | dst.code()); | 
| 792 } | 811 } | 
| 793 | 812 | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 813 } | 832 } | 
| 814 | 833 | 
| 815 | 834 | 
| 816 void Assembler::neg(Register dst) { | 835 void Assembler::neg(Register dst) { | 
| 817   EnsureSpace ensure_space(this); | 836   EnsureSpace ensure_space(this); | 
| 818   EMIT(0xF7); | 837   EMIT(0xF7); | 
| 819   EMIT(0xD8 | dst.code()); | 838   EMIT(0xD8 | dst.code()); | 
| 820 } | 839 } | 
| 821 | 840 | 
| 822 | 841 | 
|  | 842 void Assembler::neg(const Operand& dst) { | 
|  | 843   EnsureSpace ensure_space(this); | 
|  | 844   EMIT(0xF7); | 
|  | 845   emit_operand(ebx, dst); | 
|  | 846 } | 
|  | 847 | 
|  | 848 | 
| 823 void Assembler::not_(Register dst) { | 849 void Assembler::not_(Register dst) { | 
| 824   EnsureSpace ensure_space(this); | 850   EnsureSpace ensure_space(this); | 
| 825   EMIT(0xF7); | 851   EMIT(0xF7); | 
| 826   EMIT(0xD0 | dst.code()); | 852   EMIT(0xD0 | dst.code()); | 
| 827 } | 853 } | 
| 828 | 854 | 
| 829 | 855 | 
|  | 856 void Assembler::not_(const Operand& dst) { | 
|  | 857   EnsureSpace ensure_space(this); | 
|  | 858   EMIT(0xF7); | 
|  | 859   emit_operand(edx, dst); | 
|  | 860 } | 
|  | 861 | 
|  | 862 | 
| 830 void Assembler::or_(Register dst, int32_t imm32) { | 863 void Assembler::or_(Register dst, int32_t imm32) { | 
| 831   EnsureSpace ensure_space(this); | 864   EnsureSpace ensure_space(this); | 
| 832   emit_arith(1, Operand(dst), Immediate(imm32)); | 865   emit_arith(1, Operand(dst), Immediate(imm32)); | 
| 833 } | 866 } | 
| 834 | 867 | 
| 835 | 868 | 
| 836 void Assembler::or_(Register dst, const Operand& src) { | 869 void Assembler::or_(Register dst, const Operand& src) { | 
| 837   EnsureSpace ensure_space(this); | 870   EnsureSpace ensure_space(this); | 
| 838   EMIT(0x0B); | 871   EMIT(0x0B); | 
| 839   emit_operand(dst, src); | 872   emit_operand(dst, src); | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 895 } | 928 } | 
| 896 | 929 | 
| 897 | 930 | 
| 898 void Assembler::ror_cl(Register dst) { | 931 void Assembler::ror_cl(Register dst) { | 
| 899   EnsureSpace ensure_space(this); | 932   EnsureSpace ensure_space(this); | 
| 900   EMIT(0xD3); | 933   EMIT(0xD3); | 
| 901   EMIT(0xC8 | dst.code()); | 934   EMIT(0xC8 | dst.code()); | 
| 902 } | 935 } | 
| 903 | 936 | 
| 904 | 937 | 
| 905 void Assembler::sar(Register dst, uint8_t imm8) { | 938 void Assembler::sar(const Operand& dst, uint8_t imm8) { | 
| 906   EnsureSpace ensure_space(this); | 939   EnsureSpace ensure_space(this); | 
| 907   ASSERT(is_uint5(imm8));  // illegal shift count | 940   ASSERT(is_uint5(imm8));  // illegal shift count | 
| 908   if (imm8 == 1) { | 941   if (imm8 == 1) { | 
| 909     EMIT(0xD1); | 942     EMIT(0xD1); | 
| 910     EMIT(0xF8 | dst.code()); | 943     emit_operand(edi, dst); | 
| 911   } else { | 944   } else { | 
| 912     EMIT(0xC1); | 945     EMIT(0xC1); | 
| 913     EMIT(0xF8 | dst.code()); | 946     emit_operand(edi, dst); | 
| 914     EMIT(imm8); | 947     EMIT(imm8); | 
| 915   } | 948   } | 
| 916 } | 949 } | 
| 917 | 950 | 
| 918 | 951 | 
| 919 void Assembler::sar_cl(Register dst) { | 952 void Assembler::sar_cl(const Operand& dst) { | 
| 920   EnsureSpace ensure_space(this); | 953   EnsureSpace ensure_space(this); | 
| 921   EMIT(0xD3); | 954   EMIT(0xD3); | 
| 922   EMIT(0xF8 | dst.code()); | 955   emit_operand(edi, dst); | 
| 923 } | 956 } | 
| 924 | 957 | 
| 925 | 958 | 
| 926 void Assembler::sbb(Register dst, const Operand& src) { | 959 void Assembler::sbb(Register dst, const Operand& src) { | 
| 927   EnsureSpace ensure_space(this); | 960   EnsureSpace ensure_space(this); | 
| 928   EMIT(0x1B); | 961   EMIT(0x1B); | 
| 929   emit_operand(dst, src); | 962   emit_operand(dst, src); | 
| 930 } | 963 } | 
| 931 | 964 | 
| 932 | 965 | 
| 933 void Assembler::shld(Register dst, const Operand& src) { | 966 void Assembler::shld(Register dst, const Operand& src) { | 
| 934   EnsureSpace ensure_space(this); | 967   EnsureSpace ensure_space(this); | 
| 935   EMIT(0x0F); | 968   EMIT(0x0F); | 
| 936   EMIT(0xA5); | 969   EMIT(0xA5); | 
| 937   emit_operand(dst, src); | 970   emit_operand(dst, src); | 
| 938 } | 971 } | 
| 939 | 972 | 
| 940 | 973 | 
| 941 void Assembler::shl(Register dst, uint8_t imm8) { | 974 void Assembler::shl(const Operand& dst, uint8_t imm8) { | 
| 942   EnsureSpace ensure_space(this); | 975   EnsureSpace ensure_space(this); | 
| 943   ASSERT(is_uint5(imm8));  // illegal shift count | 976   ASSERT(is_uint5(imm8));  // illegal shift count | 
| 944   if (imm8 == 1) { | 977   if (imm8 == 1) { | 
| 945     EMIT(0xD1); | 978     EMIT(0xD1); | 
| 946     EMIT(0xE0 | dst.code()); | 979     emit_operand(esp, dst); | 
| 947   } else { | 980   } else { | 
| 948     EMIT(0xC1); | 981     EMIT(0xC1); | 
| 949     EMIT(0xE0 | dst.code()); | 982     emit_operand(esp, dst); | 
| 950     EMIT(imm8); | 983     EMIT(imm8); | 
| 951   } | 984   } | 
| 952 } | 985 } | 
| 953 | 986 | 
| 954 | 987 | 
| 955 void Assembler::shl_cl(Register dst) { | 988 void Assembler::shl_cl(const Operand& dst) { | 
| 956   EnsureSpace ensure_space(this); | 989   EnsureSpace ensure_space(this); | 
| 957   EMIT(0xD3); | 990   EMIT(0xD3); | 
| 958   EMIT(0xE0 | dst.code()); | 991   emit_operand(esp, dst); | 
| 959 } | 992 } | 
| 960 | 993 | 
| 961 | 994 | 
| 962 void Assembler::shrd(Register dst, const Operand& src) { | 995 void Assembler::shrd(Register dst, const Operand& src) { | 
| 963   EnsureSpace ensure_space(this); | 996   EnsureSpace ensure_space(this); | 
| 964   EMIT(0x0F); | 997   EMIT(0x0F); | 
| 965   EMIT(0xAD); | 998   EMIT(0xAD); | 
| 966   emit_operand(dst, src); | 999   emit_operand(dst, src); | 
| 967 } | 1000 } | 
| 968 | 1001 | 
| 969 | 1002 | 
| 970 void Assembler::shr(Register dst, uint8_t imm8) { | 1003 void Assembler::shr(const Operand& dst, uint8_t imm8) { | 
| 971   EnsureSpace ensure_space(this); | 1004   EnsureSpace ensure_space(this); | 
| 972   ASSERT(is_uint5(imm8));  // illegal shift count | 1005   ASSERT(is_uint5(imm8));  // illegal shift count | 
| 973   if (imm8 == 1) { | 1006   if (imm8 == 1) { | 
| 974     EMIT(0xD1); | 1007     EMIT(0xD1); | 
| 975     EMIT(0xE8 | dst.code()); | 1008     emit_operand(ebp, dst); | 
| 976   } else { | 1009   } else { | 
| 977     EMIT(0xC1); | 1010     EMIT(0xC1); | 
| 978     EMIT(0xE8 | dst.code()); | 1011     emit_operand(ebp, dst); | 
| 979     EMIT(imm8); | 1012     EMIT(imm8); | 
| 980   } | 1013   } | 
| 981 } | 1014 } | 
| 982 | 1015 | 
| 983 | 1016 | 
| 984 void Assembler::shr_cl(Register dst) { | 1017 void Assembler::shr_cl(const Operand& dst) { | 
| 985   EnsureSpace ensure_space(this); | 1018   EnsureSpace ensure_space(this); | 
| 986   EMIT(0xD3); | 1019   EMIT(0xD3); | 
| 987   EMIT(0xE8 | dst.code()); | 1020   emit_operand(ebp, dst); | 
| 988 } | 1021 } | 
| 989 | 1022 | 
| 990 | 1023 | 
| 991 void Assembler::sub(const Operand& dst, const Immediate& x) { | 1024 void Assembler::sub(const Operand& dst, const Immediate& x) { | 
| 992   EnsureSpace ensure_space(this); | 1025   EnsureSpace ensure_space(this); | 
| 993   emit_arith(5, dst, x); | 1026   emit_arith(5, dst, x); | 
| 994 } | 1027 } | 
| 995 | 1028 | 
| 996 | 1029 | 
| 997 void Assembler::sub(Register dst, const Operand& src) { | 1030 void Assembler::sub(Register dst, const Operand& src) { | 
| (...skipping 1022 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2020     fprintf(coverage_log, "%s\n", file_line); | 2053     fprintf(coverage_log, "%s\n", file_line); | 
| 2021     fflush(coverage_log); | 2054     fflush(coverage_log); | 
| 2022   } | 2055   } | 
| 2023 } | 2056 } | 
| 2024 | 2057 | 
| 2025 #endif | 2058 #endif | 
| 2026 | 2059 | 
| 2027 } }  // namespace v8::internal | 2060 } }  // namespace v8::internal | 
| 2028 | 2061 | 
| 2029 #endif  // V8_TARGET_ARCH_X87 | 2062 #endif  // V8_TARGET_ARCH_X87 | 
| OLD | NEW | 
|---|