annotate src/os/solaris/dtrace/jhelper.d @ 4582:b24386206122

Made all vm builds go into subdirectories, even product builds to simplify building the various types of VMs (server, client and graal). Made HotSpot build jobs use the number of CPUs on the host machine.
author Doug Simon <doug.simon@oracle.com>
date Mon, 13 Feb 2012 23:13:37 +0100
parents 1d1603768966
children 2fe087c3e814
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
2426
1d1603768966 7010070: Update all 2010 Oracle-changed OpenJDK files to have the proper copyright dates - second pass
trims
parents: 2177
diff changeset
2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 /* This file is auto-generated */
a61af66fc99e Initial load
duke
parents:
diff changeset
26 #include "JvmOffsetsIndex.h"
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28 #define DEBUG
a61af66fc99e Initial load
duke
parents:
diff changeset
29
a61af66fc99e Initial load
duke
parents:
diff changeset
30 #ifdef DEBUG
a61af66fc99e Initial load
duke
parents:
diff changeset
31 #define MARK_LINE this->line = __LINE__
a61af66fc99e Initial load
duke
parents:
diff changeset
32 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
33 #define MARK_LINE
a61af66fc99e Initial load
duke
parents:
diff changeset
34 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
35
a61af66fc99e Initial load
duke
parents:
diff changeset
36 #ifdef _LP64
a61af66fc99e Initial load
duke
parents:
diff changeset
37 #define STACK_BIAS 0x7ff
a61af66fc99e Initial load
duke
parents:
diff changeset
38 #define pointer uint64_t
a61af66fc99e Initial load
duke
parents:
diff changeset
39 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
40 #define STACK_BIAS 0
a61af66fc99e Initial load
duke
parents:
diff changeset
41 #define pointer uint32_t
a61af66fc99e Initial load
duke
parents:
diff changeset
42 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
43
a61af66fc99e Initial load
duke
parents:
diff changeset
44 extern pointer __JvmOffsets;
a61af66fc99e Initial load
duke
parents:
diff changeset
45
a61af66fc99e Initial load
duke
parents:
diff changeset
46 extern pointer __1cJCodeCacheF_heap_;
a61af66fc99e Initial load
duke
parents:
diff changeset
47 extern pointer __1cIUniverseP_methodKlassObj_;
a61af66fc99e Initial load
duke
parents:
diff changeset
48 extern pointer __1cIUniverseO_collectedHeap_;
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
49 extern pointer __1cIUniverseL_narrow_oop_;
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
50 #ifdef _LP64
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
51 extern pointer UseCompressedOops;
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
52 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
53
a61af66fc99e Initial load
duke
parents:
diff changeset
54 extern pointer __1cHnmethodG__vtbl_;
a61af66fc99e Initial load
duke
parents:
diff changeset
55 extern pointer __1cKBufferBlobG__vtbl_;
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 #define copyin_ptr(ADDR) *(pointer*) copyin((pointer) (ADDR), sizeof(pointer))
a61af66fc99e Initial load
duke
parents:
diff changeset
58 #define copyin_uchar(ADDR) *(uchar_t*) copyin((pointer) (ADDR), sizeof(uchar_t))
a61af66fc99e Initial load
duke
parents:
diff changeset
59 #define copyin_uint16(ADDR) *(uint16_t*) copyin((pointer) (ADDR), sizeof(uint16_t))
a61af66fc99e Initial load
duke
parents:
diff changeset
60 #define copyin_uint32(ADDR) *(uint32_t*) copyin((pointer) (ADDR), sizeof(uint32_t))
a61af66fc99e Initial load
duke
parents:
diff changeset
61 #define copyin_int32(ADDR) *(int32_t*) copyin((pointer) (ADDR), sizeof(int32_t))
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
62 #define copyin_uint8(ADDR) *(uint8_t*) copyin((pointer) (ADDR), sizeof(uint8_t))
0
a61af66fc99e Initial load
duke
parents:
diff changeset
63
a61af66fc99e Initial load
duke
parents:
diff changeset
64 #define SAME(x) x
a61af66fc99e Initial load
duke
parents:
diff changeset
65 #define copyin_offset(JVM_CONST) JVM_CONST = \
a61af66fc99e Initial load
duke
parents:
diff changeset
66 copyin_int32(JvmOffsetsPtr + SAME(IDX_)JVM_CONST * sizeof(int32_t))
a61af66fc99e Initial load
duke
parents:
diff changeset
67
a61af66fc99e Initial load
duke
parents:
diff changeset
68 int init_done;
a61af66fc99e Initial load
duke
parents:
diff changeset
69
a61af66fc99e Initial load
duke
parents:
diff changeset
70 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
71 {
a61af66fc99e Initial load
duke
parents:
diff changeset
72 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
73 this->done = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
74 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
75 * TBD:
a61af66fc99e Initial load
duke
parents:
diff changeset
76 * Here we initialize init_done, otherwise jhelper does not work.
a61af66fc99e Initial load
duke
parents:
diff changeset
77 * Therefore, copyin_offset() statements work multiple times now.
a61af66fc99e Initial load
duke
parents:
diff changeset
78 * There is a hope we could avoid it in the future, and so,
a61af66fc99e Initial load
duke
parents:
diff changeset
79 * this initialization can be removed.
a61af66fc99e Initial load
duke
parents:
diff changeset
80 */
a61af66fc99e Initial load
duke
parents:
diff changeset
81 init_done = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
82 this->error = (char *) NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
83 this->result = (char *) NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
84 this->methodOop = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
85 this->codecache = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
86 this->klass = (pointer) NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
87 this->vtbl = (pointer) NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
88 this->suffix = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
89 }
a61af66fc99e Initial load
duke
parents:
diff changeset
90
a61af66fc99e Initial load
duke
parents:
diff changeset
91 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
92 {
a61af66fc99e Initial load
duke
parents:
diff changeset
93 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
94 /* Initialization of JvmOffsets constants */
a61af66fc99e Initial load
duke
parents:
diff changeset
95 JvmOffsetsPtr = (pointer) &``__JvmOffsets;
a61af66fc99e Initial load
duke
parents:
diff changeset
96 }
a61af66fc99e Initial load
duke
parents:
diff changeset
97
a61af66fc99e Initial load
duke
parents:
diff changeset
98 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
99 /!init_done && !this->done/
a61af66fc99e Initial load
duke
parents:
diff changeset
100 {
a61af66fc99e Initial load
duke
parents:
diff changeset
101 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
102 init_done = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
103
a61af66fc99e Initial load
duke
parents:
diff changeset
104 copyin_offset(COMPILER);
a61af66fc99e Initial load
duke
parents:
diff changeset
105 copyin_offset(OFFSET_CollectedHeap_reserved);
a61af66fc99e Initial load
duke
parents:
diff changeset
106 copyin_offset(OFFSET_MemRegion_start);
a61af66fc99e Initial load
duke
parents:
diff changeset
107 copyin_offset(OFFSET_MemRegion_word_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
108 copyin_offset(SIZE_HeapWord);
a61af66fc99e Initial load
duke
parents:
diff changeset
109
a61af66fc99e Initial load
duke
parents:
diff changeset
110 copyin_offset(OFFSET_interpreter_frame_method);
a61af66fc99e Initial load
duke
parents:
diff changeset
111 copyin_offset(OFFSET_Klass_name);
a61af66fc99e Initial load
duke
parents:
diff changeset
112 copyin_offset(OFFSET_constantPoolOopDesc_pool_holder);
a61af66fc99e Initial load
duke
parents:
diff changeset
113
a61af66fc99e Initial load
duke
parents:
diff changeset
114 copyin_offset(OFFSET_HeapBlockHeader_used);
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
115 copyin_offset(OFFSET_oopDesc_metadata);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
116
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
117 copyin_offset(OFFSET_Symbol_length);
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
118 copyin_offset(OFFSET_Symbol_body);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 copyin_offset(OFFSET_methodOopDesc_constMethod);
a61af66fc99e Initial load
duke
parents:
diff changeset
121 copyin_offset(OFFSET_methodOopDesc_constants);
a61af66fc99e Initial load
duke
parents:
diff changeset
122 copyin_offset(OFFSET_constMethodOopDesc_name_index);
a61af66fc99e Initial load
duke
parents:
diff changeset
123 copyin_offset(OFFSET_constMethodOopDesc_signature_index);
a61af66fc99e Initial load
duke
parents:
diff changeset
124
a61af66fc99e Initial load
duke
parents:
diff changeset
125 copyin_offset(OFFSET_CodeHeap_memory);
a61af66fc99e Initial load
duke
parents:
diff changeset
126 copyin_offset(OFFSET_CodeHeap_segmap);
a61af66fc99e Initial load
duke
parents:
diff changeset
127 copyin_offset(OFFSET_CodeHeap_log2_segment_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
128
a61af66fc99e Initial load
duke
parents:
diff changeset
129 copyin_offset(OFFSET_VirtualSpace_low);
a61af66fc99e Initial load
duke
parents:
diff changeset
130 copyin_offset(OFFSET_VirtualSpace_high);
a61af66fc99e Initial load
duke
parents:
diff changeset
131
a61af66fc99e Initial load
duke
parents:
diff changeset
132 copyin_offset(OFFSET_CodeBlob_name);
a61af66fc99e Initial load
duke
parents:
diff changeset
133
a61af66fc99e Initial load
duke
parents:
diff changeset
134 copyin_offset(OFFSET_nmethod_method);
a61af66fc99e Initial load
duke
parents:
diff changeset
135 copyin_offset(SIZE_HeapBlockHeader);
a61af66fc99e Initial load
duke
parents:
diff changeset
136 copyin_offset(SIZE_oopDesc);
a61af66fc99e Initial load
duke
parents:
diff changeset
137 copyin_offset(SIZE_constantPoolOopDesc);
a61af66fc99e Initial load
duke
parents:
diff changeset
138
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
139 copyin_offset(OFFSET_NarrowOopStruct_base);
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
140 copyin_offset(OFFSET_NarrowOopStruct_shift);
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
141
0
a61af66fc99e Initial load
duke
parents:
diff changeset
142 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
143 * The PC to translate is in arg0.
a61af66fc99e Initial load
duke
parents:
diff changeset
144 */
a61af66fc99e Initial load
duke
parents:
diff changeset
145 this->pc = arg0;
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
148 * The methodOopPtr is in %l2 on SPARC. This can be found at
a61af66fc99e Initial load
duke
parents:
diff changeset
149 * offset 8 from the frame pointer on 32-bit processes.
a61af66fc99e Initial load
duke
parents:
diff changeset
150 */
a61af66fc99e Initial load
duke
parents:
diff changeset
151 #if defined(__sparc)
a61af66fc99e Initial load
duke
parents:
diff changeset
152 this->methodOopPtr = copyin_ptr(arg1 + 2 * sizeof(pointer) + STACK_BIAS);
a61af66fc99e Initial load
duke
parents:
diff changeset
153 #elif defined(__i386) || defined(__amd64)
a61af66fc99e Initial load
duke
parents:
diff changeset
154 this->methodOopPtr = copyin_ptr(arg1 + OFFSET_interpreter_frame_method);
a61af66fc99e Initial load
duke
parents:
diff changeset
155 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
156 #error "Don't know architecture"
a61af66fc99e Initial load
duke
parents:
diff changeset
157 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
158
a61af66fc99e Initial load
duke
parents:
diff changeset
159 this->Universe_methodKlassOop = copyin_ptr(&``__1cIUniverseP_methodKlassObj_);
a61af66fc99e Initial load
duke
parents:
diff changeset
160 this->CodeCache_heap_address = copyin_ptr(&``__1cJCodeCacheF_heap_);
a61af66fc99e Initial load
duke
parents:
diff changeset
161
a61af66fc99e Initial load
duke
parents:
diff changeset
162 /* Reading volatile values */
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
163 #ifdef _LP64
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
164 this->Use_Compressed_Oops = copyin_uint8(&``UseCompressedOops);
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
165 #else
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
166 this->Use_Compressed_Oops = 0;
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
167 #endif
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
168
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
169 this->Universe_narrow_oop_base = copyin_ptr(&``__1cIUniverseL_narrow_oop_ +
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
170 OFFSET_NarrowOopStruct_base);
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
171 this->Universe_narrow_oop_shift = copyin_int32(&``__1cIUniverseL_narrow_oop_ +
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
172 OFFSET_NarrowOopStruct_shift);
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
173
0
a61af66fc99e Initial load
duke
parents:
diff changeset
174 this->CodeCache_low = copyin_ptr(this->CodeCache_heap_address +
a61af66fc99e Initial load
duke
parents:
diff changeset
175 OFFSET_CodeHeap_memory + OFFSET_VirtualSpace_low);
a61af66fc99e Initial load
duke
parents:
diff changeset
176
a61af66fc99e Initial load
duke
parents:
diff changeset
177 this->CodeCache_high = copyin_ptr(this->CodeCache_heap_address +
a61af66fc99e Initial load
duke
parents:
diff changeset
178 OFFSET_CodeHeap_memory + OFFSET_VirtualSpace_high);
a61af66fc99e Initial load
duke
parents:
diff changeset
179
a61af66fc99e Initial load
duke
parents:
diff changeset
180 this->CodeCache_segmap_low = copyin_ptr(this->CodeCache_heap_address +
a61af66fc99e Initial load
duke
parents:
diff changeset
181 OFFSET_CodeHeap_segmap + OFFSET_VirtualSpace_low);
a61af66fc99e Initial load
duke
parents:
diff changeset
182
a61af66fc99e Initial load
duke
parents:
diff changeset
183 this->CodeCache_segmap_high = copyin_ptr(this->CodeCache_heap_address +
a61af66fc99e Initial load
duke
parents:
diff changeset
184 OFFSET_CodeHeap_segmap + OFFSET_VirtualSpace_high);
a61af66fc99e Initial load
duke
parents:
diff changeset
185
a61af66fc99e Initial load
duke
parents:
diff changeset
186 this->CodeHeap_log2_segment_size = copyin_uint32(
a61af66fc99e Initial load
duke
parents:
diff changeset
187 this->CodeCache_heap_address + OFFSET_CodeHeap_log2_segment_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
188
a61af66fc99e Initial load
duke
parents:
diff changeset
189 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
190 * Get Java heap bounds
a61af66fc99e Initial load
duke
parents:
diff changeset
191 */
a61af66fc99e Initial load
duke
parents:
diff changeset
192 this->Universe_collectedHeap = copyin_ptr(&``__1cIUniverseO_collectedHeap_);
a61af66fc99e Initial load
duke
parents:
diff changeset
193 this->heap_start = copyin_ptr(this->Universe_collectedHeap +
a61af66fc99e Initial load
duke
parents:
diff changeset
194 OFFSET_CollectedHeap_reserved +
a61af66fc99e Initial load
duke
parents:
diff changeset
195 OFFSET_MemRegion_start);
a61af66fc99e Initial load
duke
parents:
diff changeset
196 this->heap_size = SIZE_HeapWord *
a61af66fc99e Initial load
duke
parents:
diff changeset
197 copyin_ptr(this->Universe_collectedHeap +
a61af66fc99e Initial load
duke
parents:
diff changeset
198 OFFSET_CollectedHeap_reserved +
a61af66fc99e Initial load
duke
parents:
diff changeset
199 OFFSET_MemRegion_word_size
a61af66fc99e Initial load
duke
parents:
diff changeset
200 );
a61af66fc99e Initial load
duke
parents:
diff changeset
201 this->heap_end = this->heap_start + this->heap_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
202 }
a61af66fc99e Initial load
duke
parents:
diff changeset
203
a61af66fc99e Initial load
duke
parents:
diff changeset
204 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
205 /!this->done &&
a61af66fc99e Initial load
duke
parents:
diff changeset
206 this->CodeCache_low <= this->pc && this->pc < this->CodeCache_high/
a61af66fc99e Initial load
duke
parents:
diff changeset
207 {
a61af66fc99e Initial load
duke
parents:
diff changeset
208 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
209 this->codecache = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
210
a61af66fc99e Initial load
duke
parents:
diff changeset
211 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
212 * Find start.
a61af66fc99e Initial load
duke
parents:
diff changeset
213 */
a61af66fc99e Initial load
duke
parents:
diff changeset
214 this->segment = (this->pc - this->CodeCache_low) >>
a61af66fc99e Initial load
duke
parents:
diff changeset
215 this->CodeHeap_log2_segment_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
216 this->block = this->CodeCache_segmap_low;
a61af66fc99e Initial load
duke
parents:
diff changeset
217 this->tag = copyin_uchar(this->block + this->segment);
a61af66fc99e Initial load
duke
parents:
diff changeset
218 "second";
a61af66fc99e Initial load
duke
parents:
diff changeset
219 }
a61af66fc99e Initial load
duke
parents:
diff changeset
220
a61af66fc99e Initial load
duke
parents:
diff changeset
221 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
222 /!this->done && this->codecache && this->tag > 0/
a61af66fc99e Initial load
duke
parents:
diff changeset
223 {
a61af66fc99e Initial load
duke
parents:
diff changeset
224 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
225 this->tag = copyin_uchar(this->block + this->segment);
a61af66fc99e Initial load
duke
parents:
diff changeset
226 this->segment = this->segment - this->tag;
a61af66fc99e Initial load
duke
parents:
diff changeset
227 }
a61af66fc99e Initial load
duke
parents:
diff changeset
228
a61af66fc99e Initial load
duke
parents:
diff changeset
229 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
230 /!this->done && this->codecache && this->tag > 0/
a61af66fc99e Initial load
duke
parents:
diff changeset
231 {
a61af66fc99e Initial load
duke
parents:
diff changeset
232 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
233 this->tag = copyin_uchar(this->block + this->segment);
a61af66fc99e Initial load
duke
parents:
diff changeset
234 this->segment = this->segment - this->tag;
a61af66fc99e Initial load
duke
parents:
diff changeset
235 }
a61af66fc99e Initial load
duke
parents:
diff changeset
236
a61af66fc99e Initial load
duke
parents:
diff changeset
237 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
238 /!this->done && this->codecache && this->tag > 0/
a61af66fc99e Initial load
duke
parents:
diff changeset
239 {
a61af66fc99e Initial load
duke
parents:
diff changeset
240 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
241 this->tag = copyin_uchar(this->block + this->segment);
a61af66fc99e Initial load
duke
parents:
diff changeset
242 this->segment = this->segment - this->tag;
a61af66fc99e Initial load
duke
parents:
diff changeset
243 }
a61af66fc99e Initial load
duke
parents:
diff changeset
244
a61af66fc99e Initial load
duke
parents:
diff changeset
245 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
246 /!this->done && this->codecache && this->tag > 0/
a61af66fc99e Initial load
duke
parents:
diff changeset
247 {
a61af66fc99e Initial load
duke
parents:
diff changeset
248 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
249 this->tag = copyin_uchar(this->block + this->segment);
a61af66fc99e Initial load
duke
parents:
diff changeset
250 this->segment = this->segment - this->tag;
a61af66fc99e Initial load
duke
parents:
diff changeset
251 }
a61af66fc99e Initial load
duke
parents:
diff changeset
252
a61af66fc99e Initial load
duke
parents:
diff changeset
253 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
254 /!this->done && this->codecache && this->tag > 0/
a61af66fc99e Initial load
duke
parents:
diff changeset
255 {
a61af66fc99e Initial load
duke
parents:
diff changeset
256 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
257 this->tag = copyin_uchar(this->block + this->segment);
a61af66fc99e Initial load
duke
parents:
diff changeset
258 this->segment = this->segment - this->tag;
a61af66fc99e Initial load
duke
parents:
diff changeset
259 }
a61af66fc99e Initial load
duke
parents:
diff changeset
260
a61af66fc99e Initial load
duke
parents:
diff changeset
261 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
262 /!this->done && this->codecache && this->tag > 0/
a61af66fc99e Initial load
duke
parents:
diff changeset
263 {
a61af66fc99e Initial load
duke
parents:
diff changeset
264 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
265 this->error = "<couldn't find start>";
a61af66fc99e Initial load
duke
parents:
diff changeset
266 this->done = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
267 }
a61af66fc99e Initial load
duke
parents:
diff changeset
268
a61af66fc99e Initial load
duke
parents:
diff changeset
269 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
270 /!this->done && this->codecache/
a61af66fc99e Initial load
duke
parents:
diff changeset
271 {
a61af66fc99e Initial load
duke
parents:
diff changeset
272 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
273 this->block = this->CodeCache_low +
a61af66fc99e Initial load
duke
parents:
diff changeset
274 (this->segment << this->CodeHeap_log2_segment_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
275 this->used = copyin_uint32(this->block + OFFSET_HeapBlockHeader_used);
a61af66fc99e Initial load
duke
parents:
diff changeset
276 }
a61af66fc99e Initial load
duke
parents:
diff changeset
277
a61af66fc99e Initial load
duke
parents:
diff changeset
278 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
279 /!this->done && this->codecache && !this->used/
a61af66fc99e Initial load
duke
parents:
diff changeset
280 {
a61af66fc99e Initial load
duke
parents:
diff changeset
281 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
282 this->error = "<block not in use>";
a61af66fc99e Initial load
duke
parents:
diff changeset
283 this->done = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
284 }
a61af66fc99e Initial load
duke
parents:
diff changeset
285
a61af66fc99e Initial load
duke
parents:
diff changeset
286 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
287 /!this->done && this->codecache/
a61af66fc99e Initial load
duke
parents:
diff changeset
288 {
a61af66fc99e Initial load
duke
parents:
diff changeset
289 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
290 this->start = this->block + SIZE_HeapBlockHeader;
a61af66fc99e Initial load
duke
parents:
diff changeset
291 this->vtbl = copyin_ptr(this->start);
a61af66fc99e Initial load
duke
parents:
diff changeset
292
a61af66fc99e Initial load
duke
parents:
diff changeset
293 this->nmethod_vtbl = (pointer) &``__1cHnmethodG__vtbl_;
a61af66fc99e Initial load
duke
parents:
diff changeset
294 this->BufferBlob_vtbl = (pointer) &``__1cKBufferBlobG__vtbl_;
a61af66fc99e Initial load
duke
parents:
diff changeset
295 }
a61af66fc99e Initial load
duke
parents:
diff changeset
296
a61af66fc99e Initial load
duke
parents:
diff changeset
297 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
298 /!this->done && this->vtbl == this->nmethod_vtbl/
a61af66fc99e Initial load
duke
parents:
diff changeset
299 {
a61af66fc99e Initial load
duke
parents:
diff changeset
300 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
301 this->methodOopPtr = copyin_ptr(this->start + OFFSET_nmethod_method);
a61af66fc99e Initial load
duke
parents:
diff changeset
302 this->suffix = '*';
a61af66fc99e Initial load
duke
parents:
diff changeset
303 this->methodOop = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
304 }
a61af66fc99e Initial load
duke
parents:
diff changeset
305
a61af66fc99e Initial load
duke
parents:
diff changeset
306 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
307 /!this->done && this->vtbl == this->BufferBlob_vtbl/
a61af66fc99e Initial load
duke
parents:
diff changeset
308 {
a61af66fc99e Initial load
duke
parents:
diff changeset
309 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
310 this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name);
a61af66fc99e Initial load
duke
parents:
diff changeset
311 }
a61af66fc99e Initial load
duke
parents:
diff changeset
312
a61af66fc99e Initial load
duke
parents:
diff changeset
313 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
314 /!this->done && this->vtbl == this->BufferBlob_vtbl &&
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
315 this->Use_Compressed_Oops == 0 &&
0
a61af66fc99e Initial load
duke
parents:
diff changeset
316 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
a61af66fc99e Initial load
duke
parents:
diff changeset
317 {
a61af66fc99e Initial load
duke
parents:
diff changeset
318 MARK_LINE;
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
319 this->klass = copyin_ptr(this->methodOopPtr + OFFSET_oopDesc_metadata);
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
320 this->methodOop = this->klass == this->Universe_methodKlassOop;
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
321 this->done = !this->methodOop;
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
322 }
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
323
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
324 dtrace:helper:ustack:
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
325 /!this->done && this->vtbl == this->BufferBlob_vtbl &&
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
326 this->Use_Compressed_Oops != 0 &&
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
327 this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
328 {
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
329 MARK_LINE;
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
330 /*
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
331 * Read compressed pointer and decode heap oop, same as oop.inline.hpp
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
332 */
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 0
diff changeset
333 this->cklass = copyin_uint32(this->methodOopPtr + OFFSET_oopDesc_metadata);
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
334 this->klass = (uint64_t)((uintptr_t)this->Universe_narrow_oop_base +
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 196
diff changeset
335 ((uintptr_t)this->cklass << this->Universe_narrow_oop_shift));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
336 this->methodOop = this->klass == this->Universe_methodKlassOop;
a61af66fc99e Initial load
duke
parents:
diff changeset
337 this->done = !this->methodOop;
a61af66fc99e Initial load
duke
parents:
diff changeset
338 }
a61af66fc99e Initial load
duke
parents:
diff changeset
339
a61af66fc99e Initial load
duke
parents:
diff changeset
340 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
341 /!this->done && !this->methodOop/
a61af66fc99e Initial load
duke
parents:
diff changeset
342 {
a61af66fc99e Initial load
duke
parents:
diff changeset
343 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
344 this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name);
a61af66fc99e Initial load
duke
parents:
diff changeset
345 this->result = this->name != 0 ? copyinstr(this->name) : "<CodeBlob>";
a61af66fc99e Initial load
duke
parents:
diff changeset
346 this->done = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
347 }
a61af66fc99e Initial load
duke
parents:
diff changeset
348
a61af66fc99e Initial load
duke
parents:
diff changeset
349 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
350 /!this->done && this->methodOop/
a61af66fc99e Initial load
duke
parents:
diff changeset
351 {
a61af66fc99e Initial load
duke
parents:
diff changeset
352 MARK_LINE;
a61af66fc99e Initial load
duke
parents:
diff changeset
353 this->constMethod = copyin_ptr(this->methodOopPtr +
a61af66fc99e Initial load
duke
parents:
diff changeset
354 OFFSET_methodOopDesc_constMethod);
a61af66fc99e Initial load
duke
parents:
diff changeset
355
a61af66fc99e Initial load
duke
parents:
diff changeset
356 this->nameIndex = copyin_uint16(this->constMethod +
a61af66fc99e Initial load
duke
parents:
diff changeset
357 OFFSET_constMethodOopDesc_name_index);
a61af66fc99e Initial load
duke
parents:
diff changeset
358
a61af66fc99e Initial load
duke
parents:
diff changeset
359 this->signatureIndex = copyin_uint16(this->constMethod +
a61af66fc99e Initial load
duke
parents:
diff changeset
360 OFFSET_constMethodOopDesc_signature_index);
a61af66fc99e Initial load
duke
parents:
diff changeset
361
a61af66fc99e Initial load
duke
parents:
diff changeset
362 this->constantPool = copyin_ptr(this->methodOopPtr +
a61af66fc99e Initial load
duke
parents:
diff changeset
363 OFFSET_methodOopDesc_constants);
a61af66fc99e Initial load
duke
parents:
diff changeset
364
a61af66fc99e Initial load
duke
parents:
diff changeset
365 this->nameSymbol = copyin_ptr(this->constantPool +
a61af66fc99e Initial load
duke
parents:
diff changeset
366 this->nameIndex * sizeof (pointer) + SIZE_constantPoolOopDesc);
a61af66fc99e Initial load
duke
parents:
diff changeset
367
a61af66fc99e Initial load
duke
parents:
diff changeset
368 this->nameSymbolLength = copyin_uint16(this->nameSymbol +
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
369 OFFSET_Symbol_length);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
370
a61af66fc99e Initial load
duke
parents:
diff changeset
371 this->signatureSymbol = copyin_ptr(this->constantPool +
a61af66fc99e Initial load
duke
parents:
diff changeset
372 this->signatureIndex * sizeof (pointer) + SIZE_constantPoolOopDesc);
a61af66fc99e Initial load
duke
parents:
diff changeset
373
a61af66fc99e Initial load
duke
parents:
diff changeset
374 this->signatureSymbolLength = copyin_uint16(this->signatureSymbol +
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
375 OFFSET_Symbol_length);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
376
a61af66fc99e Initial load
duke
parents:
diff changeset
377 this->klassPtr = copyin_ptr(this->constantPool +
a61af66fc99e Initial load
duke
parents:
diff changeset
378 OFFSET_constantPoolOopDesc_pool_holder);
a61af66fc99e Initial load
duke
parents:
diff changeset
379
a61af66fc99e Initial load
duke
parents:
diff changeset
380 this->klassSymbol = copyin_ptr(this->klassPtr +
a61af66fc99e Initial load
duke
parents:
diff changeset
381 OFFSET_Klass_name + SIZE_oopDesc);
a61af66fc99e Initial load
duke
parents:
diff changeset
382
a61af66fc99e Initial load
duke
parents:
diff changeset
383 this->klassSymbolLength = copyin_uint16(this->klassSymbol +
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
384 OFFSET_Symbol_length);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
385
a61af66fc99e Initial load
duke
parents:
diff changeset
386 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
387 * Enough for three strings, plus the '.', plus the trailing '\0'.
a61af66fc99e Initial load
duke
parents:
diff changeset
388 */
a61af66fc99e Initial load
duke
parents:
diff changeset
389 this->result = (char *) alloca(this->klassSymbolLength +
a61af66fc99e Initial load
duke
parents:
diff changeset
390 this->nameSymbolLength +
a61af66fc99e Initial load
duke
parents:
diff changeset
391 this->signatureSymbolLength + 2 + 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
392
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
393 copyinto(this->klassSymbol + OFFSET_Symbol_body,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
394 this->klassSymbolLength, this->result);
a61af66fc99e Initial load
duke
parents:
diff changeset
395
a61af66fc99e Initial load
duke
parents:
diff changeset
396 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
397 * Add the '.' between the class and the name.
a61af66fc99e Initial load
duke
parents:
diff changeset
398 */
a61af66fc99e Initial load
duke
parents:
diff changeset
399 this->result[this->klassSymbolLength] = '.';
a61af66fc99e Initial load
duke
parents:
diff changeset
400
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
401 copyinto(this->nameSymbol + OFFSET_Symbol_body,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
402 this->nameSymbolLength,
a61af66fc99e Initial load
duke
parents:
diff changeset
403 this->result + this->klassSymbolLength + 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
404
2177
3582bf76420e 6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents: 1552
diff changeset
405 copyinto(this->signatureSymbol + OFFSET_Symbol_body,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
406 this->signatureSymbolLength,
a61af66fc99e Initial load
duke
parents:
diff changeset
407 this->result + this->klassSymbolLength +
a61af66fc99e Initial load
duke
parents:
diff changeset
408 this->nameSymbolLength + 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
409
a61af66fc99e Initial load
duke
parents:
diff changeset
410 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
411 * Now we need to add a trailing '\0' and possibly a tag character.
a61af66fc99e Initial load
duke
parents:
diff changeset
412 */
a61af66fc99e Initial load
duke
parents:
diff changeset
413 this->result[this->klassSymbolLength + 1 +
a61af66fc99e Initial load
duke
parents:
diff changeset
414 this->nameSymbolLength +
a61af66fc99e Initial load
duke
parents:
diff changeset
415 this->signatureSymbolLength] = this->suffix;
a61af66fc99e Initial load
duke
parents:
diff changeset
416 this->result[this->klassSymbolLength + 2 +
a61af66fc99e Initial load
duke
parents:
diff changeset
417 this->nameSymbolLength +
a61af66fc99e Initial load
duke
parents:
diff changeset
418 this->signatureSymbolLength] = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
419
a61af66fc99e Initial load
duke
parents:
diff changeset
420 this->done = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
421 }
a61af66fc99e Initial load
duke
parents:
diff changeset
422
a61af66fc99e Initial load
duke
parents:
diff changeset
423 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
424 /this->done && this->error == (char *) NULL/
a61af66fc99e Initial load
duke
parents:
diff changeset
425 {
a61af66fc99e Initial load
duke
parents:
diff changeset
426 this->result;
a61af66fc99e Initial load
duke
parents:
diff changeset
427 }
a61af66fc99e Initial load
duke
parents:
diff changeset
428
a61af66fc99e Initial load
duke
parents:
diff changeset
429 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
430 /this->done && this->error != (char *) NULL/
a61af66fc99e Initial load
duke
parents:
diff changeset
431 {
a61af66fc99e Initial load
duke
parents:
diff changeset
432 this->error;
a61af66fc99e Initial load
duke
parents:
diff changeset
433 }
a61af66fc99e Initial load
duke
parents:
diff changeset
434
a61af66fc99e Initial load
duke
parents:
diff changeset
435 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
436 /!this->done && this->codecache/
a61af66fc99e Initial load
duke
parents:
diff changeset
437 {
a61af66fc99e Initial load
duke
parents:
diff changeset
438 this->done = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
439 "error";
a61af66fc99e Initial load
duke
parents:
diff changeset
440 }
a61af66fc99e Initial load
duke
parents:
diff changeset
441
a61af66fc99e Initial load
duke
parents:
diff changeset
442
a61af66fc99e Initial load
duke
parents:
diff changeset
443 dtrace:helper:ustack:
a61af66fc99e Initial load
duke
parents:
diff changeset
444 /!this->done/
a61af66fc99e Initial load
duke
parents:
diff changeset
445 {
a61af66fc99e Initial load
duke
parents:
diff changeset
446 NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
447 }