src/cpu/x86/vm/relocInfo_x86.cpp

changeset 4037
da91efe96a93
parent 2686
b40d4fa697bf
child 4318
cd3d6a6b95d9
     1.1 --- a/src/cpu/x86/vm/relocInfo_x86.cpp	Fri Aug 31 16:39:35 2012 -0700
     1.2 +++ b/src/cpu/x86/vm/relocInfo_x86.cpp	Sat Sep 01 13:25:18 2012 -0400
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -47,12 +47,21 @@
    1.11      }
    1.12    } else if (which == Assembler::narrow_oop_operand) {
    1.13      address disp = Assembler::locate_operand(addr(), which);
    1.14 +    // both compressed oops and compressed classes look the same
    1.15 +    if (Universe::heap()->is_in_reserved((oop)x)) {
    1.16      if (verify_only) {
    1.17        assert(*(uint32_t*) disp == oopDesc::encode_heap_oop((oop)x), "instructions must match");
    1.18      } else {
    1.19        *(int32_t*) disp = oopDesc::encode_heap_oop((oop)x);
    1.20      }
    1.21    } else {
    1.22 +      if (verify_only) {
    1.23 +        assert(*(uint32_t*) disp == oopDesc::encode_klass((Klass*)x), "instructions must match");
    1.24 +      } else {
    1.25 +        *(int32_t*) disp = oopDesc::encode_klass((Klass*)x);
    1.26 +      }
    1.27 +    }
    1.28 +  } else {
    1.29      // Note:  Use runtime_call_type relocations for call32_operand.
    1.30      address ip = addr();
    1.31      address disp = Assembler::locate_operand(ip, which);
    1.32 @@ -239,3 +248,6 @@
    1.33    }
    1.34  #endif // _LP64
    1.35  }
    1.36 +
    1.37 +void metadata_Relocation::pd_fix_value(address x) {
    1.38 +}

mercurial