1 /* 2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 3 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 */ 5 6 #include "precompiled.hpp" 7 #include "gc/z/zPhysicalMemory.inline.hpp" 8 #include "utilities/debug.hpp" 9 #include "unittest.hpp" 10 11 #if defined(AMD64) 12 13 TEST(ZPhysicalMemorySegmentTest, split) { 14 const size_t SegmentSize = 2 * M; 15 16 ZPhysicalMemorySegment seg(0, 10 * SegmentSize); 17 18 ZPhysicalMemorySegment seg_split0 = seg.split(0 * SegmentSize); 19 EXPECT_EQ(seg_split0.size(), 0 * SegmentSize); 20 EXPECT_EQ( seg.size(), 10 * SegmentSize); 21 22 ZPhysicalMemorySegment seg_split1 = seg.split(5 * SegmentSize); 23 EXPECT_EQ(seg_split1.size(), 5 * SegmentSize); 24 EXPECT_EQ( seg.size(), 5 * SegmentSize); 25 26 ZPhysicalMemorySegment seg_split2 = seg.split(5 * SegmentSize); 27 EXPECT_EQ(seg_split2.size(), 5 * SegmentSize); 28 EXPECT_EQ( seg.size(), 0 * SegmentSize); 29 30 ZPhysicalMemorySegment seg_split3 = seg.split(0 * SegmentSize); 31 EXPECT_EQ(seg_split3.size(), 0 * SegmentSize); 32 EXPECT_EQ( seg.size(), 0 * SegmentSize); 33 } 34 35 TEST(ZPhysicalMemoryTest, split) { 36 const size_t SegmentSize = 2 * M; 37 38 ZPhysicalMemoryManager pmem_manager(10 * SegmentSize, SegmentSize); 39 40 ZPhysicalMemory pmem = pmem_manager.alloc(8 * SegmentSize); 41 EXPECT_EQ(pmem.nsegments(), 1u) << "wrong number of segments"; 42 43 ZPhysicalMemory split0_pmem = pmem.split(SegmentSize); 44 EXPECT_EQ(split0_pmem.nsegments(), 1u); 45 EXPECT_EQ( pmem.nsegments(), 1u); 46 EXPECT_EQ(split0_pmem.size(), 1 * SegmentSize); 47 EXPECT_EQ( pmem.size(), 7 * SegmentSize); 48 49 ZPhysicalMemory split1_pmem = pmem.split(2 * SegmentSize); 50 EXPECT_EQ(split1_pmem.nsegments(), 1u); 51 EXPECT_EQ( pmem.nsegments(), 1u); 52 EXPECT_EQ(split1_pmem.size(), 2 * SegmentSize); 53 EXPECT_EQ( pmem.size(), 5 * SegmentSize); 54 55 ZPhysicalMemory split2_pmem = pmem.split(5 * SegmentSize); 56 EXPECT_EQ(split2_pmem.nsegments(), 1u); 57 EXPECT_EQ( pmem.nsegments(), 1u); 58 EXPECT_EQ(split2_pmem.size(), 5 * SegmentSize); 59 EXPECT_EQ( pmem.size(), 0 * SegmentSize); 60 } 61 62 #endif