hotspot/src/share/vm/memory/dump.cpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 971 f0b20be4165d
child 670 ddf3e9583f2f
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    58   StringHashCodeClosure(Thread* t) {
    58   StringHashCodeClosure(Thread* t) {
    59     THREAD = t;
    59     THREAD = t;
    60     hash_offset = java_lang_String::hash_offset_in_bytes();
    60     hash_offset = java_lang_String::hash_offset_in_bytes();
    61   }
    61   }
    62 
    62 
    63   void do_oop(oop* pobj) {
    63   void do_oop(oop* p) {
    64     if (pobj != NULL) {
    64     if (p != NULL) {
    65       oop obj = *pobj;
    65       oop obj = *p;
    66       if (obj->klass() == SystemDictionary::string_klass()) {
    66       if (obj->klass() == SystemDictionary::string_klass()) {
    67 
    67 
    68         int hash;
    68         int hash;
    69         typeArrayOop value = java_lang_String::value(obj);
    69         typeArrayOop value = java_lang_String::value(obj);
    70         int length = java_lang_String::length(obj);
    70         int length = java_lang_String::length(obj);
    77         }
    77         }
    78         obj->int_field_put(hash_offset, hash);
    78         obj->int_field_put(hash_offset, hash);
    79       }
    79       }
    80     }
    80     }
    81   }
    81   }
       
    82   void do_oop(narrowOop* p) { ShouldNotReachHere(); }
    82 };
    83 };
    83 
    84 
    84 
    85 
    85 // Remove data from objects which should not appear in the shared file
    86 // Remove data from objects which should not appear in the shared file
    86 // (as it pertains only to the current JVM).
    87 // (as it pertains only to the current JVM).
   119 
   120 
   120 // Closure:  mark objects closure.
   121 // Closure:  mark objects closure.
   121 
   122 
   122 class MarkObjectsOopClosure : public OopClosure {
   123 class MarkObjectsOopClosure : public OopClosure {
   123 public:
   124 public:
   124   void do_oop(oop* pobj) {
   125   void do_oop(oop* p)       { mark_object(*p); }
   125     mark_object(*pobj);
   126   void do_oop(narrowOop* p) { ShouldNotReachHere(); }
   126   }
       
   127 };
   127 };
   128 
   128 
   129 
   129 
   130 class MarkObjectsSkippingKlassesOopClosure : public OopClosure {
   130 class MarkObjectsSkippingKlassesOopClosure : public OopClosure {
   131 public:
   131 public:
   134     if (obj != NULL &&
   134     if (obj != NULL &&
   135         !obj->is_klass()) {
   135         !obj->is_klass()) {
   136       mark_object(obj);
   136       mark_object(obj);
   137     }
   137     }
   138   }
   138   }
       
   139   void do_oop(narrowOop* pobj) { ShouldNotReachHere(); }
   139 };
   140 };
   140 
   141 
   141 
   142 
   142 static void mark_object_recursive_skipping_klasses(oop obj) {
   143 static void mark_object_recursive_skipping_klasses(oop obj) {
   143   mark_object(obj);
   144   mark_object(obj);
   552         guarantee(f->is_shared(), "Oop doesn't refer to shared space.");
   553         guarantee(f->is_shared(), "Oop doesn't refer to shared space.");
   553         *p = f;
   554         *p = f;
   554       }
   555       }
   555     }
   556     }
   556   }
   557   }
       
   558   void do_oop(narrowOop* pobj) { ShouldNotReachHere(); }
   557 };
   559 };
   558 
   560 
   559 
   561 
   560 void sort_methods(instanceKlass* ik, TRAPS) {
   562 void sort_methods(instanceKlass* ik, TRAPS) {
   561   klassOop super = ik->super();
   563   klassOop super = ik->super();
   687     assert(obj == NULL || obj->is_shared(),
   689     assert(obj == NULL || obj->is_shared(),
   688            "Oop in shared space not pointing into shared space.");
   690            "Oop in shared space not pointing into shared space.");
   689     *top = obj;
   691     *top = obj;
   690     ++top;
   692     ++top;
   691   }
   693   }
       
   694 
       
   695   void do_oop(narrowOop* pobj) { ShouldNotReachHere(); }
   692 
   696 
   693   void do_int(int* p) {
   697   void do_int(int* p) {
   694     check_space();
   698     check_space();
   695     *top = (oop)(intptr_t)*p;
   699     *top = (oop)(intptr_t)*p;
   696     ++top;
   700     ++top;