< prev index next > src/hotspot/cpu/arm/templateInterpreterGenerator_arm.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;
// Incoming registers:
//
// 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;
// Incoming registers:
//
}
//
// Generic interpreted method entry to (asm) interpreter
//
! address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized) {
// determine code generation flags
bool inc_counter = UseCompiler || CountCompiledCalls;
// Rmethod: Method*
// Rthread: thread
}
//
// Generic interpreted method entry to (asm) interpreter
//
! address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized, bool runtime_upcalls) {
// determine code generation flags
bool inc_counter = UseCompiler || CountCompiledCalls;
// Rmethod: Method*
// Rthread: thread
generate_and_dispatch(t);
}
//------------------------------------------------------------------------------------------------------------------------
+ void TemplateInterpreterGenerator::count_bytecode() {
+ __ inc_global_counter((address) &BytecodeCounter::_counter_value, 0, Rtemp, R2_tmp, true);
+ }
+
+
+ void TemplateInterpreterGenerator::histogram_bytecode(Template* t) {
+ __ inc_global_counter((address)&BytecodeHistogram::_counters[0], sizeof(BytecodeHistogram::_counters[0]) * t->bytecode(), Rtemp, R2_tmp, true);
+ }
+
// Non-product code
#ifndef PRODUCT
address TemplateInterpreterGenerator::generate_trace_code(TosState state) {
address entry = __ pc();
__ ret();
return entry;
}
-
- void TemplateInterpreterGenerator::count_bytecode() {
- __ inc_global_counter((address) &BytecodeCounter::_counter_value, 0, Rtemp, R2_tmp, true);
- }
-
-
- void TemplateInterpreterGenerator::histogram_bytecode(Template* t) {
- __ inc_global_counter((address)&BytecodeHistogram::_counters[0], sizeof(BytecodeHistogram::_counters[0]) * t->bytecode(), Rtemp, R2_tmp, true);
- }
-
-
void TemplateInterpreterGenerator::histogram_bytecode_pair(Template* t) {
const Register Rindex_addr = R2_tmp;
Label Lcontinue;
InlinedAddress Lcounters((address)BytecodePairHistogram::_counters);
InlinedAddress Lindex((address)&BytecodePairHistogram::_index);
< prev index next >