< prev index next > test/hotspot/gtest/gc/shared/test_preservedMarks.cpp
Print this page
#include "gc/shared/fullGCForwarding.inline.hpp"
#include "oops/oop.inline.hpp"
#include "unittest.hpp"
static markWord originalMark() { return markWord(markWord::lock_mask_in_place); }
! static markWord changedMark() { return markWord(0x4711); }
#define ASSERT_MARK_WORD_EQ(a, b) ASSERT_EQ((a).value(), (b).value())
TEST_VM(PreservedMarks, iterate_and_restore) {
PreservedMarks pm;
#include "gc/shared/fullGCForwarding.inline.hpp"
#include "oops/oop.inline.hpp"
#include "unittest.hpp"
static markWord originalMark() { return markWord(markWord::lock_mask_in_place); }
! static markWord changedMark() { return markWord(0x4712); }
#define ASSERT_MARK_WORD_EQ(a, b) ASSERT_EQ((a).value(), (b).value())
TEST_VM(PreservedMarks, iterate_and_restore) {
PreservedMarks pm;
o1->set_mark(changedMark());
o2->set_mark(changedMark());
ASSERT_MARK_WORD_EQ(o1->mark(), changedMark());
ASSERT_MARK_WORD_EQ(o2->mark(), changedMark());
+ FullGCForwarding::begin();
+
// Push o1 and o2 to have their marks preserved.
pm.push_if_necessary(o1, o1->mark());
pm.push_if_necessary(o2, o2->mark());
// Fake a move from o1->o3 and o2->o4.
// Restore all preserved and verify that the changed
// mark is now present at o3 and o4.
pm.restore();
ASSERT_MARK_WORD_EQ(o3->mark(), changedMark());
ASSERT_MARK_WORD_EQ(o4->mark(), changedMark());
+
+ FullGCForwarding::end();
}
< prev index next >