hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp
changeset 14837 a75c3082d106
parent 14834 f29c91f2f22b
child 15114 4074553c678b
equal deleted inserted replaced
14836:b7f2bc31dfdf 14837:a75c3082d106
  1021   movptr(dst, rscratch1);
  1021   movptr(dst, rscratch1);
  1022 }
  1022 }
  1023 
  1023 
  1024 void MacroAssembler::leave() {
  1024 void MacroAssembler::leave() {
  1025   // %%% is this really better? Why not on 32bit too?
  1025   // %%% is this really better? Why not on 32bit too?
  1026   emit_byte(0xC9); // LEAVE
  1026   emit_int8((unsigned char)0xC9); // LEAVE
  1027 }
  1027 }
  1028 
  1028 
  1029 void MacroAssembler::lneg(Register hi, Register lo) {
  1029 void MacroAssembler::lneg(Register hi, Register lo) {
  1030   ShouldNotReachHere(); // 64bit doesn't use two regs
  1030   ShouldNotReachHere(); // 64bit doesn't use two regs
  1031   negq(lo);
  1031   negq(lo);
  2110 // A 5 byte nop that is safe for patching (see patch_verified_entry)
  2110 // A 5 byte nop that is safe for patching (see patch_verified_entry)
  2111 void MacroAssembler::fat_nop() {
  2111 void MacroAssembler::fat_nop() {
  2112   if (UseAddressNop) {
  2112   if (UseAddressNop) {
  2113     addr_nop_5();
  2113     addr_nop_5();
  2114   } else {
  2114   } else {
  2115     emit_byte(0x26); // es:
  2115     emit_int8(0x26); // es:
  2116     emit_byte(0x2e); // cs:
  2116     emit_int8(0x2e); // cs:
  2117     emit_byte(0x64); // fs:
  2117     emit_int8(0x64); // fs:
  2118     emit_byte(0x65); // gs:
  2118     emit_int8(0x65); // gs:
  2119     emit_byte(0x90);
  2119     emit_int8((unsigned char)0x90);
  2120   }
  2120   }
  2121 }
  2121 }
  2122 
  2122 
  2123 void MacroAssembler::fcmp(Register tmp) {
  2123 void MacroAssembler::fcmp(Register tmp) {
  2124   fcmp(tmp, 1, true, true);
  2124   fcmp(tmp, 1, true, true);
  2532     const int short_size = 2;
  2532     const int short_size = 2;
  2533     const int long_size = 6;
  2533     const int long_size = 6;
  2534     int offs = (intptr_t)dst.target() - ((intptr_t)pc());
  2534     int offs = (intptr_t)dst.target() - ((intptr_t)pc());
  2535     if (dst.reloc() == relocInfo::none && is8bit(offs - short_size)) {
  2535     if (dst.reloc() == relocInfo::none && is8bit(offs - short_size)) {
  2536       // 0111 tttn #8-bit disp
  2536       // 0111 tttn #8-bit disp
  2537       emit_byte(0x70 | cc);
  2537       emit_int8(0x70 | cc);
  2538       emit_byte((offs - short_size) & 0xFF);
  2538       emit_int8((offs - short_size) & 0xFF);
  2539     } else {
  2539     } else {
  2540       // 0000 1111 1000 tttn #32-bit disp
  2540       // 0000 1111 1000 tttn #32-bit disp
  2541       emit_byte(0x0F);
  2541       emit_int8(0x0F);
  2542       emit_byte(0x80 | cc);
  2542       emit_int8((unsigned char)(0x80 | cc));
  2543       emit_long(offs - long_size);
  2543       emit_long(offs - long_size);
  2544     }
  2544     }
  2545   } else {
  2545   } else {
  2546 #ifdef ASSERT
  2546 #ifdef ASSERT
  2547     warning("reversing conditional branch");
  2547     warning("reversing conditional branch");