285 assert(FrameMap::nof_fpu_regs == 32, "double registers not handled here");
286 for (i = 0; i < FrameMap::nof_fpu_regs; i++) {
287 fpu_reg_save_offsets[i] = sp_offset;
288 sp_offset++;
289 }
290 reg_save_size_in_words = sp_offset - frame::memory_parameter_word_sp_offset;
291 // this should match assembler::total_frame_size_in_bytes, which
292 // isn't callable from this context. It's checked by an assert when
293 // it's used though.
294 frame_size_in_bytes = align_up(sp_offset * wordSize, 8);
295 }
296
297
298 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
299 // make a frame and preserve the caller's caller-save registers
300 OopMap* oop_map = save_live_registers(sasm);
301 int call_offset;
302 if (!has_argument) {
303 call_offset = __ call_RT(noreg, noreg, target);
304 } else {
305 call_offset = __ call_RT(noreg, noreg, target, G4);
306 }
307 OopMapSet* oop_maps = new OopMapSet();
308 oop_maps->add_gc_map(call_offset, oop_map);
309
310 __ should_not_reach_here();
311 return oop_maps;
312 }
313
314
315 OopMapSet* Runtime1::generate_stub_call(StubAssembler* sasm, Register result, address target,
316 Register arg1, Register arg2, Register arg3) {
317 // make a frame and preserve the caller's caller-save registers
318 OopMap* oop_map = save_live_registers(sasm);
319
320 int call_offset;
321 if (arg1 == noreg) {
322 call_offset = __ call_RT(result, noreg, target);
323 } else if (arg2 == noreg) {
324 call_offset = __ call_RT(result, noreg, target, arg1);
325 } else if (arg3 == noreg) {
|
285 assert(FrameMap::nof_fpu_regs == 32, "double registers not handled here");
286 for (i = 0; i < FrameMap::nof_fpu_regs; i++) {
287 fpu_reg_save_offsets[i] = sp_offset;
288 sp_offset++;
289 }
290 reg_save_size_in_words = sp_offset - frame::memory_parameter_word_sp_offset;
291 // this should match assembler::total_frame_size_in_bytes, which
292 // isn't callable from this context. It's checked by an assert when
293 // it's used though.
294 frame_size_in_bytes = align_up(sp_offset * wordSize, 8);
295 }
296
297
298 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
299 // make a frame and preserve the caller's caller-save registers
300 OopMap* oop_map = save_live_registers(sasm);
301 int call_offset;
302 if (!has_argument) {
303 call_offset = __ call_RT(noreg, noreg, target);
304 } else {
305 call_offset = __ call_RT(noreg, noreg, target, G4, G5);
306 }
307 OopMapSet* oop_maps = new OopMapSet();
308 oop_maps->add_gc_map(call_offset, oop_map);
309
310 __ should_not_reach_here();
311 return oop_maps;
312 }
313
314
315 OopMapSet* Runtime1::generate_stub_call(StubAssembler* sasm, Register result, address target,
316 Register arg1, Register arg2, Register arg3) {
317 // make a frame and preserve the caller's caller-save registers
318 OopMap* oop_map = save_live_registers(sasm);
319
320 int call_offset;
321 if (arg1 == noreg) {
322 call_offset = __ call_RT(result, noreg, target);
323 } else if (arg2 == noreg) {
324 call_offset = __ call_RT(result, noreg, target, arg1);
325 } else if (arg3 == noreg) {
|