annotate src/cpu/zero/vm/frame_zero.inline.hpp @ 9790:6b515c453646

CompilationTask: print exception of compilation also when we don't exit the VM for example, this is useful for CTW, in order to see on which methods the compiler bails out
author Bernhard Urban <bernhard.urban@jku.at>
date Wed, 22 May 2013 16:28:12 +0200
parents c566b81b3323
children c54a3122f9c8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
1 /*
4806
eaa9557116a2 7120448: Fix FP values for compiled frames in frame::describe
bdelsart
parents: 1972
diff changeset
2 * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1010
diff changeset
3 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
5 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
6 * This code is free software; you can redistribute it and/or modify it
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
7 * under the terms of the GNU General Public License version 2 only, as
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
8 * published by the Free Software Foundation.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
9 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
10 * This code is distributed in the hope that it will be useful, but WITHOUT
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
13 * version 2 for more details (a copy is included in the LICENSE file that
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
14 * accompanied this code).
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
15 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License version
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
17 * 2 along with this work; if not, write to the Free Software Foundation,
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
19 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1505
diff changeset
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1505
diff changeset
21 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1505
diff changeset
22 * questions.
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
23 *
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
24 */
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
25
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
26 #ifndef CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
27 #define CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
28
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
29 // Constructors
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
30
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
31 inline frame::frame() {
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1010
diff changeset
32 _zeroframe = NULL;
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
33 _sp = NULL;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
34 _pc = NULL;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
35 _cb = NULL;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
36 _deopt_state = unknown;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
37 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
38
6926
a3e2f723f2a5 8000780: make Zero build and run with JDK8
twisti
parents: 6725
diff changeset
39 inline address frame::sender_pc() const { ShouldNotCallThis(); }
a3e2f723f2a5 8000780: make Zero build and run with JDK8
twisti
parents: 6725
diff changeset
40
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1010
diff changeset
41 inline frame::frame(ZeroFrame* zf, intptr_t* sp) {
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1010
diff changeset
42 _zeroframe = zf;
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
43 _sp = sp;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
44 switch (zeroframe()->type()) {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
45 case ZeroFrame::ENTRY_FRAME:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
46 _pc = StubRoutines::call_stub_return_pc();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
47 _cb = NULL;
7599
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
48 _deopt_state = not_deoptimized;
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
49 break;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
50
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
51 case ZeroFrame::INTERPRETER_FRAME:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
52 _pc = NULL;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
53 _cb = NULL;
7599
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
54 _deopt_state = not_deoptimized;
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
55 break;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
56
7599
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
57 case ZeroFrame::SHARK_FRAME: {
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
58 _pc = zero_sharkframe()->pc();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
59 _cb = CodeCache::find_blob_unsafe(pc());
7599
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
60 address original_pc = nmethod::get_deopt_original_pc(this);
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
61 if (original_pc != NULL) {
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
62 _pc = original_pc;
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
63 _deopt_state = is_deoptimized;
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
64 } else {
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
65 _deopt_state = not_deoptimized;
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
66 }
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
67 break;
7599
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
68 }
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
69 case ZeroFrame::FAKE_STUB_FRAME:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
70 _pc = NULL;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
71 _cb = NULL;
7599
c566b81b3323 8005817: Shark: implement deoptimization support
twisti
parents: 6926
diff changeset
72 _deopt_state = not_deoptimized;
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
73 break;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
74
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
75 default:
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
76 ShouldNotReachHere();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
77 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
78 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
79
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
80 // Accessors
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
81
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
82 inline intptr_t* frame::sender_sp() const {
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1010
diff changeset
83 return fp() + 1;
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
84 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
85
4806
eaa9557116a2 7120448: Fix FP values for compiled frames in frame::describe
bdelsart
parents: 1972
diff changeset
86 inline intptr_t* frame::real_fp() const {
eaa9557116a2 7120448: Fix FP values for compiled frames in frame::describe
bdelsart
parents: 1972
diff changeset
87 return fp();
eaa9557116a2 7120448: Fix FP values for compiled frames in frame::describe
bdelsart
parents: 1972
diff changeset
88 }
eaa9557116a2 7120448: Fix FP values for compiled frames in frame::describe
bdelsart
parents: 1972
diff changeset
89
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
90 inline intptr_t* frame::link() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
91 ShouldNotCallThis();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
92 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
93
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
94 #ifdef CC_INTERP
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
95 inline interpreterState frame::get_interpreterState() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
96 return zero_interpreterframe()->interpreter_state();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
97 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
98
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
99 inline intptr_t** frame::interpreter_frame_locals_addr() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
100 return &(get_interpreterState()->_locals);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
101 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
102
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
103 inline intptr_t* frame::interpreter_frame_bcx_addr() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
104 return (intptr_t*) &(get_interpreterState()->_bcp);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
105 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
106
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 4806
diff changeset
107 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
108 return &(get_interpreterState()->_constants);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
109 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
110
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 4806
diff changeset
111 inline Method** frame::interpreter_frame_method_addr() const {
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
112 return &(get_interpreterState()->_method);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
113 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
114
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
115 inline intptr_t* frame::interpreter_frame_mdx_addr() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
116 return (intptr_t*) &(get_interpreterState()->_mdx);
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
117 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
118
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
119 inline intptr_t* frame::interpreter_frame_tos_address() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
120 return get_interpreterState()->_stack + 1;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
121 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
122 #endif // CC_INTERP
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
123
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
124 inline int frame::interpreter_frame_monitor_size() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
125 return BasicObjectLock::size();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
126 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
127
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
128 inline intptr_t* frame::interpreter_frame_expression_stack() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
129 intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
130 return monitor_end - 1;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
131 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
132
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
133 inline jint frame::interpreter_frame_expression_stack_direction() {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
134 return -1;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
135 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
136
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
137 // Return a unique id for this frame. The id must have a value where
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
138 // we can distinguish identity and younger/older relationship. NULL
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
139 // represents an invalid (incomparable) frame.
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
140 inline intptr_t* frame::id() const {
1505
0c5b3cf3c1f5 6939182: Zero JNI handles fix
twisti
parents: 1010
diff changeset
141 return fp();
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
142 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
143
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
144 inline JavaCallWrapper* frame::entry_frame_call_wrapper() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
145 return zero_entryframe()->call_wrapper();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
146 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
147
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
148 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
149 ShouldNotCallThis();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
150 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
151
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
152 inline oop frame::saved_oop_result(RegisterMap* map) const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
153 ShouldNotCallThis();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
154 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
155
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
156 inline bool frame::is_older(intptr_t* id) const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
157 ShouldNotCallThis();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
158 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
159
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
160 inline intptr_t* frame::entry_frame_argument_at(int offset) const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
161 ShouldNotCallThis();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
162 }
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
163
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
164 inline intptr_t* frame::unextended_sp() const {
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
165 if (zeroframe()->is_shark_frame())
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
166 return zero_sharkframe()->unextended_sp();
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
167 else
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
168 return (intptr_t *) -1;
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents:
diff changeset
169 }
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
170
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
171 #endif // CPU_ZERO_VM_FRAME_ZERO_INLINE_HPP