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!"); |