< prev index next >

src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.cpp

Print this page




  72     // u8 chunk duration nanos
  73     // u8 chunk start ticks
  74     this->be_write(JfrTime::frequency());
  75     // chunk capabilities, CompressedIntegers etc
  76     this->be_write((u4)JfrOptionSet::compressed_integers() ? 1 : 0);
  77     _chunkstate->reset();
  78   }
  79   return is_open;
  80 }
  81 
  82 size_t JfrChunkWriter::close(intptr_t metadata_offset) {
  83   write_header(metadata_offset);
  84   this->flush();
  85   this->close_fd();
  86   return size_written();
  87 }
  88 
  89 void JfrChunkWriter::write_header(intptr_t metadata_offset) {
  90   assert(this->is_valid(), "invariant");
  91   // Chunk size
  92   this->write_be_at_offset(size_written(), CHUNK_SIZE_OFFSET);
  93   // initial checkpoint event offset
  94   this->write_be_at_offset(_chunkstate->previous_checkpoint_offset(), CHUNK_SIZE_OFFSET + (1 * FILEHEADER_SLOT_SIZE));
  95   // metadata event offset
  96   this->write_be_at_offset(metadata_offset, CHUNK_SIZE_OFFSET + (2 * FILEHEADER_SLOT_SIZE));
  97   // start of chunk in nanos since epoch
  98   this->write_be_at_offset(_chunkstate->previous_start_nanos(), CHUNK_SIZE_OFFSET + (3 * FILEHEADER_SLOT_SIZE));
  99   // duration of chunk in nanos
 100   this->write_be_at_offset(_chunkstate->last_chunk_duration(), CHUNK_SIZE_OFFSET + (4 * FILEHEADER_SLOT_SIZE));
 101   // start of chunk in ticks
 102   this->write_be_at_offset(_chunkstate->previous_start_ticks(), CHUNK_SIZE_OFFSET + (5 * FILEHEADER_SLOT_SIZE));
 103 }
 104 
 105 void JfrChunkWriter::set_chunk_path(const char* chunk_path) {
 106   _chunkstate->set_path(chunk_path);
 107 }
 108 
 109 intptr_t JfrChunkWriter::size_written() const {
 110   return this->is_valid() ? this->current_offset() : 0;
 111 }
 112 
 113 intptr_t JfrChunkWriter::previous_checkpoint_offset() const {
 114   return _chunkstate->previous_checkpoint_offset();
 115 }
 116 


  72     // u8 chunk duration nanos
  73     // u8 chunk start ticks
  74     this->be_write(JfrTime::frequency());
  75     // chunk capabilities, CompressedIntegers etc
  76     this->be_write((u4)JfrOptionSet::compressed_integers() ? 1 : 0);
  77     _chunkstate->reset();
  78   }
  79   return is_open;
  80 }
  81 
  82 size_t JfrChunkWriter::close(intptr_t metadata_offset) {
  83   write_header(metadata_offset);
  84   this->flush();
  85   this->close_fd();
  86   return size_written();
  87 }
  88 
  89 void JfrChunkWriter::write_header(intptr_t metadata_offset) {
  90   assert(this->is_valid(), "invariant");
  91   // Chunk size
  92   this->write_be_at_offset((jlong)size_written(), CHUNK_SIZE_OFFSET);
  93   // initial checkpoint event offset
  94   this->write_be_at_offset(_chunkstate->previous_checkpoint_offset(), CHUNK_SIZE_OFFSET + (1 * FILEHEADER_SLOT_SIZE));
  95   // metadata event offset
  96   this->write_be_at_offset((jlong)metadata_offset, CHUNK_SIZE_OFFSET + (2 * FILEHEADER_SLOT_SIZE));
  97   // start of chunk in nanos since epoch
  98   this->write_be_at_offset(_chunkstate->previous_start_nanos(), CHUNK_SIZE_OFFSET + (3 * FILEHEADER_SLOT_SIZE));
  99   // duration of chunk in nanos
 100   this->write_be_at_offset(_chunkstate->last_chunk_duration(), CHUNK_SIZE_OFFSET + (4 * FILEHEADER_SLOT_SIZE));
 101   // start of chunk in ticks
 102   this->write_be_at_offset(_chunkstate->previous_start_ticks(), CHUNK_SIZE_OFFSET + (5 * FILEHEADER_SLOT_SIZE));
 103 }
 104 
 105 void JfrChunkWriter::set_chunk_path(const char* chunk_path) {
 106   _chunkstate->set_path(chunk_path);
 107 }
 108 
 109 intptr_t JfrChunkWriter::size_written() const {
 110   return this->is_valid() ? this->current_offset() : 0;
 111 }
 112 
 113 intptr_t JfrChunkWriter::previous_checkpoint_offset() const {
 114   return _chunkstate->previous_checkpoint_offset();
 115 }
 116 
< prev index next >