34 Method* method = vfst->method(); 35 _klass = method->method_holder(); 36 _privileged_context = context; 37 #ifdef CHECK_UNHANDLED_OOPS 38 THREAD->allow_unhandled_oop(&_privileged_context); 39 #endif // CHECK_UNHANDLED_OOPS 40 _frame_id = vfst->frame_id(); 41 _next = next; 42 assert(_privileged_context == NULL || _privileged_context->is_oop(), "must be an oop"); 43 assert(protection_domain() == NULL || protection_domain()->is_oop(), "must be an oop"); 44 } 45 46 void PrivilegedElement::oops_do(OopClosure* f) { 47 PrivilegedElement *cur = this; 48 do { 49 f->do_oop((oop*) &cur->_privileged_context); 50 cur = cur->_next; 51 } while(cur != NULL); 52 } 53 54 void PrivilegedElement::classes_do(KlassClosure* f) { 55 PrivilegedElement *cur = this; 56 do { 57 f->do_klass(cur->_klass); 58 cur = cur->_next; 59 } while(cur != NULL); 60 } 61 62 //------------------------------------------------------------------------------- 63 #ifndef PRODUCT 64 65 void PrivilegedElement::print_on(outputStream* st) const { 66 st->print(" " PTR_FORMAT " ", p2i(_frame_id)); 67 _klass->print_value_on(st); 68 if (protection_domain() != NULL) { 69 st->print(" "); 70 protection_domain()->print_value_on(st); 71 } 72 st->cr(); 73 } 74 75 bool PrivilegedElement::contains(address addr) { 76 PrivilegedElement *e = (PrivilegedElement *)addr; 77 if (e >= this && e < this+1) return true; 78 79 if (_next != NULL) { 80 return _next->contains(addr); 81 } else { | 34 Method* method = vfst->method(); 35 _klass = method->method_holder(); 36 _privileged_context = context; 37 #ifdef CHECK_UNHANDLED_OOPS 38 THREAD->allow_unhandled_oop(&_privileged_context); 39 #endif // CHECK_UNHANDLED_OOPS 40 _frame_id = vfst->frame_id(); 41 _next = next; 42 assert(_privileged_context == NULL || _privileged_context->is_oop(), "must be an oop"); 43 assert(protection_domain() == NULL || protection_domain()->is_oop(), "must be an oop"); 44 } 45 46 void PrivilegedElement::oops_do(OopClosure* f) { 47 PrivilegedElement *cur = this; 48 do { 49 f->do_oop((oop*) &cur->_privileged_context); 50 cur = cur->_next; 51 } while(cur != NULL); 52 } 53 54 //------------------------------------------------------------------------------- 55 #ifndef PRODUCT 56 57 void PrivilegedElement::print_on(outputStream* st) const { 58 st->print(" " PTR_FORMAT " ", p2i(_frame_id)); 59 _klass->print_value_on(st); 60 if (protection_domain() != NULL) { 61 st->print(" "); 62 protection_domain()->print_value_on(st); 63 } 64 st->cr(); 65 } 66 67 bool PrivilegedElement::contains(address addr) { 68 PrivilegedElement *e = (PrivilegedElement *)addr; 69 if (e >= this && e < this+1) return true; 70 71 if (_next != NULL) { 72 return _next->contains(addr); 73 } else { |