< prev index next >

test/native/oops/test_arrayOop.cpp

Print this page
rev 11935 : 8165601: Convert arrayOopDesc_test to Gtest
Reviewed-by: duke

*** 1,7 **** /* ! * Copyright (c) 1997, 2012, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1997, 2016, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 17,62 **** * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. - * */ #include "precompiled.hpp" - - /////////////// Unit tests /////////////// - - #ifndef PRODUCT - #include "oops/arrayOop.hpp" #include "oops/oop.inline.hpp" #include "utilities/globalDefinitions.hpp" ! bool arrayOopDesc::check_max_length_overflow(BasicType type) { ! julong length = max_array_length(type); julong bytes_per_element = type2aelembytes(type); ! julong bytes = length * bytes_per_element + header_size_in_bytes(); ! return (julong)(size_t)bytes == bytes; } ! static void test_max_array_length() { ! assert(arrayOopDesc::check_max_length_overflow(T_BOOLEAN), "size_t overflow for boolean array"); ! assert(arrayOopDesc::check_max_length_overflow(T_CHAR), "size_t overflow for char array"); ! assert(arrayOopDesc::check_max_length_overflow(T_FLOAT), "size_t overflow for float array"); ! assert(arrayOopDesc::check_max_length_overflow(T_DOUBLE), "size_t overflow for double array"); ! assert(arrayOopDesc::check_max_length_overflow(T_BYTE), "size_t overflow for byte array"); ! assert(arrayOopDesc::check_max_length_overflow(T_SHORT), "size_t overflow for short array"); ! assert(arrayOopDesc::check_max_length_overflow(T_INT), "size_t overflow for int array"); ! assert(arrayOopDesc::check_max_length_overflow(T_LONG), "size_t overflow for long array"); ! assert(arrayOopDesc::check_max_length_overflow(T_OBJECT), "size_t overflow for object array"); ! assert(arrayOopDesc::check_max_length_overflow(T_ARRAY), "size_t overflow for array array"); ! assert(arrayOopDesc::check_max_length_overflow(T_NARROWOOP), "size_t overflow for narrowOop array"); ! // T_VOID and T_ADDRESS are not supported by max_array_length() } ! void arrayOopDesc_test() { ! test_max_array_length(); } ! #endif //PRODUCT --- 17,89 ---- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ #include "precompiled.hpp" #include "oops/arrayOop.hpp" #include "oops/oop.inline.hpp" + #include "unittest.hpp" #include "utilities/globalDefinitions.hpp" ! class arrayOopDescTest { ! public: ! ! static int header_size_in_bytes() { ! return arrayOopDesc::header_size_in_bytes(); ! } ! }; ! ! static bool check_max_length_overflow(BasicType type) { ! julong length = arrayOopDesc::max_array_length(type); julong bytes_per_element = type2aelembytes(type); ! julong bytes = length * bytes_per_element ! + arrayOopDescTest::header_size_in_bytes(); ! return (julong) (size_t) bytes == bytes; ! } ! ! TEST(arrayOopDesc, boolean) { ! ASSERT_PRED1(check_max_length_overflow, T_BOOLEAN); ! } ! ! TEST(arrayOopDesc, char) { ! ASSERT_PRED1(check_max_length_overflow, T_CHAR); ! } ! ! TEST(arrayOopDesc, float) { ! ASSERT_PRED1(check_max_length_overflow, T_FLOAT); ! } ! ! TEST(arrayOopDesc, double) { ! ASSERT_PRED1(check_max_length_overflow, T_DOUBLE); } ! TEST(arrayOopDesc, byte) { ! ASSERT_PRED1(check_max_length_overflow, T_BYTE); ! } ! ! TEST(arrayOopDesc, short) { ! ASSERT_PRED1(check_max_length_overflow, T_SHORT); ! } ! TEST(arrayOopDesc, int) { ! ASSERT_PRED1(check_max_length_overflow, T_INT); } ! TEST(arrayOopDesc, long) { ! ASSERT_PRED1(check_max_length_overflow, T_LONG); } ! TEST(arrayOopDesc, object) { ! ASSERT_PRED1(check_max_length_overflow, T_OBJECT); ! } ! ! TEST(arrayOopDesc, array) { ! ASSERT_PRED1(check_max_length_overflow, T_ARRAY); ! } ! ! TEST(arrayOopDesc, narrowOop) { ! ASSERT_PRED1(check_max_length_overflow, T_NARROWOOP); ! } ! // T_VOID and T_ADDRESS are not supported by max_array_length()
< prev index next >