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;
|