< prev index next >

src/hotspot/cpu/arm/c1_Runtime1_arm.cpp

Print this page

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




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

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