931 |
931 |
932 // JVMTI PopFrame support |
932 // JVMTI PopFrame support |
933 // This is set to popframe_pending to signal that top Java frame should be popped immediately |
933 // This is set to popframe_pending to signal that top Java frame should be popped immediately |
934 int _popframe_condition; |
934 int _popframe_condition; |
935 |
935 |
|
936 // If reallocation of scalar replaced objects fails, we throw OOM |
|
937 // and during exception propagation, pop the top |
|
938 // _frames_to_pop_failed_realloc frames, the ones that reference |
|
939 // failed reallocations. |
|
940 int _frames_to_pop_failed_realloc; |
|
941 |
936 #ifndef PRODUCT |
942 #ifndef PRODUCT |
937 int _jmp_ring_index; |
943 int _jmp_ring_index; |
938 struct { |
944 struct { |
939 // We use intptr_t instead of address so debugger doesn't try and display strings |
945 // We use intptr_t instead of address so debugger doesn't try and display strings |
940 intptr_t _target; |
946 intptr_t _target; |
1583 bool pop_frame_in_process(void) { return ((_popframe_condition & popframe_processing_bit) != 0); } |
1589 bool pop_frame_in_process(void) { return ((_popframe_condition & popframe_processing_bit) != 0); } |
1584 void set_pop_frame_in_process(void) { _popframe_condition |= popframe_processing_bit; } |
1590 void set_pop_frame_in_process(void) { _popframe_condition |= popframe_processing_bit; } |
1585 void clr_pop_frame_in_process(void) { _popframe_condition &= ~popframe_processing_bit; } |
1591 void clr_pop_frame_in_process(void) { _popframe_condition &= ~popframe_processing_bit; } |
1586 #endif |
1592 #endif |
1587 |
1593 |
|
1594 int frames_to_pop_failed_realloc() const { return _frames_to_pop_failed_realloc; } |
|
1595 void set_frames_to_pop_failed_realloc(int nb) { _frames_to_pop_failed_realloc = nb; } |
|
1596 void dec_frames_to_pop_failed_realloc() { _frames_to_pop_failed_realloc--; } |
|
1597 |
1588 private: |
1598 private: |
1589 // Saved incoming arguments to popped frame. |
1599 // Saved incoming arguments to popped frame. |
1590 // Used only when popped interpreted frame returns to deoptimized frame. |
1600 // Used only when popped interpreted frame returns to deoptimized frame. |
1591 void* _popframe_preserved_args; |
1601 void* _popframe_preserved_args; |
1592 int _popframe_preserved_args_size; |
1602 int _popframe_preserved_args_size; |