hotspot/src/share/vm/oops/generateOopMap.cpp
changeset 2570 ecc7862946d4
parent 2131 98f9cef66a34
child 3261 c7d5aae8d3f7
equal deleted inserted replaced
2569:9e8daec25638 2570:ecc7862946d4
  1250     os->print("    %s", Bytecodes::name(currentBC->code()));
  1250     os->print("    %s", Bytecodes::name(currentBC->code()));
  1251     switch(currentBC->code()) {
  1251     switch(currentBC->code()) {
  1252       case Bytecodes::_invokevirtual:
  1252       case Bytecodes::_invokevirtual:
  1253       case Bytecodes::_invokespecial:
  1253       case Bytecodes::_invokespecial:
  1254       case Bytecodes::_invokestatic:
  1254       case Bytecodes::_invokestatic:
       
  1255       case Bytecodes::_invokedynamic:
  1255       case Bytecodes::_invokeinterface:
  1256       case Bytecodes::_invokeinterface:
  1256         int idx = currentBC->get_index_big();
  1257         int idx = currentBC->get_index_int();
  1257         constantPoolOop cp    = method()->constants();
  1258         constantPoolOop cp    = method()->constants();
  1258         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
  1259         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
  1259         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
  1260         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
  1260         symbolOop signature   = cp->symbol_at(signatureIdx);
  1261         symbolOop signature   = cp->symbol_at(signatureIdx);
  1261         os->print("%s", signature->as_C_string());
  1262         os->print("%s", signature->as_C_string());
  1281     }
  1282     }
  1282     switch(currentBC->code()) {
  1283     switch(currentBC->code()) {
  1283       case Bytecodes::_invokevirtual:
  1284       case Bytecodes::_invokevirtual:
  1284       case Bytecodes::_invokespecial:
  1285       case Bytecodes::_invokespecial:
  1285       case Bytecodes::_invokestatic:
  1286       case Bytecodes::_invokestatic:
       
  1287       case Bytecodes::_invokedynamic:
  1286       case Bytecodes::_invokeinterface:
  1288       case Bytecodes::_invokeinterface:
  1287         int idx = currentBC->get_index_big();
  1289         int idx = currentBC->get_index_int();
  1288         constantPoolOop cp    = method()->constants();
  1290         constantPoolOop cp    = method()->constants();
  1289         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
  1291         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
  1290         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
  1292         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
  1291         symbolOop signature   = cp->symbol_at(signatureIdx);
  1293         symbolOop signature   = cp->symbol_at(signatureIdx);
  1292         os->print("%s", signature->as_C_string());
  1294         os->print("%s", signature->as_C_string());
  1308   if (_report_result == true) {
  1310   if (_report_result == true) {
  1309     switch(itr->code()) {
  1311     switch(itr->code()) {
  1310       case Bytecodes::_invokevirtual:
  1312       case Bytecodes::_invokevirtual:
  1311       case Bytecodes::_invokespecial:
  1313       case Bytecodes::_invokespecial:
  1312       case Bytecodes::_invokestatic:
  1314       case Bytecodes::_invokestatic:
       
  1315       case Bytecodes::_invokedynamic:
  1313       case Bytecodes::_invokeinterface:
  1316       case Bytecodes::_invokeinterface:
  1314         _itr_send = itr;
  1317         _itr_send = itr;
  1315         _report_result_for_send = true;
  1318         _report_result_for_send = true;
  1316         break;
  1319         break;
  1317       default:
  1320       default:
  1554     case Bytecodes::_putfield:          do_field(false, false, itr->get_index_big(), itr->bci()); break;
  1557     case Bytecodes::_putfield:          do_field(false, false, itr->get_index_big(), itr->bci()); break;
  1555 
  1558 
  1556     case Bytecodes::_invokevirtual:
  1559     case Bytecodes::_invokevirtual:
  1557     case Bytecodes::_invokespecial:     do_method(false, false, itr->get_index_big(), itr->bci()); break;
  1560     case Bytecodes::_invokespecial:     do_method(false, false, itr->get_index_big(), itr->bci()); break;
  1558     case Bytecodes::_invokestatic:      do_method(true,  false, itr->get_index_big(), itr->bci()); break;
  1561     case Bytecodes::_invokestatic:      do_method(true,  false, itr->get_index_big(), itr->bci()); break;
       
  1562     case Bytecodes::_invokedynamic:     do_method(false, true,  itr->get_index_int(), itr->bci()); break;
  1559     case Bytecodes::_invokeinterface:   do_method(false, true,  itr->get_index_big(), itr->bci()); break;
  1563     case Bytecodes::_invokeinterface:   do_method(false, true,  itr->get_index_big(), itr->bci()); break;
  1560     case Bytecodes::_newarray:
  1564     case Bytecodes::_newarray:
  1561     case Bytecodes::_anewarray:         pp_new_ref(vCTS, itr->bci()); break;
  1565     case Bytecodes::_anewarray:         pp_new_ref(vCTS, itr->bci()); break;
  1562     case Bytecodes::_checkcast:         do_checkcast(); break;
  1566     case Bytecodes::_checkcast:         do_checkcast(); break;
  1563     case Bytecodes::_arraylength:
  1567     case Bytecodes::_arraylength:
  1897 
  1901 
  1898 void GenerateOopMap::do_method(int is_static, int is_interface, int idx, int bci) {
  1902 void GenerateOopMap::do_method(int is_static, int is_interface, int idx, int bci) {
  1899   // Dig up signature for field in constant pool
  1903   // Dig up signature for field in constant pool
  1900   constantPoolOop cp    = _method->constants();
  1904   constantPoolOop cp    = _method->constants();
  1901   int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
  1905   int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
  1902   int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
  1906   int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);  // @@@@@
  1903   symbolOop signature   = cp->symbol_at(signatureIdx);
  1907   symbolOop signature   = cp->symbol_at(signatureIdx);
  1904 
  1908 
  1905   // Parse method signature
  1909   // Parse method signature
  1906   CellTypeState out[4];
  1910   CellTypeState out[4];
  1907   CellTypeState in[MAXARGSIZE+1];   // Includes result
  1911   CellTypeState in[MAXARGSIZE+1];   // Includes result