hotspot/src/share/vm/oops/klassVtable.cpp
changeset 37242 91e5f98fff6f
parent 35901 f5028c67e7cb
child 38259 b495d1cfe673
equal deleted inserted replaced
37241:b9961c99c356 37242:91e5f98fff6f
   272       assert(super_method->name() == name && super_method->signature() == signature, "vtable entry name/sig mismatch");
   272       assert(super_method->name() == name && super_method->signature() == signature, "vtable entry name/sig mismatch");
   273 #endif
   273 #endif
   274       if (supersuperklass->is_override(super_method, target_loader, target_classname, THREAD)) {
   274       if (supersuperklass->is_override(super_method, target_loader, target_classname, THREAD)) {
   275         if (log_develop_is_enabled(Trace, vtables)) {
   275         if (log_develop_is_enabled(Trace, vtables)) {
   276           ResourceMark rm(THREAD);
   276           ResourceMark rm(THREAD);
   277           outputStream* logst = LogHandle(vtables)::trace_stream();
   277           outputStream* logst = Log(vtables)::trace_stream();
   278           char* sig = target_method()->name_and_sig_as_C_string();
   278           char* sig = target_method()->name_and_sig_as_C_string();
   279           logst->print("transitive overriding superclass %s with %s::%s index %d, original flags: ",
   279           logst->print("transitive overriding superclass %s with %s::%s index %d, original flags: ",
   280                        supersuperklass->internal_name(),
   280                        supersuperklass->internal_name(),
   281                        _klass->internal_name(), sig, vtable_index);
   281                        _klass->internal_name(), sig, vtable_index);
   282           super_method->print_linkage_flags(logst);
   282           super_method->print_linkage_flags(logst);
   303                         KlassHandle target_klass, Method* super_method,
   303                         KlassHandle target_klass, Method* super_method,
   304                         Thread* thread) {
   304                         Thread* thread) {
   305 #ifndef PRODUCT
   305 #ifndef PRODUCT
   306   if (log_develop_is_enabled(Trace, vtables)) {
   306   if (log_develop_is_enabled(Trace, vtables)) {
   307     ResourceMark rm(thread);
   307     ResourceMark rm(thread);
   308     outputStream* logst = LogHandle(vtables)::trace_stream();
   308     outputStream* logst = Log(vtables)::trace_stream();
   309     char* sig = target_method()->name_and_sig_as_C_string();
   309     char* sig = target_method()->name_and_sig_as_C_string();
   310     if (overrides) {
   310     if (overrides) {
   311       logst->print("overriding with %s::%s index %d, original flags: ",
   311       logst->print("overriding with %s::%s index %d, original flags: ",
   312                    target_klass->internal_name(), sig, i);
   312                    target_klass->internal_name(), sig, i);
   313     } else {
   313     } else {
   491 }
   491 }
   492 
   492 
   493 void klassVtable::put_method_at(Method* m, int index) {
   493 void klassVtable::put_method_at(Method* m, int index) {
   494   if (log_develop_is_enabled(Trace, vtables)) {
   494   if (log_develop_is_enabled(Trace, vtables)) {
   495     ResourceMark rm;
   495     ResourceMark rm;
   496     outputStream* logst = LogHandle(vtables)::trace_stream();
   496     outputStream* logst = Log(vtables)::trace_stream();
   497     const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>";
   497     const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>";
   498     logst->print("adding %s at index %d, flags: ", sig, index);
   498     logst->print("adding %s at index %d, flags: ", sig, index);
   499     if (m != NULL) {
   499     if (m != NULL) {
   500       m->print_linkage_flags(logst);
   500       m->print_linkage_flags(logst);
   501     }
   501     }
   819                ik()->default_methods(), ik()->local_interfaces());
   819                ik()->default_methods(), ik()->local_interfaces());
   820   for (int i = 0; i < mirandas.length(); i++) {
   820   for (int i = 0; i < mirandas.length(); i++) {
   821     if (log_develop_is_enabled(Trace, vtables)) {
   821     if (log_develop_is_enabled(Trace, vtables)) {
   822       Method* meth = mirandas.at(i);
   822       Method* meth = mirandas.at(i);
   823       ResourceMark rm(Thread::current());
   823       ResourceMark rm(Thread::current());
   824       outputStream* logst = LogHandle(vtables)::trace_stream();
   824       outputStream* logst = Log(vtables)::trace_stream();
   825       if (meth != NULL) {
   825       if (meth != NULL) {
   826         char* sig = meth->name_and_sig_as_C_string();
   826         char* sig = meth->name_and_sig_as_C_string();
   827         logst->print("fill in mirandas with %s index %d, flags: ",
   827         logst->print("fill in mirandas with %s index %d, flags: ",
   828                      sig, initialized);
   828                      sig, initialized);
   829         meth->print_linkage_flags(logst);
   829         meth->print_linkage_flags(logst);
  1043     if (interface_method_needs_itable_index(m)) {
  1043     if (interface_method_needs_itable_index(m)) {
  1044       assert(!m->is_final_method(), "no final interface methods");
  1044       assert(!m->is_final_method(), "no final interface methods");
  1045       // If m is already assigned a vtable index, do not disturb it.
  1045       // If m is already assigned a vtable index, do not disturb it.
  1046       if (log_develop_is_enabled(Trace, itables)) {
  1046       if (log_develop_is_enabled(Trace, itables)) {
  1047         ResourceMark rm;
  1047         ResourceMark rm;
  1048         outputStream* logst = LogHandle(itables)::trace_stream();
  1048         outputStream* logst = Log(itables)::trace_stream();
  1049         assert(m != NULL, "methods can never be null");
  1049         assert(m != NULL, "methods can never be null");
  1050         const char* sig = m->name_and_sig_as_C_string();
  1050         const char* sig = m->name_and_sig_as_C_string();
  1051         if (m->has_vtable_index()) {
  1051         if (m->has_vtable_index()) {
  1052           logst->print("vtable index %d for method: %s, flags: ", m->vtable_index(), sig);
  1052           logst->print("vtable index %d for method: %s, flags: ", m->vtable_index(), sig);
  1053         } else {
  1053         } else {
  1159       assert(ime_num < ime_count, "oob");
  1159       assert(ime_num < ime_count, "oob");
  1160       itableOffsetEntry::method_entry(_klass(), method_table_offset)[ime_num].initialize(target());
  1160       itableOffsetEntry::method_entry(_klass(), method_table_offset)[ime_num].initialize(target());
  1161       if (log_develop_is_enabled(Trace, itables)) {
  1161       if (log_develop_is_enabled(Trace, itables)) {
  1162         ResourceMark rm(THREAD);
  1162         ResourceMark rm(THREAD);
  1163         if (target() != NULL) {
  1163         if (target() != NULL) {
  1164           outputStream* logst = LogHandle(itables)::trace_stream();
  1164           outputStream* logst = Log(itables)::trace_stream();
  1165           char* sig = target()->name_and_sig_as_C_string();
  1165           char* sig = target()->name_and_sig_as_C_string();
  1166           logst->print("interface: %s, ime_num: %d, target: %s, method_holder: %s ",
  1166           logst->print("interface: %s, ime_num: %d, target: %s, method_holder: %s ",
  1167                        interf_h()->internal_name(), ime_num, sig,
  1167                        interf_h()->internal_name(), ime_num, sig,
  1168                        target()->method_holder()->internal_name());
  1168                        target()->method_holder()->internal_name());
  1169           logst->print("target_method flags: ");
  1169           logst->print("target_method flags: ");