8217647: JFR: recordings on 32-bit systems unreadable

Tue, 16 Jun 2020 11:03:04 +0800

author
bulasevich
date
Tue, 16 Jun 2020 11:03:04 +0800
changeset 9947
db357034b763
parent 9946
103d1261f1f4
child 9948
ae4fc0906f45

8217647: JFR: recordings on 32-bit systems unreadable
Reviewed-by: egahlin
Contributed-by: boris.ulasevich@bell-sw.com, markus.gronlund@oracle.com

src/share/vm/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/checkpoint/types/jfrType.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/checkpoint/types/jfrTypeSetWriter.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/repository/jfrChunkState.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/repository/jfrChunkState.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/repository/jfrChunkWriter.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/repository/jfrChunkWriter.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/repository/jfrRepository.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/repository/jfrRepository.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/recorder/service/jfrRecorderService.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrEventWriterHost.inline.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrPosition.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrPosition.inline.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrStreamWriterHost.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrStreamWriterHost.inline.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrWriterHost.hpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/writers/jfrWriterHost.inline.hpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp	Fri Dec 06 12:42:29 2019 +0100
     1.2 +++ b/src/share/vm/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp	Tue Jun 16 11:03:04 2020 +0800
     1.3 @@ -44,13 +44,13 @@
     1.4    }
     1.5  }
     1.6  
     1.7 -static void write_checkpoint_header(u1* pos, jlong size, jlong time, bool flushpoint, juint type_count) {
     1.8 +static void write_checkpoint_header(u1* pos, int64_t size, jlong time, bool flushpoint, u4 type_count) {
     1.9    assert(pos != NULL, "invariant");
    1.10    JfrBigEndianWriter be_writer(pos, sizeof(JfrCheckpointEntry));
    1.11    be_writer.write(size);
    1.12    be_writer.write(time);
    1.13    be_writer.write(JfrTicks::now().value() - time);
    1.14 -  be_writer.write(flushpoint ? (juint)1 : (juint)0);
    1.15 +  be_writer.write(flushpoint ? (u4)1 : (u4)0);
    1.16    be_writer.write(type_count);
    1.17    assert(be_writer.is_valid(), "invariant");
    1.18  }
    1.19 @@ -71,7 +71,7 @@
    1.20    assert(this->is_valid(), "invariant");
    1.21    assert(count() > 0, "invariant");
    1.22    assert(this->used_size() > sizeof(JfrCheckpointEntry), "invariant");
    1.23 -  const jlong size = this->current_offset();
    1.24 +  const int64_t size = this->current_offset();
    1.25    assert(size + this->start_pos() == this->current_pos(), "invariant");
    1.26    write_checkpoint_header(const_cast<u1*>(this->start_pos()), size, _time, is_flushpoint(), count());
    1.27    release();
    1.28 @@ -85,11 +85,11 @@
    1.29    return _flushpoint;
    1.30  }
    1.31  
    1.32 -juint JfrCheckpointWriter::count() const {
    1.33 +u4 JfrCheckpointWriter::count() const {
    1.34    return _count;
    1.35  }
    1.36  
    1.37 -void JfrCheckpointWriter::set_count(juint count) {
    1.38 +void JfrCheckpointWriter::set_count(u4 count) {
    1.39    _count = count;
    1.40  }
    1.41  
    1.42 @@ -111,7 +111,7 @@
    1.43  }
    1.44  
    1.45  void JfrCheckpointWriter::write_key(u8 key) {
    1.46 -  write<u8>(key);
    1.47 +  write(key);
    1.48  }
    1.49  
    1.50  void JfrCheckpointWriter::increment() {
    1.51 @@ -119,10 +119,10 @@
    1.52  }
    1.53  
    1.54  void JfrCheckpointWriter::write_count(u4 nof_entries) {
    1.55 -  write<u4>((u4)nof_entries);
    1.56 +  write(nof_entries);
    1.57  }
    1.58  
    1.59 -void JfrCheckpointWriter::write_count(u4 nof_entries, jlong offset) {
    1.60 +void JfrCheckpointWriter::write_count(u4 nof_entries, int64_t offset) {
    1.61    write_padded_at_offset(nof_entries, offset);
    1.62  }
    1.63  
     2.1 --- a/src/share/vm/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp	Fri Dec 06 12:42:29 2019 +0100
     2.2 +++ b/src/share/vm/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp	Tue Jun 16 11:03:04 2020 +0800
     2.3 @@ -49,21 +49,21 @@
     2.4  typedef EventWriterHost<BigEndianEncoder, CompressedIntegerEncoder, JfrTransactionalCheckpointWriter> JfrCheckpointWriterBase;
     2.5  
     2.6  struct JfrCheckpointContext {
     2.7 -  jlong offset;
     2.8 -  juint count;
     2.9 +  int64_t offset;
    2.10 +  u4 count;
    2.11  };
    2.12  
    2.13  class JfrCheckpointWriter : public JfrCheckpointWriterBase {
    2.14    friend class JfrSerializerRegistration;
    2.15   private:
    2.16    JfrTicks _time;
    2.17 -  jlong _offset;
    2.18 -  juint _count;
    2.19 +  int64_t _offset;
    2.20 +  u4 _count;
    2.21    bool _flushpoint;
    2.22    bool _header;
    2.23  
    2.24 -  juint count() const;
    2.25 -  void set_count(juint count);
    2.26 +  u4 count() const;
    2.27 +  void set_count(u4 count);
    2.28    void increment();
    2.29    void set_flushpoint(bool flushpoint);
    2.30    bool is_flushpoint() const;
    2.31 @@ -75,7 +75,7 @@
    2.32    ~JfrCheckpointWriter();
    2.33    void write_type(JfrTypeId type_id);
    2.34    void write_count(u4 nof_entries);
    2.35 -  void write_count(u4 nof_entries, jlong offset);
    2.36 +  void write_count(u4 nof_entries, int64_t offset);
    2.37    void write_key(u8 key);
    2.38    const JfrCheckpointContext context() const;
    2.39    void set_context(const JfrCheckpointContext ctx);
     3.1 --- a/src/share/vm/jfr/recorder/checkpoint/types/jfrType.cpp	Fri Dec 06 12:42:29 2019 +0100
     3.2 +++ b/src/share/vm/jfr/recorder/checkpoint/types/jfrType.cpp	Tue Jun 16 11:03:04 2020 +0800
     3.3 @@ -64,7 +64,7 @@
     3.4   private:
     3.5    JfrCheckpointWriter& _writer;
     3.6    JfrCheckpointContext _ctx;
     3.7 -  const intptr_t _count_position;
     3.8 +  const int64_t _count_position;
     3.9    Thread* const _curthread;
    3.10    u4 _count;
    3.11  
     4.1 --- a/src/share/vm/jfr/recorder/checkpoint/types/jfrTypeSetWriter.hpp	Fri Dec 06 12:42:29 2019 +0100
     4.2 +++ b/src/share/vm/jfr/recorder/checkpoint/types/jfrTypeSetWriter.hpp	Tue Jun 16 11:03:04 2020 +0800
     4.3 @@ -35,7 +35,7 @@
     4.4    WriterImpl _impl;
     4.5    JfrCheckpointWriter* _writer;
     4.6    JfrCheckpointContext _ctx;
     4.7 -  jlong _count_offset;
     4.8 +  int64_t _count_offset;
     4.9    int _count;
    4.10    bool _skip_header;
    4.11   public:
     5.1 --- a/src/share/vm/jfr/recorder/repository/jfrChunkState.cpp	Fri Dec 06 12:42:29 2019 +0100
     5.2 +++ b/src/share/vm/jfr/recorder/repository/jfrChunkState.cpp	Tue Jun 16 11:03:04 2020 +0800
     5.3 @@ -52,19 +52,19 @@
     5.4    set_previous_checkpoint_offset(0);
     5.5  }
     5.6  
     5.7 -void JfrChunkState::set_previous_checkpoint_offset(jlong offset) {
     5.8 +void JfrChunkState::set_previous_checkpoint_offset(int64_t offset) {
     5.9    _previous_checkpoint_offset = offset;
    5.10  }
    5.11  
    5.12 -jlong JfrChunkState::previous_checkpoint_offset() const {
    5.13 +int64_t JfrChunkState::previous_checkpoint_offset() const {
    5.14    return _previous_checkpoint_offset;
    5.15  }
    5.16  
    5.17 -jlong JfrChunkState::previous_start_ticks() const {
    5.18 +int64_t JfrChunkState::previous_start_ticks() const {
    5.19    return _previous_start_ticks;
    5.20  }
    5.21  
    5.22 -jlong JfrChunkState::previous_start_nanos() const {
    5.23 +int64_t JfrChunkState::previous_start_nanos() const {
    5.24    return _previous_start_nanos;
    5.25  }
    5.26  
    5.27 @@ -91,7 +91,7 @@
    5.28    save_current_and_update_start_ticks();
    5.29  }
    5.30  
    5.31 -jlong JfrChunkState::last_chunk_duration() const {
    5.32 +int64_t JfrChunkState::last_chunk_duration() const {
    5.33    return _start_nanos - _previous_start_nanos;
    5.34  }
    5.35  
     6.1 --- a/src/share/vm/jfr/recorder/repository/jfrChunkState.hpp	Fri Dec 06 12:42:29 2019 +0100
     6.2 +++ b/src/share/vm/jfr/recorder/repository/jfrChunkState.hpp	Tue Jun 16 11:03:04 2020 +0800
     6.3 @@ -25,7 +25,6 @@
     6.4  #ifndef SHARE_VM_JFR_RECORDER_REPOSITORY_JFRRCHUNKSTATE_HPP
     6.5  #define SHARE_VM_JFR_RECORDER_REPOSITORY_JFRRCHUNKSTATE_HPP
     6.6  
     6.7 -#include "jni.h"
     6.8  #include "jfr/utilities/jfrAllocation.hpp"
     6.9  #include "jfr/utilities/jfrTypes.hpp"
    6.10  
    6.11 @@ -33,11 +32,11 @@
    6.12    friend class JfrChunkWriter;
    6.13   private:
    6.14    char* _path;
    6.15 -  jlong _start_ticks;
    6.16 -  jlong _start_nanos;
    6.17 -  jlong _previous_start_ticks;
    6.18 -  jlong _previous_start_nanos;
    6.19 -  jlong _previous_checkpoint_offset;
    6.20 +  int64_t _start_ticks;
    6.21 +  int64_t _start_nanos;
    6.22 +  int64_t _previous_start_ticks;
    6.23 +  int64_t _previous_start_nanos;
    6.24 +  int64_t _previous_checkpoint_offset;
    6.25  
    6.26    void update_start_ticks();
    6.27    void update_start_nanos();
    6.28 @@ -47,11 +46,11 @@
    6.29    JfrChunkState();
    6.30    ~JfrChunkState();
    6.31    void reset();
    6.32 -  jlong previous_checkpoint_offset() const;
    6.33 -  void set_previous_checkpoint_offset(jlong offset);
    6.34 -  jlong previous_start_ticks() const;
    6.35 -  jlong previous_start_nanos() const;
    6.36 -  jlong last_chunk_duration() const;
    6.37 +  int64_t previous_checkpoint_offset() const;
    6.38 +  void set_previous_checkpoint_offset(int64_t offset);
    6.39 +  int64_t previous_start_ticks() const;
    6.40 +  int64_t previous_start_nanos() const;
    6.41 +  int64_t last_chunk_duration() const;
    6.42    void update_time_to_now();
    6.43    void set_path(const char* path);
    6.44    const char* path() const;
     7.1 --- a/src/share/vm/jfr/recorder/repository/jfrChunkWriter.cpp	Fri Dec 06 12:42:29 2019 +0100
     7.2 +++ b/src/share/vm/jfr/recorder/repository/jfrChunkWriter.cpp	Tue Jun 16 11:03:04 2020 +0800
     7.3 @@ -32,9 +32,8 @@
     7.4  #include "runtime/os.hpp"
     7.5  #include "runtime/os.hpp"
     7.6  
     7.7 -const u2 JFR_VERSION_MAJOR = 2;
     7.8 -const u2 JFR_VERSION_MINOR = 0;
     7.9 -
    7.10 +static const u2 JFR_VERSION_MAJOR = 2;
    7.11 +static const u2 JFR_VERSION_MINOR = 0;
    7.12  static const size_t MAGIC_LEN = 4;
    7.13  static const size_t FILEHEADER_SLOT_SIZE = 8;
    7.14  static const size_t CHUNK_SIZE_OFFSET = 8;
    7.15 @@ -79,14 +78,14 @@
    7.16    return is_open;
    7.17  }
    7.18  
    7.19 -size_t JfrChunkWriter::close(intptr_t metadata_offset) {
    7.20 +size_t JfrChunkWriter::close(int64_t metadata_offset) {
    7.21    write_header(metadata_offset);
    7.22    this->flush();
    7.23    this->close_fd();
    7.24 -  return size_written();
    7.25 +  return (size_t)size_written();
    7.26  }
    7.27  
    7.28 -void JfrChunkWriter::write_header(intptr_t metadata_offset) {
    7.29 +void JfrChunkWriter::write_header(int64_t metadata_offset) {
    7.30    assert(this->is_valid(), "invariant");
    7.31    // Chunk size
    7.32    this->write_be_at_offset((jlong)size_written(), CHUNK_SIZE_OFFSET);
    7.33 @@ -106,15 +105,15 @@
    7.34    _chunkstate->set_path(chunk_path);
    7.35  }
    7.36  
    7.37 -intptr_t JfrChunkWriter::size_written() const {
    7.38 +int64_t JfrChunkWriter::size_written() const {
    7.39    return this->is_valid() ? this->current_offset() : 0;
    7.40  }
    7.41  
    7.42 -intptr_t JfrChunkWriter::previous_checkpoint_offset() const {
    7.43 +int64_t JfrChunkWriter::previous_checkpoint_offset() const {
    7.44    return _chunkstate->previous_checkpoint_offset();
    7.45  }
    7.46  
    7.47 -void JfrChunkWriter::set_previous_checkpoint_offset(intptr_t offset) {
    7.48 +void JfrChunkWriter::set_previous_checkpoint_offset(int64_t offset) {
    7.49    _chunkstate->set_previous_checkpoint_offset(offset);
    7.50  }
    7.51  
     8.1 --- a/src/share/vm/jfr/recorder/repository/jfrChunkWriter.hpp	Fri Dec 06 12:42:29 2019 +0100
     8.2 +++ b/src/share/vm/jfr/recorder/repository/jfrChunkWriter.hpp	Tue Jun 16 11:03:04 2020 +0800
     8.3 @@ -41,16 +41,16 @@
     8.4    JfrChunkState* _chunkstate;
     8.5  
     8.6    bool open();
     8.7 -  size_t close(intptr_t metadata_offset);
     8.8 -  void write_header(intptr_t metadata_offset);
     8.9 +  size_t close(int64_t metadata_offset);
    8.10 +  void write_header(int64_t metadata_offset);
    8.11    void set_chunk_path(const char* chunk_path);
    8.12  
    8.13   public:
    8.14    JfrChunkWriter();
    8.15    bool initialize();
    8.16 -  intptr_t size_written() const;
    8.17 -  intptr_t previous_checkpoint_offset() const;
    8.18 -  void set_previous_checkpoint_offset(intptr_t offset);
    8.19 +  int64_t size_written() const;
    8.20 +  int64_t previous_checkpoint_offset() const;
    8.21 +  void set_previous_checkpoint_offset(int64_t offset);
    8.22    void time_stamp_chunk_now();
    8.23  };
    8.24  
     9.1 --- a/src/share/vm/jfr/recorder/repository/jfrRepository.cpp	Fri Dec 06 12:42:29 2019 +0100
     9.2 +++ b/src/share/vm/jfr/recorder/repository/jfrRepository.cpp	Tue Jun 16 11:03:04 2020 +0800
     9.3 @@ -147,10 +147,10 @@
     9.4    iso8601_to_date_time(buffer);
     9.5  }
     9.6  
     9.7 -static jlong file_size(fio_fd fd) {
     9.8 +static int64_t file_size(fio_fd fd) {
     9.9    assert(fd != invalid_fd, "invariant");
    9.10 -  const jlong current_offset = os::current_file_offset(fd);
    9.11 -  const jlong size = os::lseek(fd, 0, SEEK_END);
    9.12 +  const int64_t current_offset = os::current_file_offset(fd);
    9.13 +  const int64_t size = os::lseek(fd, 0, SEEK_END);
    9.14    os::seek_to_file_offset(fd, current_offset);
    9.15    return size;
    9.16  }
    9.17 @@ -218,7 +218,7 @@
    9.18    if (invalid_fd == entry_fd) {
    9.19      return NULL;
    9.20    }
    9.21 -  const jlong entry_size = file_size(entry_fd);
    9.22 +  const int64_t entry_size = file_size(entry_fd);
    9.23    os::close(entry_fd);
    9.24    if (0 == entry_size) {
    9.25      return NULL;
    9.26 @@ -260,6 +260,7 @@
    9.27    }
    9.28  }
    9.29  #endif
    9.30 +
    9.31  bool RepositoryIterator::has_next() const {
    9.32    return (_files != NULL && _iterator < _files->length());
    9.33  }
    9.34 @@ -275,21 +276,26 @@
    9.35    if (file_copy_block == NULL) {
    9.36      return;
    9.37    }
    9.38 - jlong bytes_written_total = 0;
    9.39 + int64_t bytes_written_total = 0;
    9.40    while (iterator.has_next()) {
    9.41      fio_fd current_fd = invalid_fd;
    9.42      const char* const fqn = iterator.next();
    9.43      if (fqn != NULL) {
    9.44        current_fd = open_existing(fqn);
    9.45        if (current_fd != invalid_fd) {
    9.46 -        const jlong current_filesize = file_size(current_fd);
    9.47 +        const int64_t current_filesize = file_size(current_fd);
    9.48          assert(current_filesize > 0, "invariant");
    9.49 -        jlong bytes_read = 0;
    9.50 -        jlong bytes_written = 0;
    9.51 +        int64_t bytes_read = 0;
    9.52 +        int64_t bytes_written = 0;
    9.53          while (bytes_read < current_filesize) {
    9.54 -          bytes_read += (jlong)os::read_at(current_fd, file_copy_block, size_of_file_copy_block, bytes_read);
    9.55 -          assert(bytes_read - bytes_written <= (jlong)size_of_file_copy_block, "invariant");
    9.56 -          bytes_written += (jlong)os::write(emergency_fd, file_copy_block, bytes_read - bytes_written);
    9.57 +          const ssize_t read_result = os::read_at(current_fd, file_copy_block, size_of_file_copy_block, bytes_read);
    9.58 +          if (-1 == read_result) {
    9.59 +            if (LogJFR) tty->print_cr("Unable to recover JFR data");
    9.60 +            break;
    9.61 +          }
    9.62 +          bytes_read += (int64_t)read_result;
    9.63 +          assert(bytes_read - bytes_written <= (int64_t)size_of_file_copy_block, "invariant");
    9.64 +          bytes_written += (int64_t)os::write(emergency_fd, file_copy_block, bytes_read - bytes_written);
    9.65            assert(bytes_read == bytes_written, "invariant");
    9.66          }
    9.67          os::close(current_fd);
    9.68 @@ -468,6 +474,6 @@
    9.69    return _chunkwriter->open();
    9.70  }
    9.71  
    9.72 -size_t JfrRepository::close_chunk(jlong metadata_offset) {
    9.73 +size_t JfrRepository::close_chunk(int64_t metadata_offset) {
    9.74    return _chunkwriter->close(metadata_offset);
    9.75  }
    10.1 --- a/src/share/vm/jfr/recorder/repository/jfrRepository.hpp	Fri Dec 06 12:42:29 2019 +0100
    10.2 +++ b/src/share/vm/jfr/recorder/repository/jfrRepository.hpp	Tue Jun 16 11:03:04 2020 +0800
    10.3 @@ -55,7 +55,7 @@
    10.4    bool set_path(const char* path);
    10.5    void set_chunk_path(const char* path);
    10.6    bool open_chunk(bool vm_error = false);
    10.7 -  size_t close_chunk(jlong metadata_offset);
    10.8 +  size_t close_chunk(int64_t metadata_offset);
    10.9    void on_vm_error();
   10.10    static void notify_on_new_chunk_path();
   10.11    static JfrChunkWriter& chunkwriter();
    11.1 --- a/src/share/vm/jfr/recorder/service/jfrRecorderService.cpp	Fri Dec 06 12:42:29 2019 +0100
    11.2 +++ b/src/share/vm/jfr/recorder/service/jfrRecorderService.cpp	Tue Jun 16 11:03:04 2020 +0800
    11.3 @@ -131,18 +131,18 @@
    11.4    bool not_acquired() const { return !_acquired; }
    11.5  };
    11.6  
    11.7 -static intptr_t write_checkpoint_event_prologue(JfrChunkWriter& cw, u8 type_id) {
    11.8 -  const intptr_t prev_cp_offset = cw.previous_checkpoint_offset();
    11.9 -  const intptr_t prev_cp_relative_offset = 0 == prev_cp_offset ? 0 : prev_cp_offset - cw.current_offset();
   11.10 +static int64_t write_checkpoint_event_prologue(JfrChunkWriter& cw, u8 type_id) {
   11.11 +  const int64_t prev_cp_offset = cw.previous_checkpoint_offset();
   11.12 +  const int64_t prev_cp_relative_offset = 0 == prev_cp_offset ? 0 : prev_cp_offset - cw.current_offset();
   11.13    cw.reserve(sizeof(u4));
   11.14    cw.write<u8>(EVENT_CHECKPOINT);
   11.15    cw.write(JfrTicks::now());
   11.16 -  cw.write<jlong>((jlong)0);
   11.17 -  cw.write<jlong>((jlong)prev_cp_relative_offset); // write previous checkpoint offset delta
   11.18 +  cw.write((int64_t)0);
   11.19 +  cw.write(prev_cp_relative_offset); // write previous checkpoint offset delta
   11.20    cw.write<bool>(false); // flushpoint
   11.21 -  cw.write<u4>((u4)1); // nof types in this checkpoint
   11.22 -  cw.write<u8>(type_id);
   11.23 -  const intptr_t number_of_elements_offset = cw.current_offset();
   11.24 +  cw.write((u4)1); // nof types in this checkpoint
   11.25 +  cw.write(type_id);
   11.26 +  const int64_t number_of_elements_offset = cw.current_offset();
   11.27    cw.reserve(sizeof(u4));
   11.28    return number_of_elements_offset;
   11.29  }
   11.30 @@ -162,8 +162,8 @@
   11.31    }
   11.32    bool process() {
   11.33      // current_cp_offset is also offset for the event size header field
   11.34 -    const intptr_t current_cp_offset = _cw.current_offset();
   11.35 -    const intptr_t num_elements_offset = write_checkpoint_event_prologue(_cw, _type_id);
   11.36 +    const int64_t current_cp_offset = _cw.current_offset();
   11.37 +    const int64_t num_elements_offset = write_checkpoint_event_prologue(_cw, _type_id);
   11.38      // invocation
   11.39      _content_functor.process();
   11.40      const u4 number_of_elements = (u4)_content_functor.processed();
   11.41 @@ -476,9 +476,9 @@
   11.42    JfrMetadataEvent::lock();
   11.43  }
   11.44  
   11.45 -static jlong write_metadata_event(JfrChunkWriter& chunkwriter) {
   11.46 +static int64_t write_metadata_event(JfrChunkWriter& chunkwriter) {
   11.47    assert(chunkwriter.is_valid(), "invariant");
   11.48 -  const jlong metadata_offset = chunkwriter.current_offset();
   11.49 +  const int64_t metadata_offset = chunkwriter.current_offset();
   11.50    JfrMetadataEvent::write(chunkwriter, metadata_offset);
   11.51    return metadata_offset;
   11.52  }
    12.1 --- a/src/share/vm/jfr/writers/jfrEventWriterHost.inline.hpp	Fri Dec 06 12:42:29 2019 +0100
    12.2 +++ b/src/share/vm/jfr/writers/jfrEventWriterHost.inline.hpp	Tue Jun 16 11:03:04 2020 +0800
    12.3 @@ -49,7 +49,7 @@
    12.4  inline intptr_t EventWriterHost<BE, IE, WriterPolicyImpl>::end_write(void) {
    12.5    assert(this->is_acquired(),
    12.6      "state corruption, calling end with writer with non-acquired state!");
    12.7 -  return this->is_valid() ? this->used_offset() : 0;
    12.8 +  return this->is_valid() ? (intptr_t)this->used_offset() : 0;
    12.9  }
   12.10  
   12.11  template <typename BE, typename IE, typename WriterPolicyImpl>
    13.1 --- a/src/share/vm/jfr/writers/jfrPosition.hpp	Fri Dec 06 12:42:29 2019 +0100
    13.2 +++ b/src/share/vm/jfr/writers/jfrPosition.hpp	Tue Jun 16 11:03:04 2020 +0800
    13.3 @@ -48,8 +48,8 @@
    13.4  
    13.5   public:
    13.6    size_t available_size() const;
    13.7 -  intptr_t used_offset() const;
    13.8 -  intptr_t current_offset() const;
    13.9 +  int64_t used_offset() const;
   13.10 +  int64_t current_offset() const;
   13.11    size_t used_size() const;
   13.12    void reset();
   13.13  };
    14.1 --- a/src/share/vm/jfr/writers/jfrPosition.inline.hpp	Fri Dec 06 12:42:29 2019 +0100
    14.2 +++ b/src/share/vm/jfr/writers/jfrPosition.inline.hpp	Tue Jun 16 11:03:04 2020 +0800
    14.3 @@ -80,12 +80,12 @@
    14.4  }
    14.5  
    14.6  template <typename AP>
    14.7 -inline intptr_t Position<AP>::used_offset() const {
    14.8 +inline int64_t Position<AP>::used_offset() const {
    14.9    return _current_pos - _start_pos;
   14.10  }
   14.11  
   14.12  template <typename AP>
   14.13 -inline intptr_t Position<AP>::current_offset() const {
   14.14 +inline int64_t Position<AP>::current_offset() const {
   14.15    return this->used_offset();
   14.16  }
   14.17  
    15.1 --- a/src/share/vm/jfr/writers/jfrStreamWriterHost.hpp	Fri Dec 06 12:42:29 2019 +0100
    15.2 +++ b/src/share/vm/jfr/writers/jfrStreamWriterHost.hpp	Tue Jun 16 11:03:04 2020 +0800
    15.3 @@ -33,9 +33,9 @@
    15.4   public:
    15.5    typedef typename Adapter::StorageType StorageType;
    15.6   private:
    15.7 -  intptr_t _stream_pos;
    15.8 +  int64_t _stream_pos;
    15.9    fio_fd _fd;
   15.10 -  intptr_t current_stream_position() const;
   15.11 +  int64_t current_stream_position() const;
   15.12  
   15.13   protected:
   15.14    StreamWriterHost(StorageType* storage, Thread* thread);
   15.15 @@ -47,8 +47,8 @@
   15.16    bool has_valid_fd() const;
   15.17  
   15.18   public:
   15.19 -  intptr_t current_offset() const;
   15.20 -  void seek(intptr_t offset);
   15.21 +  int64_t current_offset() const;
   15.22 +  void seek(int64_t offset);
   15.23    void flush();
   15.24    void write_unbuffered(const void* src, size_t len);
   15.25    bool is_valid() const;
    16.1 --- a/src/share/vm/jfr/writers/jfrStreamWriterHost.inline.hpp	Fri Dec 06 12:42:29 2019 +0100
    16.2 +++ b/src/share/vm/jfr/writers/jfrStreamWriterHost.inline.hpp	Tue Jun 16 11:03:04 2020 +0800
    16.3 @@ -44,7 +44,7 @@
    16.4  }
    16.5  
    16.6  template <typename Adapter, typename AP>
    16.7 -inline intptr_t StreamWriterHost<Adapter, AP>::current_stream_position() const {
    16.8 +inline int64_t StreamWriterHost<Adapter, AP>::current_stream_position() const {
    16.9    return this->used_offset() + _stream_pos;
   16.10  }
   16.11  
   16.12 @@ -73,7 +73,7 @@
   16.13  inline void StreamWriterHost<Adapter, AP>::flush(size_t size) {
   16.14    assert(size > 0, "invariant");
   16.15    assert(this->is_valid(), "invariant");
   16.16 -  _stream_pos += os::write(_fd, this->start_pos(), (int)size);
   16.17 +  _stream_pos += os::write(_fd, this->start_pos(), (unsigned int)size);
   16.18    StorageHost<Adapter, AP>::reset();
   16.19    assert(0 == this->used_offset(), "invariant");
   16.20  }
   16.21 @@ -84,12 +84,12 @@
   16.22  }
   16.23  
   16.24  template <typename Adapter, typename AP>
   16.25 -inline intptr_t StreamWriterHost<Adapter, AP>::current_offset() const {
   16.26 +inline int64_t StreamWriterHost<Adapter, AP>::current_offset() const {
   16.27    return current_stream_position();
   16.28  }
   16.29  
   16.30  template <typename Adapter, typename AP>
   16.31 -void StreamWriterHost<Adapter, AP>::seek(intptr_t offset) {
   16.32 +void StreamWriterHost<Adapter, AP>::seek(int64_t offset) {
   16.33    this->flush();
   16.34    assert(0 == this->used_offset(), "can only seek from beginning");
   16.35    _stream_pos = os::seek_to_file_offset(_fd, offset);
   16.36 @@ -110,7 +110,7 @@
   16.37    this->flush();
   16.38    assert(0 == this->used_offset(), "can only seek from beginning");
   16.39    while (len > 0) {
   16.40 -    const int n = MIN2<int>((int)len, INT_MAX);
   16.41 +    const unsigned int n = MIN2((unsigned int)len, (unsigned int)INT_MAX);
   16.42      _stream_pos += os::write(_fd, buf, n);
   16.43      len -= n;
   16.44    }
    17.1 --- a/src/share/vm/jfr/writers/jfrWriterHost.hpp	Fri Dec 06 12:42:29 2019 +0100
    17.2 +++ b/src/share/vm/jfr/writers/jfrWriterHost.hpp	Tue Jun 16 11:03:04 2020 +0800
    17.3 @@ -87,12 +87,12 @@
    17.4    void bytes(const void* buf, size_t len);
    17.5    void write_utf8_u2_len(const char* value);
    17.6    template <typename T>
    17.7 -  void write_padded_at_offset(T value, intptr_t offset);
    17.8 +  void write_padded_at_offset(T value, int64_t offset);
    17.9    template <typename T>
   17.10 -  void write_at_offset(T value, intptr_t offset);
   17.11 +  void write_at_offset(T value, int64_t offset);
   17.12    template <typename T>
   17.13 -  void write_be_at_offset(T value, intptr_t offset);
   17.14 -  intptr_t reserve(size_t size);
   17.15 +  void write_be_at_offset(T value, int64_t offset);
   17.16 +  int64_t reserve(size_t size);
   17.17  };
   17.18  
   17.19  #endif // SHARE_VM_JFR_WRITERS_JFRWRITERHOST_HPP
    18.1 --- a/src/share/vm/jfr/writers/jfrWriterHost.inline.hpp	Fri Dec 06 12:42:29 2019 +0100
    18.2 +++ b/src/share/vm/jfr/writers/jfrWriterHost.inline.hpp	Tue Jun 16 11:03:04 2020 +0800
    18.3 @@ -306,9 +306,9 @@
    18.4  }
    18.5  
    18.6  template <typename BE, typename IE, typename WriterPolicyImpl>
    18.7 -inline intptr_t WriterHost<BE, IE, WriterPolicyImpl>::reserve(size_t size) {
    18.8 +inline int64_t WriterHost<BE, IE, WriterPolicyImpl>::reserve(size_t size) {
    18.9    if (ensure_size(size) != NULL) {
   18.10 -    intptr_t reserved_offset = this->current_offset();
   18.11 +    const int64_t reserved_offset = this->current_offset();
   18.12      this->set_current_pos(size);
   18.13      return reserved_offset;
   18.14    }
   18.15 @@ -318,9 +318,9 @@
   18.16  
   18.17  template <typename BE, typename IE, typename WriterPolicyImpl>
   18.18  template <typename T>
   18.19 -inline void WriterHost<BE, IE, WriterPolicyImpl>::write_padded_at_offset(T value, intptr_t offset) {
   18.20 +inline void WriterHost<BE, IE, WriterPolicyImpl>::write_padded_at_offset(T value, int64_t offset) {
   18.21    if (this->is_valid()) {
   18.22 -    const intptr_t current = this->current_offset();
   18.23 +    const int64_t current = this->current_offset();
   18.24      this->seek(offset);
   18.25      write_padded(value);
   18.26      this->seek(current); // restore
   18.27 @@ -329,9 +329,9 @@
   18.28  
   18.29  template <typename BE, typename IE, typename WriterPolicyImpl>
   18.30  template <typename T>
   18.31 -inline void WriterHost<BE, IE, WriterPolicyImpl>::write_at_offset(T value, intptr_t offset) {
   18.32 +inline void WriterHost<BE, IE, WriterPolicyImpl>::write_at_offset(T value, int64_t offset) {
   18.33    if (this->is_valid()) {
   18.34 -    const intptr_t current = this->current_offset();
   18.35 +    const int64_t current = this->current_offset();
   18.36      this->seek(offset);
   18.37      write(value);
   18.38      this->seek(current); // restore
   18.39 @@ -340,9 +340,9 @@
   18.40  
   18.41  template <typename BE, typename IE, typename WriterPolicyImpl>
   18.42  template <typename T>
   18.43 -inline void WriterHost<BE, IE, WriterPolicyImpl>::write_be_at_offset(T value, intptr_t offset) {
   18.44 +inline void WriterHost<BE, IE, WriterPolicyImpl>::write_be_at_offset(T value, int64_t offset) {
   18.45    if (this->is_valid()) {
   18.46 -    const intptr_t current = this->current_offset();
   18.47 +    const int64_t current = this->current_offset();
   18.48      this->seek(offset);
   18.49      be_write(value);
   18.50      this->seek(current); // restore

mercurial