< 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 >