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