Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/src/share/vm/compiler/disassembler.hpp
32285 views
1
/*
2
* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*
23
*/
24
25
#ifndef SHARE_VM_COMPILER_DISASSEMBLER_HPP
26
#define SHARE_VM_COMPILER_DISASSEMBLER_HPP
27
28
#include "asm/codeBuffer.hpp"
29
#include "runtime/globals.hpp"
30
#ifdef TARGET_OS_FAMILY_linux
31
# include "os_linux.inline.hpp"
32
#endif
33
#ifdef TARGET_OS_FAMILY_solaris
34
# include "os_solaris.inline.hpp"
35
#endif
36
#ifdef TARGET_OS_FAMILY_windows
37
# include "os_windows.inline.hpp"
38
#endif
39
#ifdef TARGET_OS_FAMILY_aix
40
# include "os_aix.inline.hpp"
41
#endif
42
#ifdef TARGET_OS_FAMILY_bsd
43
# include "os_bsd.inline.hpp"
44
#endif
45
46
class decode_env;
47
48
// The disassembler prints out assembly code annotated
49
// with Java specific information.
50
51
class Disassembler {
52
friend class decode_env;
53
private:
54
// this is the type of the dll entry point:
55
typedef void* (*decode_func_virtual)(uintptr_t start_va, uintptr_t end_va,
56
unsigned char* buffer, uintptr_t length,
57
void* (*event_callback)(void*, const char*, void*),
58
void* event_stream,
59
int (*printf_callback)(void*, const char*, ...),
60
void* printf_stream,
61
const char* options,
62
int newline);
63
// this is the type of the dll entry point for old version:
64
typedef void* (*decode_func)(void* start_va, void* end_va,
65
void* (*event_callback)(void*, const char*, void*),
66
void* event_stream,
67
int (*printf_callback)(void*, const char*, ...),
68
void* printf_stream,
69
const char* options);
70
// points to the library.
71
static void* _library;
72
// bailout
73
static bool _tried_to_load_library;
74
// points to the decode function.
75
static decode_func_virtual _decode_instructions_virtual;
76
static decode_func _decode_instructions;
77
// tries to load library and return whether it succedded.
78
static bool load_library();
79
80
// Machine dependent stuff
81
#ifdef TARGET_ARCH_x86
82
# include "disassembler_x86.hpp"
83
#endif
84
#ifdef TARGET_ARCH_aarch32
85
# include "disassembler_aarch32.hpp"
86
#endif
87
#ifdef TARGET_ARCH_aarch64
88
# include "disassembler_aarch64.hpp"
89
#endif
90
#ifdef TARGET_ARCH_sparc
91
# include "disassembler_sparc.hpp"
92
#endif
93
#ifdef TARGET_ARCH_zero
94
# include "disassembler_zero.hpp"
95
#endif
96
#ifdef TARGET_ARCH_arm
97
# include "disassembler_arm.hpp"
98
#endif
99
#ifdef TARGET_ARCH_ppc
100
# include "disassembler_ppc.hpp"
101
#endif
102
103
104
public:
105
static bool can_decode() {
106
return (_decode_instructions_virtual != NULL) ||
107
(_decode_instructions != NULL) ||
108
load_library();
109
}
110
static void decode(CodeBlob *cb, outputStream* st = NULL);
111
static void decode(nmethod* nm, outputStream* st = NULL);
112
static void decode(address begin, address end, outputStream* st = NULL, CodeStrings c = CodeStrings());
113
};
114
115
#endif // SHARE_VM_COMPILER_DISASSEMBLER_HPP
116
117