--- old/test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp 2020-05-18 23:08:39.028971907 +0200 +++ new/test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp 2020-05-18 23:08:38.693961040 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,8 +26,8 @@ #include "unittest.hpp" TEST(ZPhysicalMemoryTest, copy) { - const ZPhysicalMemorySegment seg0(0, 100); - const ZPhysicalMemorySegment seg1(200, 100); + const ZPhysicalMemorySegment seg0(0, 100, true); + const ZPhysicalMemorySegment seg1(200, 100, true); ZPhysicalMemory pmem0; pmem0.add_segment(seg0); @@ -52,13 +52,13 @@ } TEST(ZPhysicalMemoryTest, segments) { - const ZPhysicalMemorySegment seg0(0, 1); - const ZPhysicalMemorySegment seg1(1, 1); - const ZPhysicalMemorySegment seg2(2, 1); - const ZPhysicalMemorySegment seg3(3, 1); - const ZPhysicalMemorySegment seg4(4, 1); - const ZPhysicalMemorySegment seg5(5, 1); - const ZPhysicalMemorySegment seg6(6, 1); + const ZPhysicalMemorySegment seg0(0, 1, true); + const ZPhysicalMemorySegment seg1(1, 1, true); + const ZPhysicalMemorySegment seg2(2, 1, true); + const ZPhysicalMemorySegment seg3(3, 1, true); + const ZPhysicalMemorySegment seg4(4, 1, true); + const ZPhysicalMemorySegment seg5(5, 1, true); + const ZPhysicalMemorySegment seg6(6, 1, true); ZPhysicalMemory pmem0; EXPECT_EQ(pmem0.nsegments(), 0u); @@ -116,9 +116,9 @@ TEST(ZPhysicalMemoryTest, split) { ZPhysicalMemory pmem; - pmem.add_segment(ZPhysicalMemorySegment(0, 10)); - pmem.add_segment(ZPhysicalMemorySegment(10, 10)); - pmem.add_segment(ZPhysicalMemorySegment(30, 10)); + pmem.add_segment(ZPhysicalMemorySegment(0, 10, true)); + pmem.add_segment(ZPhysicalMemorySegment(10, 10, true)); + pmem.add_segment(ZPhysicalMemorySegment(30, 10, true)); EXPECT_EQ(pmem.nsegments(), 2u); EXPECT_EQ(pmem.size(), 30u); @@ -140,3 +140,63 @@ EXPECT_EQ(pmem.nsegments(), 0u); EXPECT_EQ(pmem.size(), 0u); } + +TEST(ZPhysicalMemoryTest, split_committed) { + ZPhysicalMemory pmem0; + pmem0.add_segment(ZPhysicalMemorySegment(0, 10, true)); + pmem0.add_segment(ZPhysicalMemorySegment(10, 10, false)); + pmem0.add_segment(ZPhysicalMemorySegment(20, 10, true)); + pmem0.add_segment(ZPhysicalMemorySegment(30, 10, false)); + EXPECT_EQ(pmem0.nsegments(), 4u); + EXPECT_EQ(pmem0.size(), 40u); + + ZPhysicalMemory pmem1 = pmem0.split_committed(); + EXPECT_EQ(pmem0.nsegments(), 2u); + EXPECT_EQ(pmem0.size(), 20u); + EXPECT_EQ(pmem1.nsegments(), 2u); + EXPECT_EQ(pmem1.size(), 20u); +} + +TEST(ZPhysicalMemoryTest, transfer0) { + ZPhysicalMemory pmem0; + ZPhysicalMemory pmem1; + + pmem0.add_segment(ZPhysicalMemorySegment(10, 10, true)); + pmem0.add_segment(ZPhysicalMemorySegment(30, 10, true)); + pmem0.add_segment(ZPhysicalMemorySegment(50, 10, true)); + EXPECT_EQ(pmem0.nsegments(), 3u); + EXPECT_EQ(pmem0.size(), 30u); + + pmem1.add_segment(ZPhysicalMemorySegment(20, 10, true)); + pmem1.add_segment(ZPhysicalMemorySegment(40, 10, true)); + pmem1.add_segment(ZPhysicalMemorySegment(60, 10, true)); + EXPECT_EQ(pmem1.nsegments(), 3u); + EXPECT_EQ(pmem1.size(), 30u); + + pmem0.transfer_segments(pmem1); + EXPECT_EQ(pmem0.nsegments(), 1u); + EXPECT_EQ(pmem0.size(), 60u); + EXPECT_TRUE(pmem1.is_null()); +} + +TEST(ZPhysicalMemoryTest, transfer1) { + ZPhysicalMemory pmem0; + ZPhysicalMemory pmem1; + + pmem0.add_segment(ZPhysicalMemorySegment(10, 10, true)); + pmem0.add_segment(ZPhysicalMemorySegment(30, 10, true)); + pmem0.add_segment(ZPhysicalMemorySegment(50, 10, true)); + EXPECT_EQ(pmem0.nsegments(), 3u); + EXPECT_EQ(pmem0.size(), 30u); + + pmem1.add_segment(ZPhysicalMemorySegment(20, 10, false)); + pmem1.add_segment(ZPhysicalMemorySegment(40, 10, false)); + pmem1.add_segment(ZPhysicalMemorySegment(60, 10, false)); + EXPECT_EQ(pmem1.nsegments(), 3u); + EXPECT_EQ(pmem1.size(), 30u); + + pmem0.transfer_segments(pmem1); + EXPECT_EQ(pmem0.nsegments(), 6u); + EXPECT_EQ(pmem0.size(), 60u); + EXPECT_TRUE(pmem1.is_null()); +}