@@ -118,7 +118,7 @@ void Assembler::_li(Register Rd, int64_t imm) {
118118
119119void Assembler::li64 (Register Rd, int64_t imm) {
120120 // Load upper 32 bits. upper = imm[63:32], but if imm[31] == 1 or
121- // (imm[31:28 ] == 0x7ff && imm[19] == 1), upper = imm[63:32] + 1.
121+ // (imm[31:20 ] == 0x7ff && imm[19] == 1), upper = imm[63:32] + 1.
122122 int64_t lower = imm & 0xffffffff ;
123123 lower -= ((lower << 44 ) >> 44 );
124124 int64_t tmp_imm = ((uint64_t )(imm & 0xffffffff00000000 )) + (uint64_t )lower;
@@ -273,18 +273,18 @@ void Assembler::wrap_label(Register Rt, Label &L, jal_jalr_insn insn) {
273273}
274274
275275void Assembler::movptr_with_offset (Register Rd, address addr, int32_t &offset) {
276- uintptr_t imm64 = (uintptr_t )addr;
276+ int64_t imm64 = (int64_t )addr;
277277#ifndef PRODUCT
278278 {
279279 char buffer[64 ];
280280 snprintf (buffer, sizeof (buffer), " 0x%" PRIx64, imm64);
281281 block_comment (buffer);
282282 }
283283#endif
284- assert (is_unsigned_imm_in_range (imm64, 47 , 0 ) || (imm64 == (uintptr_t )-1 ),
284+ assert (is_unsigned_imm_in_range (imm64, 47 , 0 ) || (imm64 == (int64_t )-1 ),
285285 " bit 47 overflows in address constant" );
286286 // Load upper 31 bits
287- int32_t imm = imm64 >> 17 ;
287+ int64_t imm = imm64 >> 17 ;
288288 int64_t upper = imm, lower = imm;
289289 lower = (lower << 52 ) >> 52 ;
290290 upper -= lower;
0 commit comments