mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
7063628: Use cbcond on T4
Add new short branch instruction to Hotspot sparc assembler. Reviewed-by: never, twisti, jrose
This commit is contained in:
parent
aa16309657
commit
48c1293916
30 changed files with 966 additions and 1097 deletions
|
@ -41,9 +41,7 @@ void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
|
|||
// Note: needs more testing of out-of-line vs. inline slow case
|
||||
verify_oop(receiver);
|
||||
load_klass(receiver, temp_reg);
|
||||
cmp(temp_reg, iCache);
|
||||
brx(Assembler::equal, true, Assembler::pt, L);
|
||||
delayed()->nop();
|
||||
cmp_and_brx_short(temp_reg, iCache, Assembler::equal, Assembler::pt, L);
|
||||
AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
|
||||
jump_to(ic_miss, temp_reg);
|
||||
delayed()->nop();
|
||||
|
@ -142,8 +140,7 @@ void C1_MacroAssembler::unlock_object(Register Rmark, Register Roop, Register Rb
|
|||
}
|
||||
// Test first it it is a fast recursive unlock
|
||||
ld_ptr(Rbox, BasicLock::displaced_header_offset_in_bytes(), Rmark);
|
||||
br_null(Rmark, false, Assembler::pt, done);
|
||||
delayed()->nop();
|
||||
br_null_short(Rmark, Assembler::pt, done);
|
||||
if (!UseBiasedLocking) {
|
||||
// load object
|
||||
ld_ptr(Rbox, BasicObjectLock::obj_offset_in_bytes(), Roop);
|
||||
|
@ -231,7 +228,7 @@ void C1_MacroAssembler::allocate_object(
|
|||
if (!is_simm13(obj_size * wordSize)) {
|
||||
// would need to use extra register to load
|
||||
// object size => go the slow case for now
|
||||
br(Assembler::always, false, Assembler::pt, slow_case);
|
||||
ba(slow_case);
|
||||
delayed()->nop();
|
||||
return;
|
||||
}
|
||||
|
@ -257,12 +254,10 @@ void C1_MacroAssembler::initialize_object(
|
|||
Label ok;
|
||||
ld(klass, klassOopDesc::header_size() * HeapWordSize + Klass::layout_helper_offset_in_bytes(), t1);
|
||||
if (var_size_in_bytes != noreg) {
|
||||
cmp(t1, var_size_in_bytes);
|
||||
cmp_and_brx_short(t1, var_size_in_bytes, Assembler::equal, Assembler::pt, ok);
|
||||
} else {
|
||||
cmp(t1, con_size_in_bytes);
|
||||
cmp_and_brx_short(t1, con_size_in_bytes, Assembler::equal, Assembler::pt, ok);
|
||||
}
|
||||
brx(Assembler::equal, false, Assembler::pt, ok);
|
||||
delayed()->nop();
|
||||
stop("bad size in initialize_object");
|
||||
should_not_reach_here();
|
||||
|
||||
|
@ -387,8 +382,7 @@ void C1_MacroAssembler::verify_stack_oop(int stack_offset) {
|
|||
|
||||
void C1_MacroAssembler::verify_not_null_oop(Register r) {
|
||||
Label not_null;
|
||||
br_notnull(r, false, Assembler::pt, not_null);
|
||||
delayed()->nop();
|
||||
br_notnull_short(r, Assembler::pt, not_null);
|
||||
stop("non-null oop required");
|
||||
bind(not_null);
|
||||
if (!VerifyOops) return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue