150 151 DebugInfoWriteStream* stream() const { return _stream; } 152 153 154 private: 155 friend class ScopeDesc; 156 friend class vframeStreamCommon; 157 friend class DIR_Chunk; 158 159 // True if we are recording non-safepoint scopes. 160 // This flag is set if DebugNonSafepoints is true, or if 161 // JVMTI post_compiled_method_load events are enabled. 162 const bool _recording_non_safepoints; 163 164 DebugInfoWriteStream* _stream; 165 166 OopRecorder* _oop_recorder; 167 168 // Scopes that have been described so far. 169 GrowableArray<DIR_Chunk*>* _all_chunks; 170 #if !INCLUDE_JVMCI 171 GrowableArray<DIR_Chunk*>* _shared_chunks; 172 #endif 173 DIR_Chunk* _next_chunk; 174 DIR_Chunk* _next_chunk_limit; 175 176 #ifdef ASSERT 177 enum { rs_null, rs_safepoint, rs_non_safepoint }; 178 int _recording_state; 179 #endif 180 181 PcDesc* _pcs; 182 int _pcs_size; 183 int _pcs_length; 184 // Note: Would use GrowableArray<PcDesc>, but structs are not supported. 185 186 // PC of most recent real safepoint before the current one, 187 // updated after end_scopes. 188 int _prev_safepoint_pc; 189 190 PcDesc* last_pc() { 191 guarantee(_pcs_length > 0, "a safepoint must be declared already"); 192 return &_pcs[_pcs_length-1]; | 150 151 DebugInfoWriteStream* stream() const { return _stream; } 152 153 154 private: 155 friend class ScopeDesc; 156 friend class vframeStreamCommon; 157 friend class DIR_Chunk; 158 159 // True if we are recording non-safepoint scopes. 160 // This flag is set if DebugNonSafepoints is true, or if 161 // JVMTI post_compiled_method_load events are enabled. 162 const bool _recording_non_safepoints; 163 164 DebugInfoWriteStream* _stream; 165 166 OopRecorder* _oop_recorder; 167 168 // Scopes that have been described so far. 169 GrowableArray<DIR_Chunk*>* _all_chunks; 170 DIR_Chunk* _next_chunk; 171 DIR_Chunk* _next_chunk_limit; 172 173 #ifdef ASSERT 174 enum { rs_null, rs_safepoint, rs_non_safepoint }; 175 int _recording_state; 176 #endif 177 178 PcDesc* _pcs; 179 int _pcs_size; 180 int _pcs_length; 181 // Note: Would use GrowableArray<PcDesc>, but structs are not supported. 182 183 // PC of most recent real safepoint before the current one, 184 // updated after end_scopes. 185 int _prev_safepoint_pc; 186 187 PcDesc* last_pc() { 188 guarantee(_pcs_length > 0, "a safepoint must be declared already"); 189 return &_pcs[_pcs_length-1]; |