src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.cpp
changeset 53897 0abec72a3ac2
parent 50117 fb66b2959eaf
child 54263 3cabb47758c9
equal deleted inserted replaced
53896:b47fd614c75e 53897:0abec72a3ac2
    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();