Mercurial > hg > truffle
diff src/share/vm/services/threadService.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 | d2a62e0f25eb |
children | d8ce2825b193 |
line wrap: on
line diff
--- a/src/share/vm/services/threadService.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/services/threadService.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -249,9 +249,9 @@ // Allocate the resulting StackTraceElement[][] object ResourceMark rm(THREAD); - klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_StackTraceElement_array(), true, CHECK_NH); - objArrayKlassHandle ik (THREAD, k); - objArrayOop r = oopFactory::new_objArray(ik(), num_threads, CHECK_NH); + Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_StackTraceElement_array(), true, CHECK_NH); + objArrayKlass* ik = objArrayKlass::cast(k); + objArrayOop r = oopFactory::new_objArray(ik, num_threads, CHECK_NH); objArrayHandle result_obj(THREAD, r); int num_snapshots = dump_result.num_snapshots(); @@ -384,7 +384,7 @@ ThreadDumpResult::ThreadDumpResult() : _num_threads(0), _num_snapshots(0), _snapshots(NULL), _next(NULL), _last(NULL) { // Create a new ThreadDumpResult object and append to the list. - // If GC happens before this function returns, methodOop + // If GC happens before this function returns, Method* // in the stack trace will be visited. ThreadService::add_thread_dump(this); } @@ -448,7 +448,6 @@ } void StackFrameInfo::oops_do(OopClosure* f) { - f->do_oop((oop*) &_method); if (_locked_monitors != NULL) { int length = _locked_monitors->length(); for (int i = 0; i < length; i++) { @@ -463,7 +462,7 @@ int len = (_locked_monitors != NULL ? _locked_monitors->length() : 0); for (int i = 0; i < len; i++) { oop o = _locked_monitors->at(i); - instanceKlass* ik = instanceKlass::cast(o->klass()); + InstanceKlass* ik = InstanceKlass::cast(o->klass()); st->print_cr("\t- locked <" INTPTR_FORMAT "> (a %s)", (address)o, ik->external_name()); } @@ -564,7 +563,7 @@ } Handle ThreadStackTrace::allocate_fill_stack_trace_element_array(TRAPS) { - klassOop k = SystemDictionary::StackTraceElement_klass(); + Klass* k = SystemDictionary::StackTraceElement_klass(); assert(k != NULL, "must be loaded in 1.4+"); instanceKlassHandle ik(THREAD, k); @@ -681,7 +680,7 @@ for (int i = 0; i < locks->length(); i++) { instanceOop obj = locks->at(i); - instanceKlass* ik = instanceKlass::cast(obj->klass()); + InstanceKlass* ik = InstanceKlass::cast(obj->klass()); st->print_cr("\t- <" INTPTR_FORMAT "> (a %s)", (address)obj, ik->external_name()); } st->cr(); @@ -832,7 +831,7 @@ oop obj = (oop)waitingToLockMonitor->object(); if (obj != NULL) { st->print(" (object "INTPTR_FORMAT ", a %s)", (address)obj, - (instanceKlass::cast(obj->klass()))->external_name()); + (InstanceKlass::cast(obj->klass()))->external_name()); if (!currentThread->current_pending_monitor_is_from_java()) { owner_desc = "\n in JNI, which is held by"; @@ -846,7 +845,7 @@ } else { st->print(" waiting for ownable synchronizer " INTPTR_FORMAT ", (a %s)", (address)waitingToLockBlocker, - (instanceKlass::cast(waitingToLockBlocker->klass()))->external_name()); + (InstanceKlass::cast(waitingToLockBlocker->klass()))->external_name()); assert(waitingToLockBlocker->is_a(SystemDictionary::abstract_ownable_synchronizer_klass()), "Must be an AbstractOwnableSynchronizer"); oop ownerObj = java_util_concurrent_locks_AbstractOwnableSynchronizer::get_owner_threadObj(waitingToLockBlocker);