< prev index next >

src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp

Print this page

2675 }
2676 
2677 // This function returns the adjust size (in number of words) to a c2i adapter
2678 // activation for use during deoptimization.
2679 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2680   return align_up((callee_locals - callee_parameters) * Interpreter::stackElementWords, frame::frame_alignment_in_words);
2681 }
2682 
2683 uint SharedRuntime::in_preserve_stack_slots() {
2684   return frame::jit_in_preserve_size / VMRegImpl::stack_slot_size;
2685 }
2686 
2687 uint SharedRuntime::out_preserve_stack_slots() {
2688 #if defined(COMPILER1) || defined(COMPILER2)
2689   return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size;
2690 #else
2691   return 0;
2692 #endif
2693 }
2694 





2695 #if defined(COMPILER1) || defined(COMPILER2)
2696 // Frame generation for deopt and uncommon trap blobs.
2697 static void push_skeleton_frame(MacroAssembler* masm, bool deopt,
2698                                 /* Read */
2699                                 Register unroll_block_reg,
2700                                 /* Update */
2701                                 Register frame_sizes_reg,
2702                                 Register number_of_frames_reg,
2703                                 Register pcs_reg,
2704                                 /* Invalidate */
2705                                 Register frame_size_reg,
2706                                 Register pc_reg) {
2707 
2708   __ ld(pc_reg, 0, pcs_reg);
2709   __ ld(frame_size_reg, 0, frame_sizes_reg);
2710   __ std(pc_reg, _abi0(lr), R1_SP);
2711   __ push_frame(frame_size_reg, R0/*tmp*/);
2712   __ std(R1_SP, _ijava_state_neg(sender_sp), R1_SP);
2713   __ addi(number_of_frames_reg, number_of_frames_reg, -1);
2714   __ addi(frame_sizes_reg, frame_sizes_reg, wordSize);

2675 }
2676 
2677 // This function returns the adjust size (in number of words) to a c2i adapter
2678 // activation for use during deoptimization.
2679 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2680   return align_up((callee_locals - callee_parameters) * Interpreter::stackElementWords, frame::frame_alignment_in_words);
2681 }
2682 
2683 uint SharedRuntime::in_preserve_stack_slots() {
2684   return frame::jit_in_preserve_size / VMRegImpl::stack_slot_size;
2685 }
2686 
2687 uint SharedRuntime::out_preserve_stack_slots() {
2688 #if defined(COMPILER1) || defined(COMPILER2)
2689   return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size;
2690 #else
2691   return 0;
2692 #endif
2693 }
2694 
2695 VMReg SharedRuntime::thread_register() {
2696   Unimplemented();
2697   return nullptr;
2698 }
2699 
2700 #if defined(COMPILER1) || defined(COMPILER2)
2701 // Frame generation for deopt and uncommon trap blobs.
2702 static void push_skeleton_frame(MacroAssembler* masm, bool deopt,
2703                                 /* Read */
2704                                 Register unroll_block_reg,
2705                                 /* Update */
2706                                 Register frame_sizes_reg,
2707                                 Register number_of_frames_reg,
2708                                 Register pcs_reg,
2709                                 /* Invalidate */
2710                                 Register frame_size_reg,
2711                                 Register pc_reg) {
2712 
2713   __ ld(pc_reg, 0, pcs_reg);
2714   __ ld(frame_size_reg, 0, frame_sizes_reg);
2715   __ std(pc_reg, _abi0(lr), R1_SP);
2716   __ push_frame(frame_size_reg, R0/*tmp*/);
2717   __ std(R1_SP, _ijava_state_neg(sender_sp), R1_SP);
2718   __ addi(number_of_frames_reg, number_of_frames_reg, -1);
2719   __ addi(frame_sizes_reg, frame_sizes_reg, wordSize);
< prev index next >