1.1 --- a/src/cpu/mips/vm/macroAssembler_mips.cpp Sat Jan 06 16:30:58 2018 +0800 1.2 +++ b/src/cpu/mips/vm/macroAssembler_mips.cpp Thu May 24 19:49:50 2018 +0800 1.3 @@ -818,6 +818,28 @@ 1.4 jr(T9); 1.5 nop(); 1.6 } 1.7 +void MacroAssembler::mov_metadata(Address dst, Metadata* obj) { 1.8 + int oop_index; 1.9 + if (obj) { 1.10 + oop_index = oop_recorder()->find_index(obj); 1.11 + } else { 1.12 + oop_index = oop_recorder()->allocate_metadata_index(obj); 1.13 + } 1.14 + relocate(metadata_Relocation::spec(oop_index)); 1.15 + patchable_set48(AT, (long)obj); 1.16 + sd(AT, dst); 1.17 +} 1.18 + 1.19 +void MacroAssembler::mov_metadata(Register dst, Metadata* obj) { 1.20 + int oop_index; 1.21 + if (obj) { 1.22 + oop_index = oop_recorder()->find_index(obj); 1.23 + } else { 1.24 + oop_index = oop_recorder()->allocate_metadata_index(obj); 1.25 + } 1.26 + relocate(metadata_Relocation::spec(oop_index)); 1.27 + patchable_set48(dst, (long)obj); 1.28 +} 1.29 1.30 void MacroAssembler::call(address entry) { 1.31 // c/c++ code assume T9 is entry point, so we just always move entry to t9 1.32 @@ -870,7 +892,7 @@ 1.33 assert(entry != NULL, "call most probably wrong"); 1.34 InstructionMark im(this); 1.35 relocate(rh); 1.36 - patchable_call(entry); 1.37 + patchable_call(entry); 1.38 } 1.39 1.40 void MacroAssembler::c2bool(Register r) { 1.41 @@ -1238,7 +1260,6 @@ 1.42 move(A0, java_thread); 1.43 call(entry_point, relocInfo::runtime_call_type); 1.44 delayed()->nop(); 1.45 - //MacroAssembler::call_VM_leaf_base(entry_point, number_of_arguments); 1.46 1.47 // restore the thread (cannot use the pushed argument since arguments 1.48 // may be overwritten by C code generated by an optimizing compiler);