< prev index next > src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp
Print this page
}
// Interpreter stub for calling a native method. (asm interpreter).
// This sets up a somewhat different looking stack for calling the
// native method than the typical interpreter frame setup.
! address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
// Determine code generation flags.
bool inc_counter = UseCompiler || CountCompiledCalls;
// Interpreter entry for ordinary Java methods.
//
}
// Interpreter stub for calling a native method. (asm interpreter).
// This sets up a somewhat different looking stack for calling the
// native method than the typical interpreter frame setup.
! address TemplateInterpreterGenerator::generate_native_entry(bool synchronized, bool runtime_upcalls) {
// Determine code generation flags.
bool inc_counter = UseCompiler || CountCompiledCalls;
// Interpreter entry for ordinary Java methods.
//
}
//
// Generic interpreted method entry to template interpreter.
//
! address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized) {
address entry_point = __ pc();
bool inc_counter = UseCompiler || CountCompiledCalls;
// Interpreter entry for ordinary Java methods.
}
//
// Generic interpreted method entry to template interpreter.
//
! address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized, bool runtime_upcalls) {
address entry_point = __ pc();
bool inc_counter = UseCompiler || CountCompiledCalls;
// Interpreter entry for ordinary Java methods.
generate_and_dispatch(t);
}
//-----------------------------------------------------------------------------
+ // Make feasible for old CPUs.
+ void TemplateInterpreterGenerator::count_bytecode() {
+ __ load_absolute_address(Z_R1_scratch, (address) &BytecodeCounter::_counter_value);
+ __ add2mem_32(Address(Z_R1_scratch), 1, Z_R0_scratch);
+ }
+
+ void TemplateInterpreterGenerator::histogram_bytecode(Template * t) {
+ __ load_absolute_address(Z_R1_scratch, (address)&BytecodeHistogram::_counters[ t->bytecode() ]);
+ __ add2mem_32(Address(Z_R1_scratch), 1, Z_tmp_1);
+ }
+
#ifndef PRODUCT
address TemplateInterpreterGenerator::generate_trace_code(TosState state) {
address entry = __ pc();
NearLabel counter_below_trace_threshold;
__ z_br(Z_R14); // return
return entry;
}
- // Make feasible for old CPUs.
- void TemplateInterpreterGenerator::count_bytecode() {
- __ load_absolute_address(Z_R1_scratch, (address) &BytecodeCounter::_counter_value);
- __ add2mem_32(Address(Z_R1_scratch), 1, Z_R0_scratch);
- }
-
- void TemplateInterpreterGenerator::histogram_bytecode(Template * t) {
- __ load_absolute_address(Z_R1_scratch, (address)&BytecodeHistogram::_counters[ t->bytecode() ]);
- __ add2mem_32(Address(Z_R1_scratch), 1, Z_tmp_1);
- }
-
void TemplateInterpreterGenerator::histogram_bytecode_pair(Template * t) {
Address index_addr(Z_tmp_1, (intptr_t) 0);
Register index = Z_tmp_2;
// Load previous index.
< prev index next >