src/hotspot/share/oops/generateOopMap.cpp
changeset 48826 c4d9d1b08e2e
parent 48157 7c4d43c26352
child 49177 eebf559c9e0d
equal deleted inserted replaced
48825:ef8a98bc71f8 48826:c4d9d1b08e2e
  1876 void GenerateOopMap::do_ldc(int bci) {
  1876 void GenerateOopMap::do_ldc(int bci) {
  1877   Bytecode_loadconstant ldc(method(), bci);
  1877   Bytecode_loadconstant ldc(method(), bci);
  1878   ConstantPool* cp  = method()->constants();
  1878   ConstantPool* cp  = method()->constants();
  1879   constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
  1879   constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
  1880   BasicType       bt  = ldc.result_type();
  1880   BasicType       bt  = ldc.result_type();
       
  1881 #ifdef ASSERT
       
  1882   BasicType   tag_bt = tag.is_dynamic_constant() ? bt : tag.basic_type();
       
  1883   assert(bt == tag_bt, "same result");
       
  1884 #endif
  1881   CellTypeState   cts;
  1885   CellTypeState   cts;
  1882   if (tag.basic_type() == T_OBJECT) {
  1886   if (is_reference_type(bt)) {  // could be T_ARRAY with condy
  1883     assert(!tag.is_string_index() && !tag.is_klass_index(), "Unexpected index tag");
  1887     assert(!tag.is_string_index() && !tag.is_klass_index(), "Unexpected index tag");
  1884     assert(bt == T_OBJECT, "Guard is incorrect");
       
  1885     cts = CellTypeState::make_line_ref(bci);
  1888     cts = CellTypeState::make_line_ref(bci);
  1886   } else {
  1889   } else {
  1887     assert(bt != T_OBJECT, "Guard is incorrect");
       
  1888     cts = valCTS;
  1890     cts = valCTS;
  1889   }
  1891   }
  1890   ppush1(cts);
  1892   ppush1(cts);
  1891 }
  1893 }
  1892 
  1894