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
|