src/share/vm/code/relocInfo.cpp

changeset 7194
33acb0c42664
parent 6680
78bbf4d43a14
child 7535
7ae4e26cb1e0
child 8773
1eaa9a72d705
     1.1 --- a/src/share/vm/code/relocInfo.cpp	Tue Jun 24 08:12:30 2014 +0200
     1.2 +++ b/src/share/vm/code/relocInfo.cpp	Wed Jun 11 09:16:19 2014 +0200
     1.3 @@ -877,11 +877,7 @@
     1.4  void internal_word_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) {
     1.5    address target = _target;
     1.6    if (target == NULL) {
     1.7 -    if (addr_in_const()) {
     1.8 -      target = new_addr_for(*(address*)addr(), src, dest);
     1.9 -    } else {
    1.10 -      target = new_addr_for(pd_get_address_from_code(), src, dest);
    1.11 -    }
    1.12 +    target = new_addr_for(this->target(), src, dest);
    1.13    }
    1.14    set_value(target);
    1.15  }
    1.16 @@ -890,7 +886,11 @@
    1.17  address internal_word_Relocation::target() {
    1.18    address target = _target;
    1.19    if (target == NULL) {
    1.20 -    target = pd_get_address_from_code();
    1.21 +    if (addr_in_const()) {
    1.22 +      target = *(address*)addr();
    1.23 +    } else {
    1.24 +      target = pd_get_address_from_code();
    1.25 +    }
    1.26    }
    1.27    return target;
    1.28  }

mercurial