equal
deleted
inserted
replaced
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; |