< prev index next >

src/hotspot/share/ci/ciInstanceKlass.cpp

Print this page




 537   }
 538   return false;
 539 }
 540 
 541 void ciInstanceKlass::compute_injected_fields() {
 542   assert(is_loaded(), "must be loaded");
 543 
 544   int has_injected_fields = 0;
 545   if (super() != NULL && super()->has_injected_fields()) {
 546     has_injected_fields = 1;
 547   } else {
 548     GUARDED_VM_ENTRY({
 549         has_injected_fields = compute_injected_fields_helper() ? 1 : 0;
 550       });
 551   }
 552   // may be concurrently initialized for shared ciInstanceKlass objects
 553   assert(_has_injected_fields == -1 || _has_injected_fields == has_injected_fields, "broken concurrent initialization");
 554   _has_injected_fields = has_injected_fields;
 555 }
 556 






 557 // ------------------------------------------------------------------
 558 // ciInstanceKlass::find_method
 559 //
 560 // Find a method in this klass.
 561 ciMethod* ciInstanceKlass::find_method(ciSymbol* name, ciSymbol* signature) {
 562   VM_ENTRY_MARK;
 563   InstanceKlass* k = get_instanceKlass();
 564   Symbol* name_sym = name->get_symbol();
 565   Symbol* sig_sym= signature->get_symbol();
 566 
 567   Method* m = k->find_method(name_sym, sig_sym);
 568   if (m == NULL)  return NULL;
 569 
 570   return CURRENT_THREAD_ENV->get_method(m);
 571 }
 572 
 573 // ------------------------------------------------------------------
 574 // ciInstanceKlass::is_leaf_type
 575 bool ciInstanceKlass::is_leaf_type() {
 576   assert(is_loaded(), "must be loaded");




 537   }
 538   return false;
 539 }
 540 
 541 void ciInstanceKlass::compute_injected_fields() {
 542   assert(is_loaded(), "must be loaded");
 543 
 544   int has_injected_fields = 0;
 545   if (super() != NULL && super()->has_injected_fields()) {
 546     has_injected_fields = 1;
 547   } else {
 548     GUARDED_VM_ENTRY({
 549         has_injected_fields = compute_injected_fields_helper() ? 1 : 0;
 550       });
 551   }
 552   // may be concurrently initialized for shared ciInstanceKlass objects
 553   assert(_has_injected_fields == -1 || _has_injected_fields == has_injected_fields, "broken concurrent initialization");
 554   _has_injected_fields = has_injected_fields;
 555 }
 556 
 557 bool ciInstanceKlass::has_object_fields() const {
 558   GUARDED_VM_ENTRY(
 559       return get_instanceKlass()->nonstatic_oop_map_size() > 0;
 560     );
 561 }
 562 
 563 // ------------------------------------------------------------------
 564 // ciInstanceKlass::find_method
 565 //
 566 // Find a method in this klass.
 567 ciMethod* ciInstanceKlass::find_method(ciSymbol* name, ciSymbol* signature) {
 568   VM_ENTRY_MARK;
 569   InstanceKlass* k = get_instanceKlass();
 570   Symbol* name_sym = name->get_symbol();
 571   Symbol* sig_sym= signature->get_symbol();
 572 
 573   Method* m = k->find_method(name_sym, sig_sym);
 574   if (m == NULL)  return NULL;
 575 
 576   return CURRENT_THREAD_ENV->get_method(m);
 577 }
 578 
 579 // ------------------------------------------------------------------
 580 // ciInstanceKlass::is_leaf_type
 581 bool ciInstanceKlass::is_leaf_type() {
 582   assert(is_loaded(), "must be loaded");


< prev index next >