< prev index next >

src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp

Print this page




 173 
 174   assert(frame::interpreter_frame_monitor_size() == BasicObjectLock::size(), "adjust code below");
 175   int monitor_offset = (method()->max_locals() + 2 * (number_of_locks - 1)) * BytesPerWord;
 176   for (int i = 0; i < number_of_locks; i++) {
 177     int slot_offset = monitor_offset - (i * 2 * BytesPerWord);
 178     __ ldr(R1, Address(OSR_buf, slot_offset + 0*BytesPerWord));
 179     __ ldr(R2, Address(OSR_buf, slot_offset + 1*BytesPerWord));
 180     __ str(R1, frame_map()->address_for_monitor_lock(i));
 181     __ str(R2, frame_map()->address_for_monitor_object(i));
 182   }
 183 }
 184 
 185 
 186 int LIR_Assembler::check_icache() {
 187   Register receiver = LIR_Assembler::receiverOpr()->as_register();
 188   int offset = __ offset();
 189   __ inline_cache_check(receiver, Ricklass);
 190   return offset;
 191 }
 192 



 193 
 194 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
 195   jobject o = (jobject)Universe::non_oop_word();
 196   int index = __ oop_recorder()->allocate_oop_index(o);
 197 
 198   PatchingStub* patch = new PatchingStub(_masm, patching_id(info), index);
 199 
 200   __ patchable_mov_oop(reg, o, index);
 201   patching_epilog(patch, lir_patch_normal, reg, info);
 202 }
 203 
 204 
 205 void LIR_Assembler::klass2reg_with_patching(Register reg, CodeEmitInfo* info) {
 206   Metadata* o = (Metadata*)Universe::non_oop_word();
 207   int index = __ oop_recorder()->allocate_metadata_index(o);
 208   PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id, index);
 209 
 210   __ patchable_mov_metadata(reg, o, index);
 211   patching_epilog(patch, lir_patch_normal, reg, info);
 212 }




 173 
 174   assert(frame::interpreter_frame_monitor_size() == BasicObjectLock::size(), "adjust code below");
 175   int monitor_offset = (method()->max_locals() + 2 * (number_of_locks - 1)) * BytesPerWord;
 176   for (int i = 0; i < number_of_locks; i++) {
 177     int slot_offset = monitor_offset - (i * 2 * BytesPerWord);
 178     __ ldr(R1, Address(OSR_buf, slot_offset + 0*BytesPerWord));
 179     __ ldr(R2, Address(OSR_buf, slot_offset + 1*BytesPerWord));
 180     __ str(R1, frame_map()->address_for_monitor_lock(i));
 181     __ str(R2, frame_map()->address_for_monitor_object(i));
 182   }
 183 }
 184 
 185 
 186 int LIR_Assembler::check_icache() {
 187   Register receiver = LIR_Assembler::receiverOpr()->as_register();
 188   int offset = __ offset();
 189   __ inline_cache_check(receiver, Ricklass);
 190   return offset;
 191 }
 192 
 193 void LIR_Assembler::clinit_barrier(ciMethod* method) {
 194   ShouldNotReachHere(); // not implemented
 195 }
 196 
 197 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
 198   jobject o = (jobject)Universe::non_oop_word();
 199   int index = __ oop_recorder()->allocate_oop_index(o);
 200 
 201   PatchingStub* patch = new PatchingStub(_masm, patching_id(info), index);
 202 
 203   __ patchable_mov_oop(reg, o, index);
 204   patching_epilog(patch, lir_patch_normal, reg, info);
 205 }
 206 
 207 
 208 void LIR_Assembler::klass2reg_with_patching(Register reg, CodeEmitInfo* info) {
 209   Metadata* o = (Metadata*)Universe::non_oop_word();
 210   int index = __ oop_recorder()->allocate_metadata_index(o);
 211   PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id, index);
 212 
 213   __ patchable_mov_metadata(reg, o, index);
 214   patching_epilog(patch, lir_patch_normal, reg, info);
 215 }


< prev index next >