< prev index next >

src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp

Print this page
8248238: Adding Windows support to OpenJDK on AArch64

Summary: LP64 vs LLP64 changes to add Windows support

Contributed-by: Monica Beckwith <monica.beckwith@microsoft.com>, Ludovic Henry <luhenry@microsoft.com>
Reviewed-by:
8248238: Adding Windows support to OpenJDK on AArch64

Summary: Adding Windows support for AArch64

Contributed-by: Ludovic Henry <luhenry@microsoft.com>, Monica Beckwith <monica.beckwith@microsoft.com>
Reviewed-by:

*** 1350,1360 **** // get object class // not a safepoint as obj null check happens earlier __ load_klass(klass_RInfo, obj); if (k->is_loaded()) { // See if we get an immediate positive hit ! __ ldr(rscratch1, Address(klass_RInfo, long(k->super_check_offset()))); __ cmp(k_RInfo, rscratch1); if ((juint)in_bytes(Klass::secondary_super_cache_offset()) != k->super_check_offset()) { __ br(Assembler::NE, *failure_target); // successful cast, fall through to profile or jump } else { --- 1350,1360 ---- // get object class // not a safepoint as obj null check happens earlier __ load_klass(klass_RInfo, obj); if (k->is_loaded()) { // See if we get an immediate positive hit ! __ ldr(rscratch1, Address(klass_RInfo, int64_t(k->super_check_offset()))); __ cmp(k_RInfo, rscratch1); if ((juint)in_bytes(Klass::secondary_super_cache_offset()) != k->super_check_offset()) { __ br(Assembler::NE, *failure_target); // successful cast, fall through to profile or jump } else {
*** 2014,2024 **** ShouldNotReachHere(); } } else if (code == lir_cmp_l2i) { Label done; __ cmp(left->as_register_lo(), right->as_register_lo()); ! __ mov(dst->as_register(), (u_int64_t)-1L); __ br(Assembler::LT, done); __ csinc(dst->as_register(), zr, zr, Assembler::EQ); __ bind(done); } else { ShouldNotReachHere(); --- 2014,2024 ---- ShouldNotReachHere(); } } else if (code == lir_cmp_l2i) { Label done; __ cmp(left->as_register_lo(), right->as_register_lo()); ! __ mov(dst->as_register(), (uint64_t)-1L); __ br(Assembler::LT, done); __ csinc(dst->as_register(), zr, zr, Assembler::EQ); __ bind(done); } else { ShouldNotReachHere();
*** 2282,2292 **** } assert(default_type != NULL && default_type->is_array_klass() && default_type->is_loaded(), "must be true at this point"); int elem_size = type2aelembytes(basic_type); - int shift_amount; int scale = exact_log2(elem_size); Address src_length_addr = Address(src, arrayOopDesc::length_offset_in_bytes()); Address dst_length_addr = Address(dst, arrayOopDesc::length_offset_in_bytes()); Address src_klass_addr = Address(src, oopDesc::klass_offset_in_bytes()); --- 2282,2291 ----
*** 2673,2683 **** Register crc = op->crc()->as_register(); Register val = op->val()->as_register(); Register res = op->result_opr()->as_register(); assert_different_registers(val, crc, res); ! unsigned long offset; __ adrp(res, ExternalAddress(StubRoutines::crc_table_addr()), offset); if (offset) __ add(res, res, offset); __ mvnw(crc, crc); // ~crc __ update_byte_crc32(crc, val, res); --- 2672,2682 ---- Register crc = op->crc()->as_register(); Register val = op->val()->as_register(); Register res = op->result_opr()->as_register(); assert_different_registers(val, crc, res); ! uint64_t offset; __ adrp(res, ExternalAddress(StubRoutines::crc_table_addr()), offset); if (offset) __ add(res, res, offset); __ mvnw(crc, crc); // ~crc __ update_byte_crc32(crc, val, res);
< prev index next >