void GuardedMemory::print_on(outputStream* st) const { if (_base_addr == NULL) { st->print_cr("GuardedMemory(" PTR_FORMAT ") not associated to any memory", p2i(this)); return; } st->print_cr("GuardedMemory(" PTR_FORMAT ") base_addr=" PTR_FORMAT " tag=" PTR_FORMAT " user_size=" SIZE_FORMAT " user_data=" PTR_FORMAT, p2i(this), p2i(_base_addr), p2i(get_tag()), get_user_size(), p2i(get_user_ptr())); Guard* guard = get_head_guard(); st->print_cr(" Header guard @" PTR_FORMAT " is %s", p2i(guard), (guard->verify() ? "OK" : "BROKEN")); guard = get_tail_guard(); st->print_cr(" Trailer guard @" PTR_FORMAT " is %s", p2i(guard), (guard->verify() ? "OK" : "BROKEN")); u_char udata = *get_user_ptr(); switch (udata) { case uninitBlockPad: st->print_cr(" User data appears unused"); break; case freeBlockPad: st->print_cr(" User data appears to have been freed"); break; default: st->print_cr(" User data appears to be in use"); break; } }
void set_user_bytes(u_char ch) { memset(get_user_ptr(), ch, get_user_size()); }
Guard* get_tail_guard() const { return (Guard*) (get_user_ptr() + get_user_size()); };