< 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 >