src/share/vm/interpreter/bytecodeTracer.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7090904 Sdiff src/share/vm/interpreter

src/share/vm/interpreter/bytecodeTracer.cpp

Print this page




 224   constantPoolCacheOop cache = NULL;
 225   if (Bytecodes::uses_cp_cache(code)) {
 226     cache = constants->cache();
 227     if (cache != NULL) {
 228       //climit = cache->length();  // %%% private!
 229       size_t size = cache->size() * HeapWordSize;
 230       size -= sizeof(constantPoolCacheOopDesc);
 231       size /= sizeof(ConstantPoolCacheEntry);
 232       climit = (int) size;
 233     }
 234   }
 235 
 236   if (cache != NULL && constantPoolCacheOopDesc::is_secondary_index(i)) {
 237     i = constantPoolCacheOopDesc::decode_secondary_index(i);
 238     st->print(" secondary cache[%d] of", i);
 239     if (i >= 0 && i < climit) {
 240       if (!cache->entry_at(i)->is_secondary_entry()) {
 241         st->print_cr(" not secondary entry?", i);
 242         return false;
 243       }
 244       i = cache->entry_at(i)->main_entry_index();
 245       goto check_cache_index;
 246     } else {
 247       st->print_cr(" not in cache[*]?", i);
 248       return false;
 249     }
 250   }
 251 
 252   if (cache != NULL) {
 253     goto check_cache_index;
 254   }
 255 
 256  check_cp_index:
 257   if (i >= 0 && i < ilimit) {
 258     if (WizardMode)  st->print(" cp[%d]", i);
 259     cp_index = i;
 260     return true;
 261   }
 262 
 263   st->print_cr(" CP[%d] not in CP", i);
 264   return false;




 224   constantPoolCacheOop cache = NULL;
 225   if (Bytecodes::uses_cp_cache(code)) {
 226     cache = constants->cache();
 227     if (cache != NULL) {
 228       //climit = cache->length();  // %%% private!
 229       size_t size = cache->size() * HeapWordSize;
 230       size -= sizeof(constantPoolCacheOopDesc);
 231       size /= sizeof(ConstantPoolCacheEntry);
 232       climit = (int) size;
 233     }
 234   }
 235 
 236   if (cache != NULL && constantPoolCacheOopDesc::is_secondary_index(i)) {
 237     i = constantPoolCacheOopDesc::decode_secondary_index(i);
 238     st->print(" secondary cache[%d] of", i);
 239     if (i >= 0 && i < climit) {
 240       if (!cache->entry_at(i)->is_secondary_entry()) {
 241         st->print_cr(" not secondary entry?", i);
 242         return false;
 243       }
 244       i = cache->entry_at(i)->main_entry_index() + constantPoolOopDesc::CPCACHE_INDEX_TAG;
 245       goto check_cache_index;
 246     } else {
 247       st->print_cr(" not in cache[*]?", i);
 248       return false;
 249     }
 250   }
 251 
 252   if (cache != NULL) {
 253     goto check_cache_index;
 254   }
 255 
 256  check_cp_index:
 257   if (i >= 0 && i < ilimit) {
 258     if (WizardMode)  st->print(" cp[%d]", i);
 259     cp_index = i;
 260     return true;
 261   }
 262 
 263   st->print_cr(" CP[%d] not in CP", i);
 264   return false;


src/share/vm/interpreter/bytecodeTracer.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File