< prev index next >

src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp

Print this page

 704   if (continuation == nullptr) {
 705     __ dispatch_next(state, step);
 706   } else {
 707     __ jump_to_entry(continuation, Z_R1_scratch);
 708   }
 709 
 710   BLOCK_COMMENT("} deopt_entry");
 711 
 712   return entry;
 713 }
 714 
 715 address TemplateInterpreterGenerator::generate_safept_entry_for (TosState state,
 716                                                                 address runtime_entry) {
 717   address entry = __ pc();
 718   __ push(state);
 719   __ call_VM(noreg, runtime_entry);
 720   __ dispatch_via(vtos, Interpreter::_normal_table.table_for (vtos));
 721   return entry;
 722 }
 723 





 724 //
 725 // Helpers for commoning out cases in the various type of method entries.
 726 //
 727 
 728 // Increment invocation count & check for overflow.
 729 //
 730 // Note: checking for negative value instead of overflow
 731 // so we have a 'sticky' overflow test.
 732 //
 733 // Z_ARG2: method (see generate_fixed_frame())
 734 //
 735 void TemplateInterpreterGenerator::generate_counter_incr(Label* overflow) {
 736   Label done;
 737   Register method = Z_ARG2; // Generate_fixed_frame() copies Z_method into Z_ARG2.
 738   Register m_counters = Z_ARG4;
 739 
 740   BLOCK_COMMENT("counter_incr {");
 741 
 742   // Note: In tiered we increment either counters in method or in MDO depending
 743   // if we are profiling or not.

 704   if (continuation == nullptr) {
 705     __ dispatch_next(state, step);
 706   } else {
 707     __ jump_to_entry(continuation, Z_R1_scratch);
 708   }
 709 
 710   BLOCK_COMMENT("} deopt_entry");
 711 
 712   return entry;
 713 }
 714 
 715 address TemplateInterpreterGenerator::generate_safept_entry_for (TosState state,
 716                                                                 address runtime_entry) {
 717   address entry = __ pc();
 718   __ push(state);
 719   __ call_VM(noreg, runtime_entry);
 720   __ dispatch_via(vtos, Interpreter::_normal_table.table_for (vtos));
 721   return entry;
 722 }
 723 
 724 address TemplateInterpreterGenerator::generate_cont_preempt_rerun_interpreter_adapter() {
 725   return nullptr;
 726 }
 727 
 728 
 729 //
 730 // Helpers for commoning out cases in the various type of method entries.
 731 //
 732 
 733 // Increment invocation count & check for overflow.
 734 //
 735 // Note: checking for negative value instead of overflow
 736 // so we have a 'sticky' overflow test.
 737 //
 738 // Z_ARG2: method (see generate_fixed_frame())
 739 //
 740 void TemplateInterpreterGenerator::generate_counter_incr(Label* overflow) {
 741   Label done;
 742   Register method = Z_ARG2; // Generate_fixed_frame() copies Z_method into Z_ARG2.
 743   Register m_counters = Z_ARG4;
 744 
 745   BLOCK_COMMENT("counter_incr {");
 746 
 747   // Note: In tiered we increment either counters in method or in MDO depending
 748   // if we are profiling or not.
< prev index next >