< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp
Print this page
rev 51547 : Refactor to group marking bitmap and TAMS structure in one class ShenandoahMarkingContext
rev 51548 : [mq]: refactor-marking-context.01
@@ -27,10 +27,11 @@
#include "gc/shenandoah/shenandoahConnectionMatrix.hpp"
#include "gc/shenandoah/shenandoahAsserts.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp"
+#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
#include "gc/shenandoah/shenandoahTraversalGC.hpp"
#include "memory/resourceArea.hpp"
void print_raw_memory(ShenandoahMessageBuffer &msg, void* loc) {
// Be extra safe. Only access data that is guaranteed to be safe:
@@ -59,15 +60,18 @@
ResourceMark rm;
stringStream ss;
r->print_on(&ss);
+ ShenandoahMarkingContext* const next_ctx = heap->next_marking_context();
+ ShenandoahMarkingContext* const compl_ctx = heap->next_marking_context();
+
msg.append(" " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()), obj->klass()->external_name());
- msg.append(" %3s allocated after complete mark start\n", heap->allocated_after_complete_mark_start((HeapWord *) obj) ? "" : "not");
- msg.append(" %3s allocated after next mark start\n", heap->allocated_after_next_mark_start((HeapWord *) obj) ? "" : "not");
- msg.append(" %3s marked complete\n", heap->is_marked_complete(obj) ? "" : "not");
- msg.append(" %3s marked next\n", heap->is_marked_next(obj) ? "" : "not");
+ msg.append(" %3s allocated after complete mark start\n", compl_ctx->allocated_after_mark_start((HeapWord *) obj) ? "" : "not");
+ msg.append(" %3s allocated after next mark start\n", next_ctx->allocated_after_mark_start((HeapWord *) obj) ? "" : "not");
+ msg.append(" %3s marked complete\n", compl_ctx->is_marked(obj) ? "" : "not");
+ msg.append(" %3s marked next\n", next_ctx->is_marked(obj) ? "" : "not");
msg.append(" %3s in collection set\n", heap->in_collection_set(obj) ? "" : "not");
if (heap->traversal_gc() != NULL) {
msg.append(" %3s in root set\n", heap->traversal_gc()->root_regions()->is_in((HeapWord*) obj) ? "" : "not");
msg.append(" %3s in traversal set\n", heap->traversal_gc()->traversal_set()->is_in((HeapWord*) obj) ? "" : "not");
}
@@ -318,22 +322,22 @@
void ShenandoahAsserts::assert_marked_complete(void* interior_loc, oop obj, const char* file, int line) {
assert_correct(interior_loc, obj, file, line);
ShenandoahHeap* heap = ShenandoahHeap::heap_no_check();
- if (!heap->is_marked_complete(obj)) {
+ if (!heap->complete_marking_context()->is_marked(obj)) {
print_failure(_safe_all, obj, interior_loc, NULL, "Shenandoah assert_marked_complete failed",
"Object should be marked (complete)",
file, line);
}
}
void ShenandoahAsserts::assert_marked_next(void* interior_loc, oop obj, const char* file, int line) {
assert_correct(interior_loc, obj, file, line);
ShenandoahHeap* heap = ShenandoahHeap::heap_no_check();
- if (!heap->is_marked_next(obj)) {
+ if (!heap->next_marking_context()->is_marked(obj)) {
print_failure(_safe_all, obj, interior_loc, NULL, "Shenandoah assert_marked_next failed",
"Object should be marked (next)",
file, line);
}
}
< prev index next >