Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/opto/runtime.cpp
          +++ new/src/share/vm/opto/runtime.cpp
↓ open down ↓ 1122 lines elided ↑ open up ↑
1123 1123  
1124 1124  void OptoRuntime::deoptimize_caller_frame(JavaThread *thread, bool doit) {
1125 1125    // Deoptimize frame
1126 1126    if (doit) {
1127 1127      // Called from within the owner thread, so no need for safepoint
1128 1128      RegisterMap reg_map(thread);
1129 1129      frame stub_frame = thread->last_frame();
1130 1130      assert(stub_frame.is_runtime_frame() || exception_blob()->contains(stub_frame.pc()), "sanity check");
1131 1131      frame caller_frame = stub_frame.sender(&reg_map);
1132 1132  
1133      -    // bypass VM_DeoptimizeFrame and deoptimize the frame directly
     1133 +    // Deoptimize the caller frame.
1134 1134      Deoptimization::deoptimize_frame(thread, caller_frame.id());
1135 1135    }
1136 1136  }
1137 1137  
1138 1138  
1139 1139  const TypeFunc *OptoRuntime::register_finalizer_Type() {
1140 1140    // create input type (domain)
1141 1141    const Type **fields = TypeTuple::fields(1);
1142 1142    fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL;  // oop;          Receiver
1143 1143    // // The JavaThread* is passed to each routine as the last argument
↓ open down ↓ 225 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX