50 os::print_hex_dump(&ss, start, end, 4);
51 msg.append("\n");
52 msg.append("Raw heap memory:\n%s", ss.as_string());
53 }
54 }
55
56 void ShenandoahAsserts::print_obj(ShenandoahMessageBuffer& msg, oop obj) {
57 ShenandoahHeap* heap = ShenandoahHeap::heap();
58 ShenandoahHeapRegion *r = heap->heap_region_containing(obj);
59
60 ResourceMark rm;
61 stringStream ss;
62 r->print_on(&ss);
63
64 stringStream mw_ss;
65 obj->mark().print_on(&mw_ss);
66
67 ShenandoahMarkingContext* const ctx = heap->marking_context();
68
69 msg.append(" " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()), obj->klass()->external_name());
70 msg.append(" %3s allocated after mark start\n", ctx->allocated_after_mark_start(obj) ? "" : "not");
71 msg.append(" %3s marked \n", ctx->is_marked(obj) ? "" : "not");
72 msg.append(" %3s in collection set\n", heap->in_collection_set(obj) ? "" : "not");
73 if (heap->traversal_gc() != NULL) {
74 msg.append(" %3s in traversal set\n", heap->traversal_gc()->traversal_set()->is_in(cast_from_oop<HeapWord*>(obj)) ? "" : "not");
75 }
76 msg.append(" mark:%s\n", mw_ss.as_string());
77 msg.append(" region: %s", ss.as_string());
78 }
79
80 void ShenandoahAsserts::print_non_obj(ShenandoahMessageBuffer& msg, void* loc) {
81 ShenandoahHeap* heap = ShenandoahHeap::heap();
82 if (heap->is_in(loc)) {
83 msg.append(" inside Java heap\n");
84 ShenandoahHeapRegion *r = heap->heap_region_containing(loc);
85 stringStream ss;
86 r->print_on(&ss);
87
88 msg.append(" %3s in collection set\n", heap->in_collection_set(loc) ? "" : "not");
89 msg.append(" region: %s", ss.as_string());
90 } else {
|
50 os::print_hex_dump(&ss, start, end, 4);
51 msg.append("\n");
52 msg.append("Raw heap memory:\n%s", ss.as_string());
53 }
54 }
55
56 void ShenandoahAsserts::print_obj(ShenandoahMessageBuffer& msg, oop obj) {
57 ShenandoahHeap* heap = ShenandoahHeap::heap();
58 ShenandoahHeapRegion *r = heap->heap_region_containing(obj);
59
60 ResourceMark rm;
61 stringStream ss;
62 r->print_on(&ss);
63
64 stringStream mw_ss;
65 obj->mark().print_on(&mw_ss);
66
67 ShenandoahMarkingContext* const ctx = heap->marking_context();
68
69 msg.append(" " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()), obj->klass()->external_name());
70 msg.append(" %3s allocated after mark start\n", ctx->allocated_after_mark_start(cast_from_oop<HeapWord*>(obj)) ? "" : "not");
71 msg.append(" %3s marked \n", ctx->is_marked(obj) ? "" : "not");
72 msg.append(" %3s in collection set\n", heap->in_collection_set(obj) ? "" : "not");
73 if (heap->traversal_gc() != NULL) {
74 msg.append(" %3s in traversal set\n", heap->traversal_gc()->traversal_set()->is_in(cast_from_oop<HeapWord*>(obj)) ? "" : "not");
75 }
76 msg.append(" mark:%s\n", mw_ss.as_string());
77 msg.append(" region: %s", ss.as_string());
78 }
79
80 void ShenandoahAsserts::print_non_obj(ShenandoahMessageBuffer& msg, void* loc) {
81 ShenandoahHeap* heap = ShenandoahHeap::heap();
82 if (heap->is_in(loc)) {
83 msg.append(" inside Java heap\n");
84 ShenandoahHeapRegion *r = heap->heap_region_containing(loc);
85 stringStream ss;
86 r->print_on(&ss);
87
88 msg.append(" %3s in collection set\n", heap->in_collection_set(loc) ? "" : "not");
89 msg.append(" region: %s", ss.as_string());
90 } else {
|