569 // incremented at the beginning of fetch_unroll_info() and (in C2) at |
569 // incremented at the beginning of fetch_unroll_info() and (in C2) at |
570 // the beginning of uncommon_trap(). |
570 // the beginning of uncommon_trap(). |
571 thread->dec_in_deopt_handler(); |
571 thread->dec_in_deopt_handler(); |
572 } |
572 } |
573 |
573 |
|
574 // Moved from cpu directories because none of the cpus has callee save values. |
|
575 // If a cpu implements callee save values, move this to deoptimization_<cpu>.cpp. |
|
576 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) { |
|
577 |
|
578 // This code is sort of the equivalent of C2IAdapter::setup_stack_frame back in |
|
579 // the days we had adapter frames. When we deoptimize a situation where a |
|
580 // compiled caller calls a compiled caller will have registers it expects |
|
581 // to survive the call to the callee. If we deoptimize the callee the only |
|
582 // way we can restore these registers is to have the oldest interpreter |
|
583 // frame that we create restore these values. That is what this routine |
|
584 // will accomplish. |
|
585 |
|
586 // At the moment we have modified c2 to not have any callee save registers |
|
587 // so this problem does not exist and this routine is just a place holder. |
|
588 |
|
589 assert(f->is_interpreted_frame(), "must be interpreted"); |
|
590 } |
574 |
591 |
575 // Return BasicType of value being returned |
592 // Return BasicType of value being returned |
576 JRT_LEAF(BasicType, Deoptimization::unpack_frames(JavaThread* thread, int exec_mode)) |
593 JRT_LEAF(BasicType, Deoptimization::unpack_frames(JavaThread* thread, int exec_mode)) |
577 |
594 |
578 // We are already active int he special DeoptResourceMark any ResourceObj's we |
595 // We are already active int he special DeoptResourceMark any ResourceObj's we |