465 __ lfd(as_FloatRegister(reg_num), offset, R1_SP); 466 break; 467 } 468 case RegisterSaver::special_reg: { 469 // Special registers don't hold a result. 470 break; 471 } 472 default: 473 ShouldNotReachHere(); 474 } 475 offset += reg_size; 476 } 477 } 478 479 // Is vector's size (in bytes) bigger than a size saved by default? 480 bool SharedRuntime::is_wide_vector(int size) { 481 // Note, MaxVectorSize == 8 on PPC64. 482 assert(size <= 8, "%d bytes vectors are not supported", size); 483 return size > 8; 484 } 485 #ifdef COMPILER2 486 static int reg2slot(VMReg r) { 487 return r->reg2stack() + SharedRuntime::out_preserve_stack_slots(); 488 } 489 490 static int reg2offset(VMReg r) { 491 return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size; 492 } 493 #endif 494 495 // --------------------------------------------------------------------------- 496 // Read the array of BasicTypes from a signature, and compute where the 497 // arguments should go. Values in the VMRegPair regs array refer to 4-byte 498 // quantities. Values less than VMRegImpl::stack0 are registers, those above 499 // refer to 4-byte stack slots. All stack slots are based off of the stack pointer 500 // as framesizes are fixed. 501 // VMRegImpl::stack0 refers to the first slot 0(sp). 502 // and VMRegImpl::stack0+1 refers to the memory word 4-bytes higher. Register 503 // up to RegisterImpl::number_of_registers) are the 64-bit 504 // integer registers. | 465 __ lfd(as_FloatRegister(reg_num), offset, R1_SP); 466 break; 467 } 468 case RegisterSaver::special_reg: { 469 // Special registers don't hold a result. 470 break; 471 } 472 default: 473 ShouldNotReachHere(); 474 } 475 offset += reg_size; 476 } 477 } 478 479 // Is vector's size (in bytes) bigger than a size saved by default? 480 bool SharedRuntime::is_wide_vector(int size) { 481 // Note, MaxVectorSize == 8 on PPC64. 482 assert(size <= 8, "%d bytes vectors are not supported", size); 483 return size > 8; 484 } 485 486 size_t SharedRuntime::trampoline_size() { 487 return Assembler::load_const_size + 8; 488 } 489 490 void SharedRuntime::generate_trampoline(MacroAssembler *masm, address destination) { 491 Register Rtemp = R12; 492 __ load_const(Rtemp, destination); 493 __ mtctr(Rtemp); 494 __ bctr(); 495 } 496 497 #ifdef COMPILER2 498 static int reg2slot(VMReg r) { 499 return r->reg2stack() + SharedRuntime::out_preserve_stack_slots(); 500 } 501 502 static int reg2offset(VMReg r) { 503 return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size; 504 } 505 #endif 506 507 // --------------------------------------------------------------------------- 508 // Read the array of BasicTypes from a signature, and compute where the 509 // arguments should go. Values in the VMRegPair regs array refer to 4-byte 510 // quantities. Values less than VMRegImpl::stack0 are registers, those above 511 // refer to 4-byte stack slots. All stack slots are based off of the stack pointer 512 // as framesizes are fixed. 513 // VMRegImpl::stack0 refers to the first slot 0(sp). 514 // and VMRegImpl::stack0+1 refers to the memory word 4-bytes higher. Register 515 // up to RegisterImpl::number_of_registers) are the 64-bit 516 // integer registers. |