src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp
changeset 53897 0abec72a3ac2
parent 50113 caf115bb98ad
child 57360 5d043a159d5c
child 58132 caa25ab47aca
equal deleted inserted replaced
53896:b47fd614c75e 53897:0abec72a3ac2
    42   if (_header) {
    42   if (_header) {
    43     reserve(sizeof(JfrCheckpointEntry));
    43     reserve(sizeof(JfrCheckpointEntry));
    44   }
    44   }
    45 }
    45 }
    46 
    46 
    47 static void write_checkpoint_header(u1* pos, jlong size, jlong time, bool flushpoint, juint type_count) {
    47 static void write_checkpoint_header(u1* pos, int64_t size, jlong time, bool flushpoint, u4 type_count) {
    48   assert(pos != NULL, "invariant");
    48   assert(pos != NULL, "invariant");
    49   JfrBigEndianWriter be_writer(pos, sizeof(JfrCheckpointEntry));
    49   JfrBigEndianWriter be_writer(pos, sizeof(JfrCheckpointEntry));
    50   be_writer.write(size);
    50   be_writer.write(size);
    51   be_writer.write(time);
    51   be_writer.write(time);
    52   be_writer.write(JfrTicks::now().value() - time);
    52   be_writer.write(JfrTicks::now().value() - time);
    53   be_writer.write(flushpoint ? (juint)1 : (juint)0);
    53   be_writer.write(flushpoint ? (u4)1 : (u4)0);
    54   be_writer.write(type_count);
    54   be_writer.write(type_count);
    55   assert(be_writer.is_valid(), "invariant");
    55   assert(be_writer.is_valid(), "invariant");
    56 }
    56 }
    57 
    57 
    58 JfrCheckpointWriter::~JfrCheckpointWriter() {
    58 JfrCheckpointWriter::~JfrCheckpointWriter() {
    69   }
    69   }
    70   assert(_header, "invariant");
    70   assert(_header, "invariant");
    71   assert(this->is_valid(), "invariant");
    71   assert(this->is_valid(), "invariant");
    72   assert(count() > 0, "invariant");
    72   assert(count() > 0, "invariant");
    73   assert(this->used_size() > sizeof(JfrCheckpointEntry), "invariant");
    73   assert(this->used_size() > sizeof(JfrCheckpointEntry), "invariant");
    74   const jlong size = this->current_offset();
    74   const int64_t size = this->current_offset();
    75   assert(size + this->start_pos() == this->current_pos(), "invariant");
    75   assert(size + this->start_pos() == this->current_pos(), "invariant");
    76   write_checkpoint_header(const_cast<u1*>(this->start_pos()), size, _time, is_flushpoint(), count());
    76   write_checkpoint_header(const_cast<u1*>(this->start_pos()), size, _time, is_flushpoint(), count());
    77   release();
    77   release();
    78 }
    78 }
    79 
    79 
    83 
    83 
    84 bool JfrCheckpointWriter::is_flushpoint() const {
    84 bool JfrCheckpointWriter::is_flushpoint() const {
    85   return _flushpoint;
    85   return _flushpoint;
    86 }
    86 }
    87 
    87 
    88 juint JfrCheckpointWriter::count() const {
    88 u4 JfrCheckpointWriter::count() const {
    89   return _count;
    89   return _count;
    90 }
    90 }
    91 
    91 
    92 void JfrCheckpointWriter::set_count(juint count) {
    92 void JfrCheckpointWriter::set_count(u4 count) {
    93   _count = count;
    93   _count = count;
    94 }
    94 }
    95 
    95 
    96 void JfrCheckpointWriter::release() {
    96 void JfrCheckpointWriter::release() {
    97   assert(this->is_acquired(), "invariant");
    97   assert(this->is_acquired(), "invariant");
   109   write<u8>(type_id);
   109   write<u8>(type_id);
   110   increment();
   110   increment();
   111 }
   111 }
   112 
   112 
   113 void JfrCheckpointWriter::write_key(u8 key) {
   113 void JfrCheckpointWriter::write_key(u8 key) {
   114   write<u8>(key);
   114   write(key);
   115 }
   115 }
   116 
   116 
   117 void JfrCheckpointWriter::increment() {
   117 void JfrCheckpointWriter::increment() {
   118   ++_count;
   118   ++_count;
   119 }
   119 }
   120 
   120 
   121 void JfrCheckpointWriter::write_count(u4 nof_entries) {
   121 void JfrCheckpointWriter::write_count(u4 nof_entries) {
   122   write<u4>((u4)nof_entries);
   122   write(nof_entries);
   123 }
   123 }
   124 
   124 
   125 void JfrCheckpointWriter::write_count(u4 nof_entries, jlong offset) {
   125 void JfrCheckpointWriter::write_count(u4 nof_entries, int64_t offset) {
   126   write_padded_at_offset(nof_entries, offset);
   126   write_padded_at_offset(nof_entries, offset);
   127 }
   127 }
   128 
   128 
   129 const u1* JfrCheckpointWriter::session_data(size_t* size, const JfrCheckpointContext* ctx /* 0 */) {
   129 const u1* JfrCheckpointWriter::session_data(size_t* size, const JfrCheckpointContext* ctx /* 0 */) {
   130   assert(this->is_acquired(), "wrong state!");
   130   assert(this->is_acquired(), "wrong state!");