< prev index next >

src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp

Print this page

2720 }
2721 
2722 // This function returns the adjust size (in number of words) to a c2i adapter
2723 // activation for use during deoptimization.
2724 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2725   return align_up((callee_locals - callee_parameters) * Interpreter::stackElementWords, frame::frame_alignment_in_words);
2726 }
2727 
2728 uint SharedRuntime::in_preserve_stack_slots() {
2729   return frame::jit_in_preserve_size / VMRegImpl::stack_slot_size;
2730 }
2731 
2732 uint SharedRuntime::out_preserve_stack_slots() {
2733 #if defined(COMPILER1) || defined(COMPILER2)
2734   return frame::jit_out_preserve_size / VMRegImpl::stack_slot_size;
2735 #else
2736   return 0;
2737 #endif
2738 }
2739 





2740 #if defined(COMPILER1) || defined(COMPILER2)
2741 // Frame generation for deopt and uncommon trap blobs.
2742 static void push_skeleton_frame(MacroAssembler* masm, bool deopt,
2743                                 /* Read */
2744                                 Register unroll_block_reg,
2745                                 /* Update */
2746                                 Register frame_sizes_reg,
2747                                 Register number_of_frames_reg,
2748                                 Register pcs_reg,
2749                                 /* Invalidate */
2750                                 Register frame_size_reg,
2751                                 Register pc_reg) {
2752 
2753   __ ld(pc_reg, 0, pcs_reg);
2754   __ ld(frame_size_reg, 0, frame_sizes_reg);
2755   __ std(pc_reg, _abi0(lr), R1_SP);
2756   __ push_frame(frame_size_reg, R0/*tmp*/);
2757   __ std(R1_SP, _ijava_state_neg(sender_sp), R1_SP);
2758   __ addi(number_of_frames_reg, number_of_frames_reg, -1);
2759   __ addi(frame_sizes_reg, frame_sizes_reg, wordSize);

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