changeset 9281:4b0aa85a9565 jdk8u272-b06 jdk8u282-b00

8222079: Don't use memset to initialize fields decode_env constructor in disassembler.cpp Reviewed-by: zgu, andrew
author rkennke
date Tue, 25 Aug 2020 13:30:02 +0200
parents 34f5c1a4ba37
children 4689eaf1a5c9
files src/share/vm/compiler/disassembler.cpp
diffstat 1 files changed, 17 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/compiler/disassembler.cpp	Thu Aug 27 21:00:00 2020 -0300
+++ b/src/share/vm/compiler/disassembler.cpp	Tue Aug 25 13:30:02 2020 +0200
@@ -244,19 +244,25 @@
   const char* options() { return _option_buf; }
 };
 
-decode_env::decode_env(CodeBlob* code, outputStream* output, CodeStrings c) {
-  memset(this, 0, sizeof(*this)); // Beware, this zeroes bits of fields.
-  _output = output ? output : tty;
-  _code = code;
-  if (code != NULL && code->is_nmethod())
-    _nm = (nmethod*) code;
+decode_env::decode_env(CodeBlob* code, outputStream* output, CodeStrings c) :
+  _nm((code != NULL && code->is_nmethod()) ? (nmethod*)code : NULL),
+  _code(code),
+  _strings(),
+  _output(output ? output : tty),
+  _start(NULL),
+  _end(NULL),
+  _option_buf(),
+  _print_raw(0),
+  // by default, output pc but not bytes:
+  _print_pc(true),
+  _print_bytes(false),
+  _cur_insn(NULL),
+  _total_ticks(0),
+  _bytes_per_line(Disassembler::pd_instruction_alignment())
+{
+  memset(_option_buf, 0, sizeof(_option_buf));
   _strings.copy(c);
 
-  // by default, output pc but not bytes:
-  _print_pc       = true;
-  _print_bytes    = false;
-  _bytes_per_line = Disassembler::pd_instruction_alignment();
-
   // parse the global option string:
   collect_options(Disassembler::pd_cpu_opts());
   collect_options(PrintAssemblyOptions);