test/hotspot/gtest/gc/z/test_zUtils.cpp
changeset 50525 767cdb97f103
child 50975 b833992fa8fa
equal deleted inserted replaced
50524:04f4e983c2f7 50525:767cdb97f103
       
     1 /*
       
     2  * Copyright (c) 2017, 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/zUtils.inline.hpp"
       
     8 #include "unittest.hpp"
       
     9 
       
    10 #include <limits>
       
    11 
       
    12 template <typename T>
       
    13 static T max_alignment() {
       
    14   T max = std::numeric_limits<T>::max();
       
    15   return max ^ (max >> 1);
       
    16 }
       
    17 
       
    18 TEST(ZUtilsTest, round_up_power_of_2) {
       
    19   EXPECT_EQ(ZUtils::round_up_power_of_2(1u), 1u);
       
    20   EXPECT_EQ(ZUtils::round_up_power_of_2(2u), 2u);
       
    21   EXPECT_EQ(ZUtils::round_up_power_of_2(3u), 4u);
       
    22   EXPECT_EQ(ZUtils::round_up_power_of_2(4u), 4u);
       
    23   EXPECT_EQ(ZUtils::round_up_power_of_2(5u), 8u);
       
    24   EXPECT_EQ(ZUtils::round_up_power_of_2(6u), 8u);
       
    25   EXPECT_EQ(ZUtils::round_up_power_of_2(7u), 8u);
       
    26   EXPECT_EQ(ZUtils::round_up_power_of_2(8u), 8u);
       
    27   EXPECT_EQ(ZUtils::round_up_power_of_2(9u), 16u);
       
    28   EXPECT_EQ(ZUtils::round_up_power_of_2(10u), 16u);
       
    29   EXPECT_EQ(ZUtils::round_up_power_of_2(1023u), 1024u);
       
    30   EXPECT_EQ(ZUtils::round_up_power_of_2(1024u), 1024u);
       
    31   EXPECT_EQ(ZUtils::round_up_power_of_2(1025u), 2048u);
       
    32 
       
    33   const size_t max = max_alignment<size_t>();
       
    34   EXPECT_EQ(ZUtils::round_up_power_of_2(max - 1), max);
       
    35   EXPECT_EQ(ZUtils::round_up_power_of_2(max), max);
       
    36 }
       
    37 
       
    38 TEST(ZUtilsTest, round_down_power_of_2) {
       
    39   EXPECT_EQ(ZUtils::round_down_power_of_2(1u), 1u);
       
    40   EXPECT_EQ(ZUtils::round_down_power_of_2(2u), 2u);
       
    41   EXPECT_EQ(ZUtils::round_down_power_of_2(3u), 2u);
       
    42   EXPECT_EQ(ZUtils::round_down_power_of_2(4u), 4u);
       
    43   EXPECT_EQ(ZUtils::round_down_power_of_2(5u), 4u);
       
    44   EXPECT_EQ(ZUtils::round_down_power_of_2(6u), 4u);
       
    45   EXPECT_EQ(ZUtils::round_down_power_of_2(7u), 4u);
       
    46   EXPECT_EQ(ZUtils::round_down_power_of_2(8u), 8u);
       
    47   EXPECT_EQ(ZUtils::round_down_power_of_2(9u), 8u);
       
    48   EXPECT_EQ(ZUtils::round_down_power_of_2(10u), 8u);
       
    49   EXPECT_EQ(ZUtils::round_down_power_of_2(1023u), 512u);
       
    50   EXPECT_EQ(ZUtils::round_down_power_of_2(1024u), 1024u);
       
    51   EXPECT_EQ(ZUtils::round_down_power_of_2(1025u), 1024u);
       
    52 
       
    53   const size_t max = max_alignment<size_t>();
       
    54   EXPECT_EQ(ZUtils::round_down_power_of_2(max), max);
       
    55   EXPECT_EQ(ZUtils::round_down_power_of_2(max - 1), max / 2);
       
    56 }