496 fieldDescriptor& fd = fs.field_descriptor();
497 ciField* field = new (arena) ciField(&fd);
498 fields->append(field);
499 }
500 assert(fields->length() == flen, "sanity");
501 return fields;
502 }
503
504 void ciInstanceKlass::compute_injected_fields_helper() {
505 ASSERT_IN_VM;
506 InstanceKlass* k = get_instanceKlass();
507
508 for (InternalFieldStream fs(k); !fs.done(); fs.next()) {
509 if (fs.access_flags().is_static()) continue;
510 _has_injected_fields++;
511 break;
512 }
513 }
514
515 bool ciInstanceKlass::compute_injected_fields() {
516 assert(_has_injected_fields == -1, "shouldn't be initialized yet");
517 assert(is_loaded(), "must be loaded");
518
519 if (super() != NULL && super()->has_injected_fields()) {
520 _has_injected_fields = 1;
521 return true;
522 }
523
524 _has_injected_fields = 0;
525 GUARDED_VM_ENTRY({
526 compute_injected_fields_helper();
527 });
528
529 return _has_injected_fields > 0 ? true : false;
530 }
531
532 // ------------------------------------------------------------------
533 // ciInstanceKlass::find_method
534 //
535 // Find a method in this klass.
536 ciMethod* ciInstanceKlass::find_method(ciSymbol* name, ciSymbol* signature) {
|
496 fieldDescriptor& fd = fs.field_descriptor();
497 ciField* field = new (arena) ciField(&fd);
498 fields->append(field);
499 }
500 assert(fields->length() == flen, "sanity");
501 return fields;
502 }
503
504 void ciInstanceKlass::compute_injected_fields_helper() {
505 ASSERT_IN_VM;
506 InstanceKlass* k = get_instanceKlass();
507
508 for (InternalFieldStream fs(k); !fs.done(); fs.next()) {
509 if (fs.access_flags().is_static()) continue;
510 _has_injected_fields++;
511 break;
512 }
513 }
514
515 bool ciInstanceKlass::compute_injected_fields() {
516 assert(is_loaded(), "must be loaded");
517
518 if (super() != NULL && super()->has_injected_fields()) {
519 _has_injected_fields = 1;
520 return true;
521 }
522
523 _has_injected_fields = 0;
524 GUARDED_VM_ENTRY({
525 compute_injected_fields_helper();
526 });
527
528 return _has_injected_fields > 0 ? true : false;
529 }
530
531 // ------------------------------------------------------------------
532 // ciInstanceKlass::find_method
533 //
534 // Find a method in this klass.
535 ciMethod* ciInstanceKlass::find_method(ciSymbol* name, ciSymbol* signature) {
|