Mercurial > hg > truffle
comparison src/os/solaris/vm/dtraceJSDT_solaris.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 4ee06e614636 |
children |
comparison
equal
deleted
inserted
replaced
6724:36d1d483d5d6 | 6725:da91efe96a93 |
---|---|
140 JVM_DTraceProvider* provider = &providers[prvc]; | 140 JVM_DTraceProvider* provider = &providers[prvc]; |
141 // Provider name | 141 // Provider name |
142 ++strcount; | 142 ++strcount; |
143 for(int prbc = 0; prbc < provider->probe_count; ++prbc) { | 143 for(int prbc = 0; prbc < provider->probe_count; ++prbc) { |
144 JVM_DTraceProbe* p = &(provider->probes[prbc]); | 144 JVM_DTraceProbe* p = &(provider->probes[prbc]); |
145 Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); | 145 Symbol* sig = Method::resolve_jmethod_id(p->method)->signature(); |
146 // function + name + one per argument | 146 // function + name + one per argument |
147 strcount += 2 + ArgumentCount(sig).size(); | 147 strcount += 2 + ArgumentCount(sig).size(); |
148 } | 148 } |
149 } | 149 } |
150 | 150 |
176 char* name = java_lang_String::as_utf8_string( | 176 char* name = java_lang_String::as_utf8_string( |
177 JNIHandles::resolve_non_null(p->name)); | 177 JNIHandles::resolve_non_null(p->name)); |
178 stroffs[curstr++] = string_index; | 178 stroffs[curstr++] = string_index; |
179 string_index += strlen(name) + 1; | 179 string_index += strlen(name) + 1; |
180 | 180 |
181 Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); | 181 Symbol* sig = Method::resolve_jmethod_id(p->method)->signature(); |
182 SignatureStream ss(sig); | 182 SignatureStream ss(sig); |
183 for ( ; !ss.at_return_type(); ss.next()) { | 183 for ( ; !ss.at_return_type(); ss.next()) { |
184 BasicType bt = ss.type(); | 184 BasicType bt = ss.type(); |
185 const char* t = NULL; | 185 const char* t = NULL; |
186 if (bt == T_OBJECT && | 186 if (bt == T_OBJECT && |
225 | 225 |
226 // We need number of arguments argoffs | 226 // We need number of arguments argoffs |
227 uint32_t argscount = 0; | 227 uint32_t argscount = 0; |
228 for(int prbc = 0; prbc < provider->probe_count; ++prbc) { | 228 for(int prbc = 0; prbc < provider->probe_count; ++prbc) { |
229 JVM_DTraceProbe* p = &(provider->probes[prbc]); | 229 JVM_DTraceProbe* p = &(provider->probes[prbc]); |
230 Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); | 230 Symbol* sig = Method::resolve_jmethod_id(p->method)->signature(); |
231 argscount += ArgumentCount(sig).size(); | 231 argscount += ArgumentCount(sig).size(); |
232 } | 232 } |
233 secoffs[argoffs_sec] = align_size_up(offset, alignment_for[ARG_OFFSETS]); | 233 secoffs[argoffs_sec] = align_size_up(offset, alignment_for[ARG_OFFSETS]); |
234 secsize[argoffs_sec] = sizeof(uint8_t) * argscount; | 234 secsize[argoffs_sec] = sizeof(uint8_t) * argscount; |
235 offset = secoffs[argoffs_sec] + secsize[argoffs_sec]; | 235 offset = secoffs[argoffs_sec] + secsize[argoffs_sec]; |
296 char* name = java_lang_String::as_utf8_string( | 296 char* name = java_lang_String::as_utf8_string( |
297 JNIHandles::resolve_non_null(p->name)); | 297 JNIHandles::resolve_non_null(p->name)); |
298 strcpy(str, name); | 298 strcpy(str, name); |
299 str += strlen(name) + 1; | 299 str += strlen(name) + 1; |
300 | 300 |
301 Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); | 301 Symbol* sig = Method::resolve_jmethod_id(p->method)->signature(); |
302 SignatureStream ss(sig); | 302 SignatureStream ss(sig); |
303 for ( ; !ss.at_return_type(); ss.next()) { | 303 for ( ; !ss.at_return_type(); ss.next()) { |
304 BasicType bt = ss.type(); | 304 BasicType bt = ss.type(); |
305 const char* t; | 305 const char* t; |
306 if (bt == T_OBJECT && | 306 if (bt == T_OBJECT && |
375 sec->dofs_size = secsize[probe_sec]; | 375 sec->dofs_size = secsize[probe_sec]; |
376 // Make probes descriptions | 376 // Make probes descriptions |
377 uint32_t argsoffs = 0; | 377 uint32_t argsoffs = 0; |
378 for(int prbc = 0; prbc < provider->probe_count; ++prbc) { | 378 for(int prbc = 0; prbc < provider->probe_count; ++prbc) { |
379 JVM_DTraceProbe* probe = &(provider->probes[prbc]); | 379 JVM_DTraceProbe* probe = &(provider->probes[prbc]); |
380 methodOop m = JNIHandles::resolve_jmethod_id(probe->method); | 380 Method* m = Method::resolve_jmethod_id(probe->method); |
381 int arg_count = ArgumentCount(m->signature()).size(); | 381 int arg_count = ArgumentCount(m->signature()).size(); |
382 assert(m->code() != NULL, "must have an nmethod"); | 382 assert(m->code() != NULL, "must have an nmethod"); |
383 | 383 |
384 dof_probe_t* prb = | 384 dof_probe_t* prb = |
385 (dof_probe_t*)(dof + sec->dofs_offset + prbc * sizeof(dof_probe_t)); | 385 (dof_probe_t*)(dof + sec->dofs_offset + prbc * sizeof(dof_probe_t)); |
413 // Make offsets | 413 // Make offsets |
414 for (int prbc = 0; prbc < provider->probe_count; ++prbc) { | 414 for (int prbc = 0; prbc < provider->probe_count; ++prbc) { |
415 uint32_t* pof = | 415 uint32_t* pof = |
416 (uint32_t*)(dof + sec->dofs_offset + sizeof(uint32_t) * prbc); | 416 (uint32_t*)(dof + sec->dofs_offset + sizeof(uint32_t) * prbc); |
417 JVM_DTraceProbe* probe = &(provider->probes[prbc]); | 417 JVM_DTraceProbe* probe = &(provider->probes[prbc]); |
418 methodOop m = JNIHandles::resolve_jmethod_id(probe->method); | 418 Method* m = Method::resolve_jmethod_id(probe->method); |
419 *pof = m->code()->trap_offset(); | 419 *pof = m->code()->trap_offset(); |
420 } | 420 } |
421 | 421 |
422 // PRARGS ///////////////////////////////////////////////////////////////// | 422 // PRARGS ///////////////////////////////////////////////////////////////// |
423 // Section header | 423 // Section header |
431 sec->dofs_size = secsize[argoffs_sec]; | 431 sec->dofs_size = secsize[argoffs_sec]; |
432 // Make arguments | 432 // Make arguments |
433 uint8_t* par = (uint8_t*)(dof + sec->dofs_offset); | 433 uint8_t* par = (uint8_t*)(dof + sec->dofs_offset); |
434 for (int prbc = 0; prbc < provider->probe_count; ++prbc) { | 434 for (int prbc = 0; prbc < provider->probe_count; ++prbc) { |
435 JVM_DTraceProbe* p = &(provider->probes[prbc]); | 435 JVM_DTraceProbe* p = &(provider->probes[prbc]); |
436 Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature(); | 436 Symbol* sig = Method::resolve_jmethod_id(p->method)->signature(); |
437 uint8_t count = (uint8_t)ArgumentCount(sig).size(); | 437 uint8_t count = (uint8_t)ArgumentCount(sig).size(); |
438 for (uint8_t i = 0; i < count; ++i) { | 438 for (uint8_t i = 0; i < count; ++i) { |
439 *par++ = i; | 439 *par++ = i; |
440 } | 440 } |
441 } | 441 } |