< prev index next >

src/cpu/ppc/vm/c1_Runtime1_ppc.cpp

Print this page
rev 13203 : 8183571: PPC64 build broken after 8178499
Reviewed-by: stefank, simonis


 271 
 272   __ should_not_reach_here();
 273   return oop_maps;
 274 }
 275 
 276 static OopMapSet* generate_exception_throw_with_stack_parms(StubAssembler* sasm, address target,
 277                                                             int stack_parms) {
 278   // Make a frame and preserve the caller's caller-save registers.
 279   const int parm_size_in_bytes = align_up(stack_parms << LogBytesPerWord, frame::alignment_in_bytes);
 280   const int padding = parm_size_in_bytes - (stack_parms << LogBytesPerWord);
 281   OopMap* oop_map = save_live_registers(sasm, true, noreg, parm_size_in_bytes);
 282 
 283   int call_offset = 0;
 284   switch (stack_parms) {
 285     case 3:
 286     __ ld(R6_ARG4, frame_size_in_bytes + padding + 16, R1_SP);
 287     case 2:
 288     __ ld(R5_ARG3, frame_size_in_bytes + padding + 8, R1_SP);
 289     case 1:
 290     __ ld(R4_ARG2, frame_size_in_bytes + padding + 0, R1_SP);

 291     call_offset = __ call_RT(noreg, noreg, target);
 292     break;
 293     default: Unimplemented(); break;
 294   }
 295   OopMapSet* oop_maps = new OopMapSet();
 296   oop_maps->add_gc_map(call_offset, oop_map);
 297 
 298   __ should_not_reach_here();
 299   return oop_maps;
 300 }
 301 
 302 
 303 OopMapSet* Runtime1::generate_stub_call(StubAssembler* sasm, Register result, address target,
 304                                         Register arg1, Register arg2, Register arg3) {
 305   // Make a frame and preserve the caller's caller-save registers.
 306   OopMap* oop_map = save_live_registers(sasm);
 307 
 308   int call_offset;
 309   if (arg1 == noreg) {
 310     call_offset = __ call_RT(result, noreg, target);


 321   restore_live_registers(sasm, result, noreg);
 322   __ blr();
 323   return oop_maps;
 324 }
 325 
 326 static OopMapSet* stub_call_with_stack_parms(StubAssembler* sasm, Register result, address target,
 327                                              int stack_parms, bool do_return = true) {
 328   // Make a frame and preserve the caller's caller-save registers.
 329   const int parm_size_in_bytes = align_up(stack_parms << LogBytesPerWord, frame::alignment_in_bytes);
 330   const int padding = parm_size_in_bytes - (stack_parms << LogBytesPerWord);
 331   OopMap* oop_map = save_live_registers(sasm, true, noreg, parm_size_in_bytes);
 332 
 333   int call_offset = 0;
 334   switch (stack_parms) {
 335     case 3:
 336     __ ld(R6_ARG4, frame_size_in_bytes + padding + 16, R1_SP);
 337     case 2:
 338     __ ld(R5_ARG3, frame_size_in_bytes + padding + 8, R1_SP);
 339     case 1:
 340     __ ld(R4_ARG2, frame_size_in_bytes + padding + 0, R1_SP);

 341     call_offset = __ call_RT(result, noreg, target);
 342     break;
 343     default: Unimplemented(); break;
 344   }
 345   OopMapSet* oop_maps = new OopMapSet();
 346   oop_maps->add_gc_map(call_offset, oop_map);
 347 
 348   restore_live_registers(sasm, result, noreg);
 349   if (do_return) __ blr();
 350   return oop_maps;
 351 }
 352 
 353 
 354 OopMapSet* Runtime1::generate_patching(StubAssembler* sasm, address target) {
 355   // Make a frame and preserve the caller's caller-save registers.
 356   OopMap* oop_map = save_live_registers(sasm);
 357 
 358   // Call the runtime patching routine, returns non-zero if nmethod got deopted.
 359   int call_offset = __ call_RT(noreg, noreg, target);
 360   OopMapSet* oop_maps = new OopMapSet();




 271 
 272   __ should_not_reach_here();
 273   return oop_maps;
 274 }
 275 
 276 static OopMapSet* generate_exception_throw_with_stack_parms(StubAssembler* sasm, address target,
 277                                                             int stack_parms) {
 278   // Make a frame and preserve the caller's caller-save registers.
 279   const int parm_size_in_bytes = align_up(stack_parms << LogBytesPerWord, frame::alignment_in_bytes);
 280   const int padding = parm_size_in_bytes - (stack_parms << LogBytesPerWord);
 281   OopMap* oop_map = save_live_registers(sasm, true, noreg, parm_size_in_bytes);
 282 
 283   int call_offset = 0;
 284   switch (stack_parms) {
 285     case 3:
 286     __ ld(R6_ARG4, frame_size_in_bytes + padding + 16, R1_SP);
 287     case 2:
 288     __ ld(R5_ARG3, frame_size_in_bytes + padding + 8, R1_SP);
 289     case 1:
 290     __ ld(R4_ARG2, frame_size_in_bytes + padding + 0, R1_SP);
 291     case 0:
 292     call_offset = __ call_RT(noreg, noreg, target);
 293     break;
 294     default: Unimplemented(); break;
 295   }
 296   OopMapSet* oop_maps = new OopMapSet();
 297   oop_maps->add_gc_map(call_offset, oop_map);
 298 
 299   __ should_not_reach_here();
 300   return oop_maps;
 301 }
 302 
 303 
 304 OopMapSet* Runtime1::generate_stub_call(StubAssembler* sasm, Register result, address target,
 305                                         Register arg1, Register arg2, Register arg3) {
 306   // Make a frame and preserve the caller's caller-save registers.
 307   OopMap* oop_map = save_live_registers(sasm);
 308 
 309   int call_offset;
 310   if (arg1 == noreg) {
 311     call_offset = __ call_RT(result, noreg, target);


 322   restore_live_registers(sasm, result, noreg);
 323   __ blr();
 324   return oop_maps;
 325 }
 326 
 327 static OopMapSet* stub_call_with_stack_parms(StubAssembler* sasm, Register result, address target,
 328                                              int stack_parms, bool do_return = true) {
 329   // Make a frame and preserve the caller's caller-save registers.
 330   const int parm_size_in_bytes = align_up(stack_parms << LogBytesPerWord, frame::alignment_in_bytes);
 331   const int padding = parm_size_in_bytes - (stack_parms << LogBytesPerWord);
 332   OopMap* oop_map = save_live_registers(sasm, true, noreg, parm_size_in_bytes);
 333 
 334   int call_offset = 0;
 335   switch (stack_parms) {
 336     case 3:
 337     __ ld(R6_ARG4, frame_size_in_bytes + padding + 16, R1_SP);
 338     case 2:
 339     __ ld(R5_ARG3, frame_size_in_bytes + padding + 8, R1_SP);
 340     case 1:
 341     __ ld(R4_ARG2, frame_size_in_bytes + padding + 0, R1_SP);
 342     case 0:
 343     call_offset = __ call_RT(result, noreg, target);
 344     break;
 345     default: Unimplemented(); break;
 346   }
 347   OopMapSet* oop_maps = new OopMapSet();
 348   oop_maps->add_gc_map(call_offset, oop_map);
 349 
 350   restore_live_registers(sasm, result, noreg);
 351   if (do_return) __ blr();
 352   return oop_maps;
 353 }
 354 
 355 
 356 OopMapSet* Runtime1::generate_patching(StubAssembler* sasm, address target) {
 357   // Make a frame and preserve the caller's caller-save registers.
 358   OopMap* oop_map = save_live_registers(sasm);
 359 
 360   // Call the runtime patching routine, returns non-zero if nmethod got deopted.
 361   int call_offset = __ call_RT(noreg, noreg, target);
 362   OopMapSet* oop_maps = new OopMapSet();


< prev index next >