equal
deleted
inserted
replaced
30 #include "jfr/utilities/jfrTypes.hpp" |
30 #include "jfr/utilities/jfrTypes.hpp" |
31 #include "runtime/mutexLocker.hpp" |
31 #include "runtime/mutexLocker.hpp" |
32 #include "runtime/os.hpp" |
32 #include "runtime/os.hpp" |
33 #include "runtime/os.inline.hpp" |
33 #include "runtime/os.inline.hpp" |
34 |
34 |
35 const u2 JFR_VERSION_MAJOR = 2; |
35 static const u2 JFR_VERSION_MAJOR = 2; |
36 const u2 JFR_VERSION_MINOR = 0; |
36 static const u2 JFR_VERSION_MINOR = 0; |
37 |
|
38 static const size_t MAGIC_LEN = 4; |
37 static const size_t MAGIC_LEN = 4; |
39 static const size_t FILEHEADER_SLOT_SIZE = 8; |
38 static const size_t FILEHEADER_SLOT_SIZE = 8; |
40 static const size_t CHUNK_SIZE_OFFSET = 8; |
39 static const size_t CHUNK_SIZE_OFFSET = 8; |
41 |
40 |
42 JfrChunkWriter::JfrChunkWriter() : JfrChunkWriterBase(NULL), _chunkstate(NULL) {} |
41 JfrChunkWriter::JfrChunkWriter() : JfrChunkWriterBase(NULL), _chunkstate(NULL) {} |
77 _chunkstate->reset(); |
76 _chunkstate->reset(); |
78 } |
77 } |
79 return is_open; |
78 return is_open; |
80 } |
79 } |
81 |
80 |
82 size_t JfrChunkWriter::close(intptr_t metadata_offset) { |
81 size_t JfrChunkWriter::close(int64_t metadata_offset) { |
83 write_header(metadata_offset); |
82 write_header(metadata_offset); |
84 this->flush(); |
83 this->flush(); |
85 this->close_fd(); |
84 this->close_fd(); |
86 return size_written(); |
85 return (size_t)size_written(); |
87 } |
86 } |
88 |
87 |
89 void JfrChunkWriter::write_header(intptr_t metadata_offset) { |
88 void JfrChunkWriter::write_header(int64_t metadata_offset) { |
90 assert(this->is_valid(), "invariant"); |
89 assert(this->is_valid(), "invariant"); |
91 // Chunk size |
90 // Chunk size |
92 this->write_be_at_offset(size_written(), CHUNK_SIZE_OFFSET); |
91 this->write_be_at_offset(size_written(), CHUNK_SIZE_OFFSET); |
93 // initial checkpoint event offset |
92 // initial checkpoint event offset |
94 this->write_be_at_offset(_chunkstate->previous_checkpoint_offset(), CHUNK_SIZE_OFFSET + (1 * FILEHEADER_SLOT_SIZE)); |
93 this->write_be_at_offset(_chunkstate->previous_checkpoint_offset(), CHUNK_SIZE_OFFSET + (1 * FILEHEADER_SLOT_SIZE)); |
104 |
103 |
105 void JfrChunkWriter::set_chunk_path(const char* chunk_path) { |
104 void JfrChunkWriter::set_chunk_path(const char* chunk_path) { |
106 _chunkstate->set_path(chunk_path); |
105 _chunkstate->set_path(chunk_path); |
107 } |
106 } |
108 |
107 |
109 intptr_t JfrChunkWriter::size_written() const { |
108 int64_t JfrChunkWriter::size_written() const { |
110 return this->is_valid() ? this->current_offset() : 0; |
109 return this->is_valid() ? this->current_offset() : 0; |
111 } |
110 } |
112 |
111 |
113 intptr_t JfrChunkWriter::previous_checkpoint_offset() const { |
112 int64_t JfrChunkWriter::previous_checkpoint_offset() const { |
114 return _chunkstate->previous_checkpoint_offset(); |
113 return _chunkstate->previous_checkpoint_offset(); |
115 } |
114 } |
116 |
115 |
117 void JfrChunkWriter::set_previous_checkpoint_offset(intptr_t offset) { |
116 void JfrChunkWriter::set_previous_checkpoint_offset(int64_t offset) { |
118 _chunkstate->set_previous_checkpoint_offset(offset); |
117 _chunkstate->set_previous_checkpoint_offset(offset); |
119 } |
118 } |
120 |
119 |
121 void JfrChunkWriter::time_stamp_chunk_now() { |
120 void JfrChunkWriter::time_stamp_chunk_now() { |
122 _chunkstate->update_time_to_now(); |
121 _chunkstate->update_time_to_now(); |