diff src/cpu/x86/vm/relocInfo_x86.cpp @ 13553:d49f00604347

removed poll_Relocation::pollingForm type and associated data field and rely solely on format field of safepoint relocation entries when deciding whether or not to relocate the operand of a safepoint poll instruction
author Doug Simon <doug.simon@oracle.com>
date Wed, 08 Jan 2014 16:57:30 +0100
parents fa5180b3c18e
children 1302b727b5cd
line wrap: on
line diff
--- a/src/cpu/x86/vm/relocInfo_x86.cpp	Wed Jan 08 16:56:01 2014 +0100
+++ b/src/cpu/x86/vm/relocInfo_x86.cpp	Wed Jan 08 16:57:30 2014 +0100
@@ -179,17 +179,14 @@
 
 void poll_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) {
 #ifdef _LP64
-  if (_form == pc_relative) {
-    typedef Assembler::WhichOperand WhichOperand;
-    WhichOperand which = (WhichOperand) format();
-    // This format is imm but it is really disp32
-    which = Assembler::disp32_operand;
+  typedef Assembler::WhichOperand WhichOperand;
+  WhichOperand which = (WhichOperand) format();
+  if (which == Assembler::disp32_operand) {
     address orig_addr = old_addr_for(addr(), src, dest);
     NativeInstruction* oni = nativeInstruction_at(orig_addr);
     int32_t* orig_disp = (int32_t*) Assembler::locate_operand(orig_addr, which);
     // This poll_addr is incorrect by the size of the instruction it is irrelevant
     intptr_t poll_addr = (intptr_t)oni + *orig_disp;
-
     NativeInstruction* ni = nativeInstruction_at(addr());
     intptr_t new_disp = poll_addr - (intptr_t) ni;