comparison src/share/vm/runtime/thread.cpp @ 13188:6b2d8d20ecbd

deoptimization: add helper to minimize hsx diff #resolve GRAAL-531
author Bernhard Urban <bernhard.urban@jku.at>
date Thu, 28 Nov 2013 14:12:31 +0100
parents 5465ba051280
children 5a9afbf72714
comparison
equal deleted inserted replaced
13187:b199147f187e 13188:6b2d8d20ecbd
2263 if (f.is_runtime_frame() || f.is_safepoint_blob_frame()) { 2263 if (f.is_runtime_frame() || f.is_safepoint_blob_frame()) {
2264 // BiasedLocking needs an updated RegisterMap for the revoke monitors pass 2264 // BiasedLocking needs an updated RegisterMap for the revoke monitors pass
2265 RegisterMap reg_map(this, UseBiasedLocking); 2265 RegisterMap reg_map(this, UseBiasedLocking);
2266 frame compiled_frame = f.sender(&reg_map); 2266 frame compiled_frame = f.sender(&reg_map);
2267 if (!StressCompiledExceptionHandlers && compiled_frame.can_be_deoptimized()) { 2267 if (!StressCompiledExceptionHandlers && compiled_frame.can_be_deoptimized()) {
2268 Deoptimization::deoptimize(this, compiled_frame, &reg_map, Deoptimization::Reason_constraint); 2268 Deoptimization::deoptimize(this, compiled_frame, &reg_map);
2269 } 2269 }
2270 } 2270 }
2271 } 2271 }
2272 2272
2273 // Set async. pending exception in thread. 2273 // Set async. pending exception in thread.
2696 deopt = true; // One-time only print before deopt 2696 deopt = true; // One-time only print before deopt
2697 tty->print_cr("[BEFORE Deoptimization]"); 2697 tty->print_cr("[BEFORE Deoptimization]");
2698 trace_frames(); 2698 trace_frames();
2699 trace_stack(); 2699 trace_stack();
2700 } 2700 }
2701 Deoptimization::deoptimize(this, *fst.current(), fst.register_map(), Deoptimization::Reason_constraint); 2701 Deoptimization::deoptimize(this, *fst.current(), fst.register_map());
2702 } 2702 }
2703 } 2703 }
2704 2704
2705 if (DebugDeoptimization && deopt) { 2705 if (DebugDeoptimization && deopt) {
2706 tty->print_cr("[AFTER Deoptimization]"); 2706 tty->print_cr("[AFTER Deoptimization]");
2732 nmethod* nm = fst.current()->cb()->as_nmethod_or_null(); 2732 nmethod* nm = fst.current()->cb()->as_nmethod_or_null();
2733 xtty->elem("deoptimized thread='" UINTX_FORMAT "' compile_id='%d'", 2733 xtty->elem("deoptimized thread='" UINTX_FORMAT "' compile_id='%d'",
2734 this->name(), nm != NULL ? nm->compile_id() : -1); 2734 this->name(), nm != NULL ? nm->compile_id() : -1);
2735 } 2735 }
2736 2736
2737 Deoptimization::deoptimize(this, *fst.current(), fst.register_map(), Deoptimization::Reason_constraint); 2737 Deoptimization::deoptimize(this, *fst.current(), fst.register_map());
2738 } 2738 }
2739 } 2739 }
2740 } 2740 }
2741 2741
2742 2742