comparison src/share/vm/runtime/thread.hpp @ 20705:d3f3f7677537

6898462: The escape analysis with G1 cause crash assertion src/share/vm/runtime/vframeArray.cpp:94 Summary: OOM during reallocation of scalar replaced objects in deoptimization causes crashes Reviewed-by: kvn, jrose
author roland
date Tue, 25 Nov 2014 17:33:59 +0100
parents b12a2a9b05ca
children 7848fc12602b
comparison
equal deleted inserted replaced
20704:8c08b28b7eee 20705:d3f3f7677537
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;