equal
deleted
inserted
replaced
133 } |
133 } |
134 |
134 |
135 bool JfrJavaEventWriter::initialize() { |
135 bool JfrJavaEventWriter::initialize() { |
136 static bool initialized = false; |
136 static bool initialized = false; |
137 if (!initialized) { |
137 if (!initialized) { |
138 Thread* thread = Thread::current(); |
138 initialized = setup_event_writer_offsets(Thread::current()); |
139 initialized = setup_event_writer_offsets(thread); |
|
140 } |
139 } |
141 return initialized; |
140 return initialized; |
142 } |
141 } |
143 |
142 |
144 jboolean JfrJavaEventWriter::flush(jobject writer, jint used, jint requested, JavaThread* jt) { |
143 jboolean JfrJavaEventWriter::flush(jobject writer, jint used, jint requested, JavaThread* jt) { |
153 // "validity" is contextually defined here to mean |
152 // "validity" is contextually defined here to mean |
154 // that some memory location was provided that is |
153 // that some memory location was provided that is |
155 // large enough to accommodate the "requested size". |
154 // large enough to accommodate the "requested size". |
156 const bool is_valid = buffer->free_size() >= (size_t)(used + requested); |
155 const bool is_valid = buffer->free_size() >= (size_t)(used + requested); |
157 u1* const new_current_position = is_valid ? buffer->pos() + used : buffer->pos(); |
156 u1* const new_current_position = is_valid ? buffer->pos() + used : buffer->pos(); |
|
157 assert(start_pos_offset != invalid_offset, "invariant"); |
158 w->long_field_put(start_pos_offset, (jlong)buffer->pos()); |
158 w->long_field_put(start_pos_offset, (jlong)buffer->pos()); |
159 w->long_field_put(current_pos_offset, (jlong)new_current_position); |
159 w->long_field_put(current_pos_offset, (jlong)new_current_position); |
160 // only update java writer if underlying memory changed |
160 // only update java writer if underlying memory changed |
161 if (buffer != current) { |
161 if (buffer != current) { |
162 w->long_field_put(start_pos_address_offset, (jlong)buffer->pos_address()); |
162 w->long_field_put(start_pos_address_offset, (jlong)buffer->pos_address()); |