Mercurial > hg > openjdk > aarch64-port > hotspot
changeset 8580:af416790f406
8143584: Load constant pool tag and class status with load acquire
Reviewed-by: roland, aph
author | hshi |
---|---|
date | Thu, 26 Nov 2015 15:37:04 +0000 |
parents | 0e3fa1efe9b1 |
children | 541ba884c056 |
files | src/cpu/aarch64/vm/templateTable_aarch64.cpp |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/templateTable_aarch64.cpp Tue Dec 29 16:47:34 2015 +0000 +++ b/src/cpu/aarch64/vm/templateTable_aarch64.cpp Thu Nov 26 15:37:04 2015 +0000 @@ -388,7 +388,8 @@ // get type __ add(r3, r1, tags_offset); - __ ldrb(r3, Address(r0, r3)); + __ lea(r3, Address(r0, r3)); + __ ldarb(r3, r3); // unresolved class - get the resolved class __ cmp(r3, JVM_CONSTANT_UnresolvedClass); @@ -3326,7 +3327,8 @@ // how Constant Pool is updated (see ConstantPool::klass_at_put) const int tags_offset = Array<u1>::base_offset_in_bytes(); __ lea(rscratch1, Address(r0, r3, Address::lsl(0))); - __ ldrb(rscratch1, Address(rscratch1, tags_offset)); + __ lea(rscratch1, Address(rscratch1, tags_offset)); + __ ldarb(rscratch1, rscratch1); __ cmp(rscratch1, JVM_CONSTANT_Class); __ br(Assembler::NE, slow_case); @@ -3470,7 +3472,8 @@ __ get_unsigned_2_byte_index_at_bcp(r19, 1); // r19=index // See if bytecode has already been quicked __ add(rscratch1, r3, Array<u1>::base_offset_in_bytes()); - __ ldrb(r1, Address(rscratch1, r19)); + __ lea(r1, Address(rscratch1, r19)); + __ ldarb(r1, r1); __ cmp(r1, JVM_CONSTANT_Class); __ br(Assembler::EQ, quicked); @@ -3524,7 +3527,8 @@ __ get_unsigned_2_byte_index_at_bcp(r19, 1); // r19=index // See if bytecode has already been quicked __ add(rscratch1, r3, Array<u1>::base_offset_in_bytes()); - __ ldrb(r1, Address(rscratch1, r19)); + __ lea(r1, Address(rscratch1, r19)); + __ ldarb(r1, r1); __ cmp(r1, JVM_CONSTANT_Class); __ br(Assembler::EQ, quicked);