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.
|