< prev index next >

src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp

Print this page
@@ -1186,11 +1186,11 @@
  //   R15_esp       - intptr_t* sender tos
  //
  //   abstract stack (grows up)
  //     [  IJava (caller of JNI callee)  ]  <-- ASP
  //        ...
- address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
+ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized, bool runtime_upcalls) {
  
    address entry = __ pc();
  
    const bool inc_counter = UseCompiler || CountCompiledCalls;
  

@@ -1645,11 +1645,11 @@
    return entry;
  }
  
  // Generic interpreted method entry to (asm) interpreter.
  //
- address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized) {
+ address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized, bool runtime_upcalls) {
    bool inc_counter = UseCompiler || CountCompiledCalls;
    address entry = __ pc();
    // Generate the code to allocate the interpreter stack frame.
    Register Rsize_of_parameters = R4_ARG2, // Written by generate_fixed_frame.
             Rsize_of_locals     = R5_ARG3; // Written by generate_fixed_frame.

@@ -2218,10 +2218,24 @@
    generate_and_dispatch(t);
  }
  
  //-----------------------------------------------------------------------------
  
+ void TemplateInterpreterGenerator::count_bytecode() {
+   int offs = __ load_const_optimized(R11_scratch1, (address) &BytecodeCounter::_counter_value, R12_scratch2, true);
+   __ lwz(R12_scratch2, offs, R11_scratch1);
+   __ addi(R12_scratch2, R12_scratch2, 1);
+   __ stw(R12_scratch2, offs, R11_scratch1);
+ }
+ 
+ void TemplateInterpreterGenerator::histogram_bytecode(Template* t) {
+   int offs = __ load_const_optimized(R11_scratch1, (address) &BytecodeHistogram::_counters[t->bytecode()], R12_scratch2, true);
+   __ lwz(R12_scratch2, offs, R11_scratch1);
+   __ addi(R12_scratch2, R12_scratch2, 1);
+   __ stw(R12_scratch2, offs, R11_scratch1);
+ }
+ 
  // Non-product code
  #ifndef PRODUCT
  address TemplateInterpreterGenerator::generate_trace_code(TosState state) {
    //__ flush_bundle();
    address entry = __ pc();

@@ -2305,24 +2319,10 @@
    __ blr();
    BLOCK_COMMENT("} trace_code");
    return entry;
  }
  
- void TemplateInterpreterGenerator::count_bytecode() {
-   int offs = __ load_const_optimized(R11_scratch1, (address) &BytecodeCounter::_counter_value, R12_scratch2, true);
-   __ lwz(R12_scratch2, offs, R11_scratch1);
-   __ addi(R12_scratch2, R12_scratch2, 1);
-   __ stw(R12_scratch2, offs, R11_scratch1);
- }
- 
- void TemplateInterpreterGenerator::histogram_bytecode(Template* t) {
-   int offs = __ load_const_optimized(R11_scratch1, (address) &BytecodeHistogram::_counters[t->bytecode()], R12_scratch2, true);
-   __ lwz(R12_scratch2, offs, R11_scratch1);
-   __ addi(R12_scratch2, R12_scratch2, 1);
-   __ stw(R12_scratch2, offs, R11_scratch1);
- }
- 
  void TemplateInterpreterGenerator::histogram_bytecode_pair(Template* t) {
    const Register addr = R11_scratch1,
                   tmp  = R12_scratch2;
    // Get index, shift out old bytecode, bring in new bytecode, and store it.
    // _index = (_index >> log2_number_of_codes) |
< prev index next >