comparison src/share/vm/compiler/disassembler.cpp @ 3363:167b70ff3abc

6939861: JVM should handle more conversion operations Reviewed-by: twisti, jrose
author never
date Fri, 06 May 2011 16:33:13 -0700
parents 1d1603768966
children 3e23978ea0c3
comparison
equal deleted inserted replaced
3362:d4c1fbc3de95 3363:167b70ff3abc
281 desc = StubCodeDesc::desc_for(adr + frame::pc_return_offset); 281 desc = StubCodeDesc::desc_for(adr + frame::pc_return_offset);
282 if (desc != NULL) { 282 if (desc != NULL) {
283 st->print("Stub::%s", desc->name()); 283 st->print("Stub::%s", desc->name());
284 if (desc->begin() != adr) 284 if (desc->begin() != adr)
285 st->print("%+d 0x%p",adr - desc->begin(), adr); 285 st->print("%+d 0x%p",adr - desc->begin(), adr);
286 else if (WizardMode) st->print(" " INTPTR_FORMAT, adr); 286 else if (WizardMode) st->print(" " PTR_FORMAT, adr);
287 return; 287 return;
288 } 288 }
289 st->print("Stub::<unknown> " INTPTR_FORMAT, adr); 289 st->print("Stub::<unknown> " PTR_FORMAT, adr);
290 return; 290 return;
291 } 291 }
292 292
293 BarrierSet* bs = Universe::heap()->barrier_set(); 293 BarrierSet* bs = Universe::heap()->barrier_set();
294 if (bs->kind() == BarrierSet::CardTableModRef && 294 if (bs->kind() == BarrierSet::CardTableModRef &&
312 } 312 }
313 return; 313 return;
314 } 314 }
315 } 315 }
316 316
317 // Fall through to a simple numeral. 317 // Fall through to a simple (hexadecimal) numeral.
318 st->print(INTPTR_FORMAT, (intptr_t)adr); 318 st->print(PTR_FORMAT, adr);
319 } 319 }
320 320
321 void decode_env::print_insn_labels() { 321 void decode_env::print_insn_labels() {
322 address p = cur_insn(); 322 address p = cur_insn();
323 outputStream* st = output(); 323 outputStream* st = output();
324 CodeBlob* cb = _code; 324 CodeBlob* cb = _code;
325 if (cb != NULL) { 325 if (cb != NULL) {
326 cb->print_block_comment(st, p); 326 cb->print_block_comment(st, p);
327 } 327 }
328 if (_print_pc) { 328 if (_print_pc) {
329 st->print(" " INTPTR_FORMAT ": ", (intptr_t) p); 329 st->print(" " PTR_FORMAT ": ", p);
330 } 330 }
331 } 331 }
332 332
333 void decode_env::print_insn_bytes(address pc, address pc_limit) { 333 void decode_env::print_insn_bytes(address pc, address pc_limit) {
334 outputStream* st = output(); 334 outputStream* st = output();
430 430
431 431
432 void Disassembler::decode(CodeBlob* cb, outputStream* st) { 432 void Disassembler::decode(CodeBlob* cb, outputStream* st) {
433 if (!load_library()) return; 433 if (!load_library()) return;
434 decode_env env(cb, st); 434 decode_env env(cb, st);
435 env.output()->print_cr("Decoding CodeBlob " INTPTR_FORMAT, cb); 435 env.output()->print_cr("Decoding CodeBlob " PTR_FORMAT, cb);
436 env.decode_instructions(cb->code_begin(), cb->code_end()); 436 env.decode_instructions(cb->code_begin(), cb->code_end());
437 } 437 }
438 438
439 439
440 void Disassembler::decode(address start, address end, outputStream* st) { 440 void Disassembler::decode(address start, address end, outputStream* st) {
444 } 444 }
445 445
446 void Disassembler::decode(nmethod* nm, outputStream* st) { 446 void Disassembler::decode(nmethod* nm, outputStream* st) {
447 if (!load_library()) return; 447 if (!load_library()) return;
448 decode_env env(nm, st); 448 decode_env env(nm, st);
449 env.output()->print_cr("Decoding compiled method " INTPTR_FORMAT ":", nm); 449 env.output()->print_cr("Decoding compiled method " PTR_FORMAT ":", nm);
450 env.output()->print_cr("Code:"); 450 env.output()->print_cr("Code:");
451 451
452 #ifdef SHARK 452 #ifdef SHARK
453 SharkEntry* entry = (SharkEntry *) nm->code_begin(); 453 SharkEntry* entry = (SharkEntry *) nm->code_begin();
454 unsigned char* p = entry->code_start(); 454 unsigned char* p = entry->code_start();
476 if (nm->consts_size() > 0) { 476 if (nm->consts_size() > 0) {
477 nm->print_nmethod_labels(env.output(), nm->consts_begin()); 477 nm->print_nmethod_labels(env.output(), nm->consts_begin());
478 int offset = 0; 478 int offset = 0;
479 for (address p = nm->consts_begin(); p < nm->consts_end(); p += 4, offset += 4) { 479 for (address p = nm->consts_begin(); p < nm->consts_end(); p += 4, offset += 4) {
480 if ((offset % 8) == 0) { 480 if ((offset % 8) == 0) {
481 env.output()->print_cr(" " INTPTR_FORMAT " (offset: %4d): " PTR32_FORMAT " " PTR64_FORMAT, (intptr_t) p, offset, *((int32_t*) p), *((int64_t*) p)); 481 env.output()->print_cr(" " PTR_FORMAT " (offset: %4d): " PTR32_FORMAT " " PTR64_FORMAT, p, offset, *((int32_t*) p), *((int64_t*) p));
482 } else { 482 } else {
483 env.output()->print_cr(" " INTPTR_FORMAT " (offset: %4d): " PTR32_FORMAT, (intptr_t) p, offset, *((int32_t*) p)); 483 env.output()->print_cr(" " PTR_FORMAT " (offset: %4d): " PTR32_FORMAT, p, offset, *((int32_t*) p));
484 } 484 }
485 } 485 }
486 } 486 }
487 487
488 env.decode_instructions(p, end); 488 env.decode_instructions(p, end);