@@ -3271,60 +3271,60 @@ address MacroAssembler::emit_trampoline_stub(int insts_call_instruction_offset,
3271
3271
return stub_start_addr;
3272
3272
}
3273
3273
3274
- Address MacroAssembler::add_memory_helper (const Address dst) {
3274
+ Address MacroAssembler::add_memory_helper (const Address dst, Register tmp ) {
3275
3275
switch (dst.getMode ()) {
3276
3276
case Address::base_plus_offset:
3277
3277
// This is the expected mode, although we allow all the other
3278
3278
// forms below.
3279
- return form_address (t1 , dst.base (), dst.offset ());
3279
+ return form_address (tmp , dst.base (), dst.offset ());
3280
3280
default :
3281
- la (t1 , dst);
3282
- return Address (t1 );
3281
+ la (tmp , dst);
3282
+ return Address (tmp );
3283
3283
}
3284
3284
}
3285
3285
3286
- void MacroAssembler::increment (const Address dst, int64_t value) {
3286
+ void MacroAssembler::increment (const Address dst, int64_t value, Register tmp1, Register tmp2 ) {
3287
3287
assert (((dst.getMode () == Address::base_plus_offset &&
3288
3288
is_offset_in_range (dst.offset (), 12 )) || is_imm_in_range (value, 12 , 0 )),
3289
3289
" invalid value and address mode combination" );
3290
- Address adr = add_memory_helper (dst);
3291
- assert (!adr.uses (t0 ), " invalid dst for address increment" );
3292
- ld (t0 , adr);
3293
- add (t0, t0 , value, t1 );
3294
- sd (t0 , adr);
3290
+ Address adr = add_memory_helper (dst, tmp2 );
3291
+ assert (!adr.uses (tmp1 ), " invalid dst for address increment" );
3292
+ ld (tmp1 , adr);
3293
+ add (tmp1, tmp1 , value, tmp2 );
3294
+ sd (tmp1 , adr);
3295
3295
}
3296
3296
3297
- void MacroAssembler::incrementw (const Address dst, int32_t value) {
3297
+ void MacroAssembler::incrementw (const Address dst, int32_t value, Register tmp1, Register tmp2 ) {
3298
3298
assert (((dst.getMode () == Address::base_plus_offset &&
3299
3299
is_offset_in_range (dst.offset (), 12 )) || is_imm_in_range (value, 12 , 0 )),
3300
3300
" invalid value and address mode combination" );
3301
- Address adr = add_memory_helper (dst);
3302
- assert (!adr.uses (t0 ), " invalid dst for address increment" );
3303
- lwu (t0 , adr);
3304
- addw (t0, t0 , value, t1 );
3305
- sw (t0 , adr);
3301
+ Address adr = add_memory_helper (dst, tmp2 );
3302
+ assert (!adr.uses (tmp1 ), " invalid dst for address increment" );
3303
+ lwu (tmp1 , adr);
3304
+ addw (tmp1, tmp1 , value, tmp2 );
3305
+ sw (tmp1 , adr);
3306
3306
}
3307
3307
3308
- void MacroAssembler::decrement (const Address dst, int64_t value) {
3308
+ void MacroAssembler::decrement (const Address dst, int64_t value, Register tmp1, Register tmp2 ) {
3309
3309
assert (((dst.getMode () == Address::base_plus_offset &&
3310
3310
is_offset_in_range (dst.offset (), 12 )) || is_imm_in_range (value, 12 , 0 )),
3311
3311
" invalid value and address mode combination" );
3312
- Address adr = add_memory_helper (dst);
3313
- assert (!adr.uses (t0 ), " invalid dst for address decrement" );
3314
- ld (t0 , adr);
3315
- sub (t0, t0 , value, t1 );
3316
- sd (t0 , adr);
3312
+ Address adr = add_memory_helper (dst, tmp2 );
3313
+ assert (!adr.uses (tmp1 ), " invalid dst for address decrement" );
3314
+ ld (tmp1 , adr);
3315
+ sub (tmp1, tmp1 , value, tmp2 );
3316
+ sd (tmp1 , adr);
3317
3317
}
3318
3318
3319
- void MacroAssembler::decrementw (const Address dst, int32_t value) {
3319
+ void MacroAssembler::decrementw (const Address dst, int32_t value, Register tmp1, Register tmp2 ) {
3320
3320
assert (((dst.getMode () == Address::base_plus_offset &&
3321
3321
is_offset_in_range (dst.offset (), 12 )) || is_imm_in_range (value, 12 , 0 )),
3322
3322
" invalid value and address mode combination" );
3323
- Address adr = add_memory_helper (dst);
3324
- assert (!adr.uses (t0 ), " invalid dst for address decrement" );
3325
- lwu (t0 , adr);
3326
- subw (t0, t0 , value, t1 );
3327
- sw (t0 , adr);
3323
+ Address adr = add_memory_helper (dst, tmp2 );
3324
+ assert (!adr.uses (tmp1 ), " invalid dst for address decrement" );
3325
+ lwu (tmp1 , adr);
3326
+ subw (tmp1, tmp1 , value, tmp2 );
3327
+ sw (tmp1 , adr);
3328
3328
}
3329
3329
3330
3330
void MacroAssembler::cmpptr (Register src1, Address src2, Label& equal) {
0 commit comments