< prev index next >

src/hotspot/share/oops/oop.cpp

Print this page




  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/altHashing.hpp"
  27 #include "classfile/javaClasses.inline.hpp"
  28 #include "memory/heapShared.inline.hpp"
  29 #include "memory/resourceArea.hpp"
  30 #include "memory/universe.hpp"
  31 #include "oops/access.inline.hpp"
  32 #include "oops/compressedOops.inline.hpp"
  33 #include "oops/oop.inline.hpp"
  34 #include "oops/verifyOopClosure.hpp"
  35 #include "runtime/handles.inline.hpp"
  36 #include "runtime/thread.inline.hpp"
  37 #include "utilities/copy.hpp"
  38 
  39 bool always_do_update_barrier = false;
  40 
  41 void oopDesc::print_on(outputStream* st) const {
  42   klass()->oop_print_on(oop(this), st);








  43 }
  44 
  45 void oopDesc::print_address_on(outputStream* st) const {
  46   st->print("{" INTPTR_FORMAT "}", p2i(this));
  47 
  48 }
  49 
  50 void oopDesc::print()         { print_on(tty);         }
  51 
  52 void oopDesc::print_address() { print_address_on(tty); }
  53 
  54 char* oopDesc::print_string() {
  55   stringStream st;
  56   print_on(&st);
  57   return st.as_string();
  58 }
  59 
  60 void oopDesc::print_value() {
  61   print_value_on(tty);
  62 }
  63 
  64 char* oopDesc::print_value_string() {
  65   char buf[100];
  66   stringStream st(buf, sizeof(buf));
  67   print_value_on(&st);
  68   return st.as_string();
  69 }
  70 
  71 void oopDesc::print_value_on(outputStream* st) const {
  72   oop obj = oop(this);
  73   if (java_lang_String::is_instance(obj)) {
  74     java_lang_String::print(obj, st);
  75     print_address_on(st);
  76   } else {
  77     klass()->oop_print_value_on(obj, st);






  78   }
  79 }
  80 
  81 
  82 void oopDesc::verify_on(outputStream* st, oopDesc* oop_desc) {
  83   if (oop_desc != NULL) {
  84     oop_desc->klass()->oop_verify_on(oop_desc, st);
  85   }
  86 }
  87 
  88 
  89 void oopDesc::verify(oopDesc* oop_desc) {
  90   verify_on(tty, oop_desc);
  91 }
  92 
  93 intptr_t oopDesc::slow_identity_hash() {
  94   // slow case; we have to acquire the micro lock in order to locate the header
  95   Thread* THREAD = Thread::current();
  96   ResetNoHandleMark rnm; // Might be called from LEAF/QUICK ENTRY
  97   HandleMark hm(THREAD);




  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/altHashing.hpp"
  27 #include "classfile/javaClasses.inline.hpp"
  28 #include "memory/heapShared.inline.hpp"
  29 #include "memory/resourceArea.hpp"
  30 #include "memory/universe.hpp"
  31 #include "oops/access.inline.hpp"
  32 #include "oops/compressedOops.inline.hpp"
  33 #include "oops/oop.inline.hpp"
  34 #include "oops/verifyOopClosure.hpp"
  35 #include "runtime/handles.inline.hpp"
  36 #include "runtime/thread.inline.hpp"
  37 #include "utilities/copy.hpp"
  38 
  39 bool always_do_update_barrier = false;
  40 
  41 void oopDesc::print_on(outputStream* st) const {
  42   if (this == NULL) {
  43     st->print_cr("NULL");
  44   } else if (*((juint*)this) == badHeapWordVal) {
  45     st->print("BAD WORD");
  46   } else if (*((juint*)this) == badMetaWordVal) {
  47     st->print("BAD META WORD");
  48   } else {
  49     klass()->oop_print_on(oop(this), st);
  50   }
  51 }
  52 
  53 void oopDesc::print_address_on(outputStream* st) const {
  54   st->print("{" INTPTR_FORMAT "}", p2i(this));
  55 
  56 }
  57 
  58 void oopDesc::print()         { print_on(tty);         }
  59 
  60 void oopDesc::print_address() { print_address_on(tty); }
  61 
  62 char* oopDesc::print_string() {
  63   stringStream st;
  64   print_on(&st);
  65   return st.as_string();
  66 }
  67 
  68 void oopDesc::print_value() {
  69   print_value_on(tty);
  70 }
  71 
  72 char* oopDesc::print_value_string() {
  73   char buf[100];
  74   stringStream st(buf, sizeof(buf));
  75   print_value_on(&st);
  76   return st.as_string();
  77 }
  78 
  79 void oopDesc::print_value_on(outputStream* st) const {
  80   if (this == NULL) {
  81     st->print("NULL");


  82   } else {
  83     oop obj = oop(this);
  84     if (java_lang_String::is_instance(obj)) {
  85       java_lang_String::print(obj, st);
  86       print_address_on(st);
  87     } else {
  88       klass()->oop_print_value_on(obj, st);
  89     }
  90   }
  91 }
  92 
  93 
  94 void oopDesc::verify_on(outputStream* st, oopDesc* oop_desc) {
  95   if (oop_desc != NULL) {
  96     oop_desc->klass()->oop_verify_on(oop_desc, st);
  97   }
  98 }
  99 
 100 
 101 void oopDesc::verify(oopDesc* oop_desc) {
 102   verify_on(tty, oop_desc);
 103 }
 104 
 105 intptr_t oopDesc::slow_identity_hash() {
 106   // slow case; we have to acquire the micro lock in order to locate the header
 107   Thread* THREAD = Thread::current();
 108   ResetNoHandleMark rnm; // Might be called from LEAF/QUICK ENTRY
 109   HandleMark hm(THREAD);


< prev index next >