comparison src/share/vm/oops/method.cpp @ 6988:2cb439954abf

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author Gilles Duboscq <duboscq@ssw.jku.at>
date Mon, 19 Nov 2012 15:36:13 +0100
parents 41938af2b3d8 070d523b96a7
children 679e6584c177
comparison
equal deleted inserted replaced
6963:dd0dd0321e2a 6988:2cb439954abf
153 assert(_adapter != NULL, "must have"); 153 assert(_adapter != NULL, "must have");
154 return _adapter->get_c2i_unverified_entry(); 154 return _adapter->get_c2i_unverified_entry();
155 } 155 }
156 156
157 char* Method::name_and_sig_as_C_string() const { 157 char* Method::name_and_sig_as_C_string() const {
158 return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature()); 158 return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature());
159 } 159 }
160 160
161 char* Method::name_and_sig_as_C_string(char* buf, int size) const { 161 char* Method::name_and_sig_as_C_string(char* buf, int size) const {
162 return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature(), buf, size); 162 return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature(), buf, size);
163 } 163 }
164 164
165 char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) { 165 char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) {
166 const char* klass_name = klass->external_name(); 166 const char* klass_name = klass->external_name();
167 int klass_name_len = (int)strlen(klass_name); 167 int klass_name_len = (int)strlen(klass_name);
579 objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::Class_klass(), length, CHECK_(objArrayHandle())); 579 objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::Class_klass(), length, CHECK_(objArrayHandle()));
580 objArrayHandle mirrors (THREAD, m_oop); 580 objArrayHandle mirrors (THREAD, m_oop);
581 for (int i = 0; i < length; i++) { 581 for (int i = 0; i < length; i++) {
582 CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe 582 CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe
583 Klass* k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle())); 583 Klass* k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle()));
584 assert(Klass::cast(k)->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class"); 584 assert(k->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class");
585 mirrors->obj_at_put(i, Klass::cast(k)->java_mirror()); 585 mirrors->obj_at_put(i, k->java_mirror());
586 } 586 }
587 return mirrors; 587 return mirrors;
588 } 588 }
589 }; 589 };
590 590
619 bool Method::is_klass_loaded_by_klass_index(int klass_index) const { 619 bool Method::is_klass_loaded_by_klass_index(int klass_index) const {
620 if( constants()->tag_at(klass_index).is_unresolved_klass() ) { 620 if( constants()->tag_at(klass_index).is_unresolved_klass() ) {
621 Thread *thread = Thread::current(); 621 Thread *thread = Thread::current();
622 Symbol* klass_name = constants()->klass_name_at(klass_index); 622 Symbol* klass_name = constants()->klass_name_at(klass_index);
623 Handle loader(thread, method_holder()->class_loader()); 623 Handle loader(thread, method_holder()->class_loader());
624 Handle prot (thread, Klass::cast(method_holder())->protection_domain()); 624 Handle prot (thread, method_holder()->protection_domain());
625 return SystemDictionary::find(klass_name, loader, prot, thread) != NULL; 625 return SystemDictionary::find(klass_name, loader, prot, thread) != NULL;
626 } else { 626 } else {
627 return true; 627 return true;
628 } 628 }
629 } 629 }
1068 1068
1069 return m; 1069 return m;
1070 } 1070 }
1071 1071
1072 Klass* Method::check_non_bcp_klass(Klass* klass) { 1072 Klass* Method::check_non_bcp_klass(Klass* klass) {
1073 if (klass != NULL && Klass::cast(klass)->class_loader() != NULL) { 1073 if (klass != NULL && klass->class_loader() != NULL) {
1074 if (Klass::cast(klass)->oop_is_objArray()) 1074 if (klass->oop_is_objArray())
1075 klass = ObjArrayKlass::cast(klass)->bottom_klass(); 1075 klass = ObjArrayKlass::cast(klass)->bottom_klass();
1076 return klass; 1076 return klass;
1077 } 1077 }
1078 return NULL; 1078 return NULL;
1079 } 1079 }