< prev index next >

src/hotspot/cpu/x86/templateTable_x86.cpp

Print this page

        

@@ -826,11 +826,11 @@
   Register index = rax;
 
   index_check(array, index); // kills rbx
   if (ValueArrayFlatten) {
     Label is_flat_array, done;
-    __ test_flat_array_oop(array, rbx, is_flat_array);
+    __ test_flattened_array_oop(array, rbx, is_flat_array);
     do_oop_load(_masm,
                 Address(array, index,
                         UseCompressedOops ? Address::times_4 : Address::times_ptr,
                         arrayOopDesc::base_offset_in_bytes(T_OBJECT)),
                 rax,

@@ -1149,11 +1149,11 @@
   __ jcc(Assembler::zero, is_null);
 
   // Move array class to rdi
   __ load_klass(rdi, rdx);
   if (ValueArrayFlatten) {
-    __ test_flat_array_klass(rdi, rbx, is_flat_array);
+    __ test_flattened_array_oop(rdx, rbx, is_flat_array);
   }
 
   // Move subklass into rbx
   __ load_klass(rbx, rax);
   // Move array element superklass into rax

@@ -1183,19 +1183,12 @@
   __ bind(is_null);
   __ profile_null_seen(rbx);
   if (EnableValhalla) {
     Label is_null_into_value_array_npe, store_null;
 
-    __ load_klass(rdi, rdx);
-    // No way to store null in flat array
-    __ test_flat_array_klass(rdi, rbx, is_null_into_value_array_npe);
-
-    // Use case for storing values in objArray where element_klass is specifically
-    // a value type because they could not be flattened "for reasons",
-    // these need to have the same semantics as flat arrays, i.e. NPE
-    __ movptr(rdi, Address(rdi, ObjArrayKlass::element_klass_offset()));
-    __ test_klass_is_value(rdi, rdi, is_null_into_value_array_npe);
+    // No way to store null in null-free array
+    __ test_null_free_array_oop(rdx, rbx, is_null_into_value_array_npe);
     __ jmp(store_null);
 
     __ bind(is_null_into_value_array_npe);
     __ jump(ExternalAddress(Interpreter::_throw_NullPointerException_entry));
 
< prev index next >