< prev index next >

src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp

Print this page

2729 }
2730 
2731 // This function returns the adjust size (in number of words) to a c2i adapter
2732 // activation for use during deoptimization.
2733 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2734   return align_up((callee_locals - callee_parameters) * Interpreter::stackElementWords, frame::frame_alignment_in_words);
2735 }
2736 
2737 uint SharedRuntime::in_preserve_stack_slots() {
2738   return frame::jit_in_preserve_size / VMRegImpl::stack_slot_size;
2739 }
2740 
2741 uint SharedRuntime::out_preserve_stack_slots() {
2742 #if defined(COMPILER1) || defined(COMPILER2)
2743   return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size;
2744 #else
2745   return 0;
2746 #endif
2747 }
2748 





2749 #if defined(COMPILER1) || defined(COMPILER2)
2750 // Frame generation for deopt and uncommon trap blobs.
2751 static void push_skeleton_frame(MacroAssembler* masm, bool deopt,
2752                                 /* Read */
2753                                 Register unroll_block_reg,
2754                                 /* Update */
2755                                 Register frame_sizes_reg,
2756                                 Register number_of_frames_reg,
2757                                 Register pcs_reg,
2758                                 /* Invalidate */
2759                                 Register frame_size_reg,
2760                                 Register pc_reg) {
2761 
2762   __ ld(pc_reg, 0, pcs_reg);
2763   __ ld(frame_size_reg, 0, frame_sizes_reg);
2764   __ std(pc_reg, _abi0(lr), R1_SP);
2765   __ push_frame(frame_size_reg, R0/*tmp*/);
2766   __ std(R1_SP, _ijava_state_neg(sender_sp), R1_SP);
2767   __ addi(number_of_frames_reg, number_of_frames_reg, -1);
2768   __ addi(frame_sizes_reg, frame_sizes_reg, wordSize);

2729 }
2730 
2731 // This function returns the adjust size (in number of words) to a c2i adapter
2732 // activation for use during deoptimization.
2733 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2734   return align_up((callee_locals - callee_parameters) * Interpreter::stackElementWords, frame::frame_alignment_in_words);
2735 }
2736 
2737 uint SharedRuntime::in_preserve_stack_slots() {
2738   return frame::jit_in_preserve_size / VMRegImpl::stack_slot_size;
2739 }
2740 
2741 uint SharedRuntime::out_preserve_stack_slots() {
2742 #if defined(COMPILER1) || defined(COMPILER2)
2743   return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size;
2744 #else
2745   return 0;
2746 #endif
2747 }
2748 
2749 VMReg SharedRuntime::thread_register() {
2750   Unimplemented();
2751   return nullptr;
2752 }
2753 
2754 #if defined(COMPILER1) || defined(COMPILER2)
2755 // Frame generation for deopt and uncommon trap blobs.
2756 static void push_skeleton_frame(MacroAssembler* masm, bool deopt,
2757                                 /* Read */
2758                                 Register unroll_block_reg,
2759                                 /* Update */
2760                                 Register frame_sizes_reg,
2761                                 Register number_of_frames_reg,
2762                                 Register pcs_reg,
2763                                 /* Invalidate */
2764                                 Register frame_size_reg,
2765                                 Register pc_reg) {
2766 
2767   __ ld(pc_reg, 0, pcs_reg);
2768   __ ld(frame_size_reg, 0, frame_sizes_reg);
2769   __ std(pc_reg, _abi0(lr), R1_SP);
2770   __ push_frame(frame_size_reg, R0/*tmp*/);
2771   __ std(R1_SP, _ijava_state_neg(sender_sp), R1_SP);
2772   __ addi(number_of_frames_reg, number_of_frames_reg, -1);
2773   __ addi(frame_sizes_reg, frame_sizes_reg, wordSize);
< prev index next >