< prev index next >

src/share/vm/utilities/decoder.hpp

Print this page
rev 13549 : 8185712: [windows] Improve native symbol decoder
Reviewed-by: goetz, zgu

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1997, 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -56,12 +56,10 @@
                       const char* modulepath = NULL, bool demangle = true) = 0;
   virtual bool decode(address pc, char* buf, int buflen, int* offset, const void* base) = 0;
 
   // demangle a C++ symbol
   virtual bool demangle(const char* symbol, char* buf, int buflen) = 0;
-  // if the decoder can decode symbols in vm
-  virtual bool can_decode_C_frame_in_vm() const = 0;
 
   virtual decoder_status status() const {
     return _decoder_status;
   }
 

@@ -97,13 +95,10 @@
 
   virtual bool demangle(const char* symbol, char* buf, int buflen) {
     return false;
   }
 
-  virtual bool can_decode_C_frame_in_vm() const {
-    return false;
-  }
 };
 
 
 class Decoder : AllStatic {
 public:

@@ -111,14 +106,15 @@
   static bool decode(address pc, char* buf, int buflen, int* offset, bool demangle) {
     return decode(pc, buf, buflen, offset, (const char*) NULL, demangle);
   }
   static bool decode(address pc, char* buf, int buflen, int* offset, const void* base);
   static bool demangle(const char* symbol, char* buf, int buflen);
-  static bool can_decode_C_frame_in_vm();
 
-  // shutdown shared instance
-  static void shutdown();
+  // Attempts to retrieve source file name and line number associated with a pc.
+  // If buf != NULL, points to a buffer of size buflen which will receive the
+  // file name. File name will be silently truncated if output buffer is too small.
+  static bool get_source_info(address pc, char* buf, size_t buflen, int* line);
 
   static void print_state_on(outputStream* st);
 
 protected:
   // shared decoder instance, _shared_instance_lock is needed
< prev index next >