< prev index next >
src/hotspot/share/oops/method.cpp
Print this page
*** 322,343 ****
int extra_bytes = (is_native) ? 2*sizeof(address*) : 0;
int extra_words = align_up(extra_bytes, BytesPerWord) / BytesPerWord;
return align_metadata_size(header_size() + extra_words);
}
-
Symbol* Method::klass_name() const {
return method_holder()->name();
}
-
void Method::metaspace_pointers_do(MetaspaceClosure* it) {
log_trace(cds)("Iter(Method): %p", this);
it->push(&_constMethod);
it->push(&_method_data);
it->push(&_method_counters);
}
// Attempt to return method oop to original state. Clear any pointers
// (to objects outside the shared spaces). We won't be able to predict
// where they should point in a new JVM. Further initialize some
--- 322,346 ----
int extra_bytes = (is_native) ? 2*sizeof(address*) : 0;
int extra_words = align_up(extra_bytes, BytesPerWord) / BytesPerWord;
return align_metadata_size(header_size() + extra_words);
}
Symbol* Method::klass_name() const {
return method_holder()->name();
}
void Method::metaspace_pointers_do(MetaspaceClosure* it) {
log_trace(cds)("Iter(Method): %p", this);
it->push(&_constMethod);
it->push(&_method_data);
it->push(&_method_counters);
+
+ Method* this_ptr = this;
+ it->push_method_entry(&this_ptr, (intptr_t*)&_i2i_entry);
+ it->push_method_entry(&this_ptr, (intptr_t*)&_from_compiled_entry);
+ it->push_method_entry(&this_ptr, (intptr_t*)&_from_interpreted_entry);
}
// Attempt to return method oop to original state. Clear any pointers
// (to objects outside the shared spaces). We won't be able to predict
// where they should point in a new JVM. Further initialize some
*** 1663,1678 ****
return a->name()->fast_compare(b->name());
}
// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
// default_methods also uses this without the ordering for fast find_method
! void Method::sort_methods(Array<Method*>* methods, bool set_idnums) {
int length = methods->length();
if (length > 1) {
{
NoSafepointVerifier nsv;
! QuickSort::sort(methods->data(), length, method_comparator, /*idempotent=*/false);
}
// Reset method ordering
if (set_idnums) {
for (int i = 0; i < length; i++) {
Method* m = methods->at(i);
--- 1666,1684 ----
return a->name()->fast_compare(b->name());
}
// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
// default_methods also uses this without the ordering for fast find_method
! void Method::sort_methods(Array<Method*>* methods, bool set_idnums, method_comparator_func func) {
int length = methods->length();
if (length > 1) {
+ if (func == NULL) {
+ func = method_comparator;
+ }
{
NoSafepointVerifier nsv;
! QuickSort::sort(methods->data(), length, func, /*idempotent=*/false);
}
// Reset method ordering
if (set_idnums) {
for (int i = 0; i < length; i++) {
Method* m = methods->at(i);
< prev index next >