< prev index next >

src/hotspot/cpu/arm/c1_Runtime1_arm.cpp

Print this page

234 
235 static void restore_live_registers_except_FP_LR(StubAssembler* sasm, bool restore_fpu_registers = HaveVFP) {
236   restore_live_registers(sasm, true, false, false, restore_fpu_registers);
237 }
238 
239 static void restore_live_registers_without_return(StubAssembler* sasm, bool restore_fpu_registers = HaveVFP) {
240   restore_live_registers(sasm, true, true, false, restore_fpu_registers);
241 }
242 
243 void StubAssembler::save_live_registers() {
244   ::save_live_registers(this);
245 }
246 
247 void StubAssembler::restore_live_registers_without_return() {
248   ::restore_live_registers_without_return(this);
249 }
250 
251 void Runtime1::initialize_pd() {
252 }
253 




254 
255 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
256   OopMap* oop_map = save_live_registers(sasm);
257 
258   int call_offset;
259   if (has_argument) {
260     __ ldr(R1, Address(SP, arg1_offset));
261     __ ldr(R2, Address(SP, arg2_offset));
262     call_offset = __ call_RT(noreg, noreg, target, R1, R2);
263   } else {
264     call_offset = __ call_RT(noreg, noreg, target);
265   }
266 
267   OopMapSet* oop_maps = new OopMapSet();
268   oop_maps->add_gc_map(call_offset, oop_map);
269 
270   DEBUG_ONLY(STOP("generate_exception_throw");)  // Should not reach here
271   return oop_maps;
272 }
273 

234 
235 static void restore_live_registers_except_FP_LR(StubAssembler* sasm, bool restore_fpu_registers = HaveVFP) {
236   restore_live_registers(sasm, true, false, false, restore_fpu_registers);
237 }
238 
239 static void restore_live_registers_without_return(StubAssembler* sasm, bool restore_fpu_registers = HaveVFP) {
240   restore_live_registers(sasm, true, true, false, restore_fpu_registers);
241 }
242 
243 void StubAssembler::save_live_registers() {
244   ::save_live_registers(this);
245 }
246 
247 void StubAssembler::restore_live_registers_without_return() {
248   ::restore_live_registers_without_return(this);
249 }
250 
251 void Runtime1::initialize_pd() {
252 }
253 
254 uint Runtime1::runtime_blob_current_thread_offset(frame f) {
255   unimplemented();
256   return 0;
257 }
258 
259 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
260   OopMap* oop_map = save_live_registers(sasm);
261 
262   int call_offset;
263   if (has_argument) {
264     __ ldr(R1, Address(SP, arg1_offset));
265     __ ldr(R2, Address(SP, arg2_offset));
266     call_offset = __ call_RT(noreg, noreg, target, R1, R2);
267   } else {
268     call_offset = __ call_RT(noreg, noreg, target);
269   }
270 
271   OopMapSet* oop_maps = new OopMapSet();
272   oop_maps->add_gc_map(call_offset, oop_map);
273 
274   DEBUG_ONLY(STOP("generate_exception_throw");)  // Should not reach here
275   return oop_maps;
276 }
277 
< prev index next >