Changeset 82130 in webkit for trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
- Timestamp:
- Mar 28, 2011, 10:14:57 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
r81408 r82130 84 84 // 85 85 // Operations are typically two operand - operation(source, srcDst) 86 // For many operations the source may be an Imm32, the srcDst operand86 // For many operations the source may be an TrustedImm32, the srcDst operand 87 87 // may often be a memory location (explictly described using an Address 88 88 // object). … … 93 93 } 94 94 95 void add32( Imm32 imm, Address address)95 void add32(TrustedImm32 imm, Address address) 96 96 { 97 97 m_assembler.addl_im(imm.m_value, address.offset, address.base); 98 98 } 99 99 100 void add32( Imm32 imm, RegisterID dest)100 void add32(TrustedImm32 imm, RegisterID dest) 101 101 { 102 102 m_assembler.addl_ir(imm.m_value, dest); … … 118 118 } 119 119 120 void and32( Imm32 imm, RegisterID dest)120 void and32(TrustedImm32 imm, RegisterID dest) 121 121 { 122 122 m_assembler.andl_ir(imm.m_value, dest); … … 133 133 } 134 134 135 void and32( Imm32 imm, Address address)135 void and32(TrustedImm32 imm, Address address) 136 136 { 137 137 m_assembler.andl_im(imm.m_value, address.offset, address.base); … … 150 150 } 151 151 152 void and32( Imm32 imm, RegisterID src, RegisterID dest)152 void and32(TrustedImm32 imm, RegisterID src, RegisterID dest) 153 153 { 154 154 move(src, dest); … … 181 181 } 182 182 183 void lshift32( Imm32 imm, RegisterID dest)183 void lshift32(TrustedImm32 imm, RegisterID dest) 184 184 { 185 185 m_assembler.shll_i8r(imm.m_value, dest); 186 186 } 187 187 188 void lshift32(RegisterID src, Imm32 imm, RegisterID dest)188 void lshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) 189 189 { 190 190 if (src != dest) … … 203 203 } 204 204 205 void mul32( Imm32 imm, RegisterID src, RegisterID dest)205 void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest) 206 206 { 207 207 m_assembler.imull_i32r(src, imm.m_value, dest); … … 233 233 } 234 234 235 void or32( Imm32 imm, RegisterID dest)235 void or32(TrustedImm32 imm, RegisterID dest) 236 236 { 237 237 m_assembler.orl_ir(imm.m_value, dest); … … 248 248 } 249 249 250 void or32( Imm32 imm, Address address)250 void or32(TrustedImm32 imm, Address address) 251 251 { 252 252 m_assembler.orl_im(imm.m_value, address.offset, address.base); … … 265 265 } 266 266 267 void or32( Imm32 imm, RegisterID src, RegisterID dest)267 void or32(TrustedImm32 imm, RegisterID src, RegisterID dest) 268 268 { 269 269 move(src, dest); … … 296 296 } 297 297 298 void rshift32( Imm32 imm, RegisterID dest)298 void rshift32(TrustedImm32 imm, RegisterID dest) 299 299 { 300 300 m_assembler.sarl_i8r(imm.m_value, dest); 301 301 } 302 302 303 void rshift32(RegisterID src, Imm32 imm, RegisterID dest)303 void rshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) 304 304 { 305 305 if (src != dest) … … 333 333 } 334 334 335 void urshift32( Imm32 imm, RegisterID dest)335 void urshift32(TrustedImm32 imm, RegisterID dest) 336 336 { 337 337 m_assembler.shrl_i8r(imm.m_value, dest); 338 338 } 339 339 340 void urshift32(RegisterID src, Imm32 imm, RegisterID dest)340 void urshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) 341 341 { 342 342 if (src != dest) … … 350 350 } 351 351 352 void sub32( Imm32 imm, RegisterID dest)352 void sub32(TrustedImm32 imm, RegisterID dest) 353 353 { 354 354 m_assembler.subl_ir(imm.m_value, dest); 355 355 } 356 356 357 void sub32( Imm32 imm, Address address)357 void sub32(TrustedImm32 imm, Address address) 358 358 { 359 359 m_assembler.subl_im(imm.m_value, address.offset, address.base); … … 376 376 } 377 377 378 void xor32( Imm32 imm, Address dest)378 void xor32(TrustedImm32 imm, Address dest) 379 379 { 380 380 m_assembler.xorl_im(imm.m_value, dest.offset, dest.base); 381 381 } 382 382 383 void xor32( Imm32 imm, RegisterID dest)383 void xor32(TrustedImm32 imm, RegisterID dest) 384 384 { 385 385 m_assembler.xorl_ir(imm.m_value, dest); … … 399 399 { 400 400 if (op1 == op2) 401 move( Imm32(0), dest);401 move(TrustedImm32(0), dest); 402 402 else if (op1 == dest) 403 403 xor32(op2, dest); … … 408 408 } 409 409 410 void xor32( Imm32 imm, RegisterID src, RegisterID dest)410 void xor32(TrustedImm32 imm, RegisterID src, RegisterID dest) 411 411 { 412 412 move(src, dest); … … 422 422 // 423 423 // Loads are of the form load(address, destination) and stores of the form 424 // store(source, address). The source for a store may be an Imm32. Address424 // store(source, address). The source for a store may be an TrustedImm32. Address 425 425 // operand objects to loads and store will be implicitly constructed if a 426 426 // register is passed. … … 473 473 } 474 474 475 void store32( Imm32 imm, ImplicitAddress address)475 void store32(TrustedImm32 imm, ImplicitAddress address) 476 476 { 477 477 m_assembler.movl_i32m(imm.m_value, address.offset, address.base); … … 638 638 ASSERT(isSSE2Present()); 639 639 m_assembler.cvttsd2si_rr(src, dest); 640 return branch32(branchType ? NotEqual : Equal, dest, Imm32(0x80000000));640 return branch32(branchType ? NotEqual : Equal, dest, TrustedImm32(0x80000000)); 641 641 } 642 642 … … 697 697 } 698 698 699 void push( Imm32 imm)699 void push(TrustedImm32 imm) 700 700 { 701 701 m_assembler.push_i32(imm.m_value); … … 707 707 // Move values in registers. 708 708 709 void move( Imm32 imm, RegisterID dest)710 { 711 // Note: on 64-bit the Imm32 value is zero extended into the register, it709 void move(TrustedImm32 imm, RegisterID dest) 710 { 711 // Note: on 64-bit the TrustedImm32 value is zero extended into the register, it 712 712 // may be useful to have a separate version that sign extends the value? 713 713 if (!imm.m_value) … … 726 726 } 727 727 728 void move( ImmPtr imm, RegisterID dest)728 void move(TrustedImmPtr imm, RegisterID dest) 729 729 { 730 730 m_assembler.movq_i64r(imm.asIntptr(), dest); … … 753 753 } 754 754 755 void move( ImmPtr imm, RegisterID dest)755 void move(TrustedImmPtr imm, RegisterID dest) 756 756 { 757 757 m_assembler.movl_i32r(imm.asIntptr(), dest); … … 788 788 // 789 789 // Operands to the comparision are provided in the expected order, e.g. 790 // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when790 // jle32(reg1, TrustedImm32(5)) will branch if the value held in reg1, when 791 791 // treated as a signed 32bit value, is less than or equal to 5. 792 792 // … … 795 795 796 796 public: 797 Jump branch8(Condition cond, Address left, Imm32 right)797 Jump branch8(Condition cond, Address left, TrustedImm32 right) 798 798 { 799 799 m_assembler.cmpb_im(right.m_value, left.offset, left.base); … … 807 807 } 808 808 809 Jump branch32(Condition cond, RegisterID left, Imm32 right)809 Jump branch32(Condition cond, RegisterID left, TrustedImm32 right) 810 810 { 811 811 if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) … … 828 828 } 829 829 830 Jump branch32(Condition cond, Address left, Imm32 right)830 Jump branch32(Condition cond, Address left, TrustedImm32 right) 831 831 { 832 832 m_assembler.cmpl_im(right.m_value, left.offset, left.base); … … 834 834 } 835 835 836 Jump branch32(Condition cond, BaseIndex left, Imm32 right)836 Jump branch32(Condition cond, BaseIndex left, TrustedImm32 right) 837 837 { 838 838 m_assembler.cmpl_im(right.m_value, left.offset, left.base, left.index, left.scale); … … 840 840 } 841 841 842 Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, Imm32 right)842 Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, TrustedImm32 right) 843 843 { 844 844 return branch32(cond, left, right); … … 851 851 } 852 852 853 Jump branch16(Condition cond, BaseIndex left, Imm32 right)853 Jump branch16(Condition cond, BaseIndex left, TrustedImm32 right) 854 854 { 855 855 ASSERT(!(right.m_value & 0xFFFF0000)); … … 866 866 } 867 867 868 Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask =Imm32(-1))868 Jump branchTest32(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) 869 869 { 870 870 ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); … … 879 879 } 880 880 881 Jump branchTest32(Condition cond, Address address, Imm32 mask =Imm32(-1))881 Jump branchTest32(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) 882 882 { 883 883 ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); … … 889 889 } 890 890 891 Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask =Imm32(-1))891 Jump branchTest32(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) 892 892 { 893 893 ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); … … 899 899 } 900 900 901 Jump branchTest8(Condition cond, RegisterID reg, Imm32 mask =Imm32(-1))902 { 903 // Byte in Imm32 is not well defined, so be a little permisive here, but don't accept nonsense values.901 Jump branchTest8(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) 902 { 903 // Byte in TrustedImm32 is not well defined, so be a little permisive here, but don't accept nonsense values. 904 904 ASSERT(mask.m_value >= -128 && mask.m_value <= 255); 905 905 ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); … … 911 911 } 912 912 913 Jump branchTest8(Condition cond, Address address, Imm32 mask =Imm32(-1))914 { 915 // Byte in Imm32 is not well defined, so be a little permisive here, but don't accept nonsense values.913 Jump branchTest8(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) 914 { 915 // Byte in TrustedImm32 is not well defined, so be a little permisive here, but don't accept nonsense values. 916 916 ASSERT(mask.m_value >= -128 && mask.m_value <= 255); 917 917 ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); … … 923 923 } 924 924 925 Jump branchTest8(Condition cond, BaseIndex address, Imm32 mask =Imm32(-1))926 { 927 // Byte in Imm32 is not well defined, so be a little permisive here, but don't accept nonsense values.925 Jump branchTest8(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) 926 { 927 // Byte in TrustedImm32 is not well defined, so be a little permisive here, but don't accept nonsense values. 928 928 ASSERT(mask.m_value >= -128 && mask.m_value <= 255); 929 929 ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); … … 969 969 } 970 970 971 Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest)971 Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID dest) 972 972 { 973 973 ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); … … 976 976 } 977 977 978 Jump branchAdd32(Condition cond, Imm32 src, Address dest)978 Jump branchAdd32(Condition cond, TrustedImm32 src, Address dest) 979 979 { 980 980 ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); … … 1005 1005 } 1006 1006 1007 Jump branchAdd32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest)1007 Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) 1008 1008 { 1009 1009 move(src, dest); … … 1025 1025 } 1026 1026 1027 Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest)1027 Jump branchMul32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) 1028 1028 { 1029 1029 ASSERT(cond == Overflow); … … 1047 1047 } 1048 1048 1049 Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest)1049 Jump branchSub32(Condition cond, TrustedImm32 imm, RegisterID dest) 1050 1050 { 1051 1051 ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); … … 1054 1054 } 1055 1055 1056 Jump branchSub32(Condition cond, Imm32 imm, Address dest)1056 Jump branchSub32(Condition cond, TrustedImm32 imm, Address dest) 1057 1057 { 1058 1058 ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); … … 1138 1138 } 1139 1139 1140 void set8Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest)1140 void set8Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) 1141 1141 { 1142 1142 if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) … … 1154 1154 } 1155 1155 1156 void set32Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest)1156 void set32Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) 1157 1157 { 1158 1158 if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) … … 1169 1169 // asm ops like test, or pseudo ops like pop(). 1170 1170 1171 void set32Test8(Condition cond, Address address, Imm32 mask, RegisterID dest)1171 void set32Test8(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) 1172 1172 { 1173 1173 if (mask.m_value == -1) … … 1179 1179 } 1180 1180 1181 void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest)1181 void set32Test32(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) 1182 1182 { 1183 1183 if (mask.m_value == -1)
Note:
See TracChangeset
for help on using the changeset viewer.