Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/opto/library_call.cpp
          +++ new/src/share/vm/opto/library_call.cpp
↓ open down ↓ 2172 lines elided ↑ open up ↑
2173 2173  
2174 2174    float likely  = PROB_LIKELY(0.999);
2175 2175    float unlikely  = PROB_UNLIKELY(0.999);
2176 2176  
2177 2177    IdealKit ideal(gvn(), control(),  merged_memory());
2178 2178  #define __ ideal.
2179 2179  
2180 2180    const int reference_type_offset = instanceKlass::reference_type_offset_in_bytes() +
2181 2181                                          sizeof(oopDesc);
2182 2182  
2183      -  Node* referent_off = __ ConI(java_lang_ref_Reference::referent_offset);
     2183 +  Node* referent_off;
     2184 +  
     2185 +  if (offset->bottom_type()->isa_int() != NULL) {
     2186 +    referent_off = __ makecon(TypeInt::make(java_lang_ref_Reference::referent_offset));
     2187 +  } else {
     2188 +    assert(offset->bottom_type()->isa_long() != NULL, "what else?");
     2189 +    referent_off = __ makecon(TypeLong::make(java_lang_ref_Reference::referent_offset));
     2190 +  }
2184 2191  
2185 2192    __ if_then(offset, BoolTest::eq, referent_off, unlikely); {
2186 2193      __ if_then(base_oop, BoolTest::ne, null(), likely); {
2187 2194  
2188 2195        // Update graphKit memory and control from IdealKit.
2189 2196        set_all_memory(__ merged_memory());
2190 2197        set_control(__ ctrl());
2191 2198  
2192 2199        Node* ref_klass_con = makecon(TypeKlassPtr::make(env()->Reference_klass()));
2193 2200        Node* is_instof = gen_instanceof(base_oop, ref_klass_con);
↓ open down ↓ 3328 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX