< prev index next >

src/hotspot/cpu/aarch64/templateTable_aarch64.cpp

Print this page

        

@@ -1119,11 +1119,11 @@
 
   Address element_address(r3, r4, Address::uxtw(LogBytesPerHeapOop));
 
   index_check(r3, r2);     // kills r1
 
-  // DMS CHECK: what does line below do?
+  // FIXME: Could we remove the line below?
   __ add(r4, r2, arrayOopDesc::base_offset_in_bytes(T_OBJECT) >> LogBytesPerHeapOop); 
 
   // do array store check - check for NULL value first
   __ cbz(r0, is_null);
 

@@ -1209,12 +1209,12 @@
      __ profile_typecheck_failed(r2);
      __ b(ExternalAddress(Interpreter::_throw_ArrayStoreException_entry));
 
      __ bind(is_type_ok);
 
-    // DMS CHECK: Reload from TOS to be safe, because of profile_typecheck that blows r2 and r0.
-    // Should we really do it?
+    // Reload from TOS to be safe, because of profile_typecheck that blows r2 and r0.
+    // FIXME: Should we really do it?
      __ ldr(r1, at_tos());  // value
      __ mov(r2, r3); // array, ldr(r2, at_tos_p2()); 
      __ ldr(r3, at_tos_p1()); // index
      __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::value_array_store), r1, r2, r3);
   }

@@ -2102,11 +2102,11 @@
   __ pop_ptr(r1);
 
   Register is_value_mask = rscratch1;
   __ mov(is_value_mask, markOopDesc::always_locked_pattern);
 
-  if (EnableValhalla && ACmpOnValues == 3) {
+  if (EnableValhalla) {
     __ cmp(r1, r0);
     __ br(Assembler::EQ, (cc == equal) ? taken : not_taken);
 
     // might be substitutable, test if either r0 or r1 is null
     __ andr(r2, r0, r1);

@@ -2134,32 +2134,11 @@
       invoke_is_substitutable(r0, r1, not_taken, taken);
     }
     __ stop("Not reachable");
   }
 
-  if (EnableValhalla && ACmpOnValues == 1) {
-    Label is_null;
-    __ cbz(r1, is_null);
-    __ ldr(r2, Address(r1, oopDesc::mark_offset_in_bytes()));
-    __ andr(r2, r2, is_value_mask);
-    __ cmp(r2, is_value_mask);
-    __ cset(r2, Assembler::EQ);
-    __ orr(r1, r1, r2);
-    __ bind(is_null);
-  }
-
   __ cmpoop(r1, r0);
-
-  if (EnableValhalla && ACmpOnValues == 2) {
-    __ br(Assembler::NE, (cc == not_equal) ? taken : not_taken);
-    __ cbz(r1, (cc == equal) ? taken : not_taken);
-    __ ldr(r2, Address(r1, oopDesc::mark_offset_in_bytes()));  
-    __ andr(r2, r2, is_value_mask);
-    __ cmp(r2, is_value_mask); 
-    cc = (cc == equal) ? not_equal : equal;
-  }
-
   __ br(j_not(cc), not_taken);
   __ bind(taken);
   branch(false, false);
   __ bind(not_taken);
   __ profile_not_taken_branch(r0);

@@ -3345,11 +3324,11 @@
   // access field
   switch (bytecode()) {
   case Bytecodes::_fast_qgetfield: 
     {
        Label isFlattened, isInitialized, Done;
-       // DMS CHECK: We don't need to reload multiple times, but stay close to original code
+       // FIXME: We don't need to reload registers multiple times, but stay close to x86 code
        __ ldrw(r9, Address(r2, in_bytes(ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()))); 
        __ test_field_is_flattened(r9, r8 /* temp */, isFlattened);
         // Non-flattened field case
         __ mov(r9, r0);
         __ load_heap_oop(r0, field);
< prev index next >