65 TEST_VM(arrayOopDesc, long) {
66 ASSERT_PRED1(check_max_length_overflow, T_LONG);
67 }
68
69 TEST_VM(arrayOopDesc, object) {
70 ASSERT_PRED1(check_max_length_overflow, T_OBJECT);
71 }
72
73 TEST_VM(arrayOopDesc, array) {
74 ASSERT_PRED1(check_max_length_overflow, T_ARRAY);
75 }
76
77 TEST_VM(arrayOopDesc, narrowOop) {
78 ASSERT_PRED1(check_max_length_overflow, T_NARROWOOP);
79 }
80 // T_VOID and T_ADDRESS are not supported by max_array_length()
81
82 TEST_VM(arrayOopDesc, base_offset) {
83 #ifdef _LP64
84 if (UseCompactObjectHeaders) {
85 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BOOLEAN), 12);
86 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BYTE), 12);
87 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_SHORT), 12);
88 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_CHAR), 12);
89 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_INT), 12);
90 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_FLOAT), 12);
91 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_LONG), 16);
92 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_DOUBLE), 16);
93 if (UseCompressedOops) {
94 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_OBJECT), 12);
95 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_ARRAY), 12);
96 } else {
97 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_OBJECT), 16);
98 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_ARRAY), 16);
99 }
100 } else if (UseCompressedClassPointers) {
101 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BOOLEAN), 16);
102 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BYTE), 16);
103 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_SHORT), 16);
104 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_CHAR), 16);
105 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_INT), 16);
106 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_FLOAT), 16);
107 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_LONG), 16);
108 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_DOUBLE), 16);
109 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_OBJECT), 16);
110 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_ARRAY), 16);
111 } else {
112 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BOOLEAN), 20);
113 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BYTE), 20);
114 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_SHORT), 20);
115 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_CHAR), 20);
116 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_INT), 20);
117 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_FLOAT), 20);
118 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_LONG), 24);
|
65 TEST_VM(arrayOopDesc, long) {
66 ASSERT_PRED1(check_max_length_overflow, T_LONG);
67 }
68
69 TEST_VM(arrayOopDesc, object) {
70 ASSERT_PRED1(check_max_length_overflow, T_OBJECT);
71 }
72
73 TEST_VM(arrayOopDesc, array) {
74 ASSERT_PRED1(check_max_length_overflow, T_ARRAY);
75 }
76
77 TEST_VM(arrayOopDesc, narrowOop) {
78 ASSERT_PRED1(check_max_length_overflow, T_NARROWOOP);
79 }
80 // T_VOID and T_ADDRESS are not supported by max_array_length()
81
82 TEST_VM(arrayOopDesc, base_offset) {
83 #ifdef _LP64
84 if (UseCompactObjectHeaders) {
85 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BOOLEAN), 8);
86 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BYTE), 8);
87 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_SHORT), 8);
88 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_CHAR), 8);
89 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_INT), 8);
90 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_FLOAT), 8);
91 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_LONG), 8);
92 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_DOUBLE), 8);
93 if (UseCompressedOops) {
94 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_OBJECT), 8);
95 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_ARRAY), 8);
96 } else {
97 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_OBJECT), 8);
98 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_ARRAY), 8);
99 }
100 } else if (UseCompressedClassPointers) {
101 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BOOLEAN), 16);
102 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BYTE), 16);
103 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_SHORT), 16);
104 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_CHAR), 16);
105 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_INT), 16);
106 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_FLOAT), 16);
107 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_LONG), 16);
108 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_DOUBLE), 16);
109 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_OBJECT), 16);
110 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_ARRAY), 16);
111 } else {
112 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BOOLEAN), 20);
113 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_BYTE), 20);
114 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_SHORT), 20);
115 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_CHAR), 20);
116 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_INT), 20);
117 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_FLOAT), 20);
118 EXPECT_EQ(arrayOopDesc::base_offset_in_bytes(T_LONG), 24);
|