Mercurial > hg > truffle
annotate src/share/tools/hsdis/hsdis.h @ 1299:9eba43136cb5
6934494: JSR 292 MethodHandles adapters should be generated into their own CodeBlob
Summary: Passing a null pointer to an InvokeDynamic function call should lead to a NullPointerException.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Tue, 16 Mar 2010 11:52:17 +0100 |
parents | c7c777385a15 |
children | c18cbe5936b8 |
rev | line source |
---|---|
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
1 /* |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
2 * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
4 * |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
8 * |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
13 * accompanied this code). |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
14 * |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
18 * |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
20 * CA 95054 USA or visit www.sun.com if you need additional information or |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
21 * have any questions. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
22 * |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
23 */ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
24 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
25 /* decode_instructions -- dump a range of addresses as native instructions |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
26 This implements the protocol required by the HotSpot PrintAssembly option. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
27 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
28 The starting and ending addresses are within the current process's address space. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
29 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
30 The option string, if not empty, is interpreted by the disassembler implementation. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
31 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
32 The printf callback is 'fprintf' or any other workalike. |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
33 It is called as (*printf_callback)(printf_stream, "some format...", some, format, args). |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
34 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
35 The event callback receives an event tag (a string) and an argument (a void*). |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
36 It is called as (*event_callback)(event_stream, "tag", arg). |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
37 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
38 Events: |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
39 <insn pc='%p'> begin an instruction, at a given location |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
40 </insn pc='%d'> end an instruction, at a given location |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
41 <addr value='%p'/> emit the symbolic value of an address |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
42 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
43 A tag format is one of three basic forms: "tag", "/tag", "tag/", |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
44 where tag is a simple identifier, signifying (as in XML) a element start, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
45 element end, and standalone element. (To render as XML, add angle brackets.) |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
46 */ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
47 extern |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
48 #ifdef DLL_EXPORT |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
49 DLL_EXPORT |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
50 #endif |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
51 void* decode_instructions(void* start, void* end, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
52 void* (*event_callback)(void*, const char*, void*), |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
53 void* event_stream, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
54 int (*printf_callback)(void*, const char*, ...), |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
55 void* printf_stream, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
56 const char* options); |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
57 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
58 /* convenience typedefs */ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
59 |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
60 typedef void* (*decode_instructions_event_callback_ftype) (void*, const char*, void*); |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
61 typedef int (*decode_instructions_printf_callback_ftype) (void*, const char*, ...); |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
62 typedef void* (*decode_instructions_ftype) (void* start, void* end, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
63 decode_instructions_event_callback_ftype event_callback, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
64 void* event_stream, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
65 decode_instructions_printf_callback_ftype printf_callback, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
66 void* printf_stream, |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
diff
changeset
|
67 const char* options); |