mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-12 22:50:08 +00:00
Merge
This commit is contained in:
commit
628b3c2c3a
@ -550,6 +550,7 @@ bool ClassLoaderData::contains_klass(Klass* klass) {
|
||||
// GC root of class loader data created.
|
||||
ClassLoaderData* ClassLoaderDataGraph::_head = NULL;
|
||||
ClassLoaderData* ClassLoaderDataGraph::_unloading = NULL;
|
||||
ClassLoaderData* ClassLoaderDataGraph::_saved_unloading = NULL;
|
||||
ClassLoaderData* ClassLoaderDataGraph::_saved_head = NULL;
|
||||
|
||||
bool ClassLoaderDataGraph::_should_purge = false;
|
||||
@ -657,7 +658,9 @@ void ClassLoaderDataGraph::loaded_classes_do(KlassClosure* klass_closure) {
|
||||
|
||||
void ClassLoaderDataGraph::classes_unloading_do(void f(Klass* const)) {
|
||||
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!");
|
||||
for (ClassLoaderData* cld = _unloading; cld != NULL; cld = cld->next()) {
|
||||
// Only walk the head until any clds not purged from prior unloading
|
||||
// (CMS doesn't purge right away).
|
||||
for (ClassLoaderData* cld = _unloading; cld != _saved_unloading; cld = cld->next()) {
|
||||
cld->classes_do(f);
|
||||
}
|
||||
}
|
||||
@ -705,6 +708,11 @@ bool ClassLoaderDataGraph::do_unloading(BoolObjectClosure* is_alive_closure) {
|
||||
ClassLoaderData* data = _head;
|
||||
ClassLoaderData* prev = NULL;
|
||||
bool seen_dead_loader = false;
|
||||
|
||||
// Save previous _unloading pointer for CMS which may add to unloading list before
|
||||
// purging and we don't want to rewalk the previously unloaded class loader data.
|
||||
_saved_unloading = _unloading;
|
||||
|
||||
// mark metadata seen on the stack and code cache so we can delete
|
||||
// unneeded entries.
|
||||
bool has_redefined_a_class = JvmtiExport::has_redefined_a_class();
|
||||
|
||||
@ -66,6 +66,7 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||
static ClassLoaderData* _unloading;
|
||||
// CMS support.
|
||||
static ClassLoaderData* _saved_head;
|
||||
static ClassLoaderData* _saved_unloading;
|
||||
static bool _should_purge;
|
||||
|
||||
static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS);
|
||||
|
||||
@ -98,6 +98,7 @@ Now we can use the content + data type in declaring event fields.
|
||||
<value type="SYMBOL" field="name" label="Name"/>
|
||||
<value type="SYMBOL" field="signature" label="Signature"/>
|
||||
<value type="SHORT" field="modifiers" label="Access modifiers"/>
|
||||
<value type="BOOLEAN" field="hidden" label="Hidden"/>
|
||||
</content_type>
|
||||
|
||||
<content_type id="UTFConstant" hr_name="UTF constant"
|
||||
|
||||
@ -43,6 +43,7 @@ public class RangeCheck {
|
||||
true,
|
||||
"-Xmx32m",
|
||||
"-XX:-TransmitErrorReport",
|
||||
"-XX:-InlineUnsafeOps", // The compiler intrinsics doesn't have the assert
|
||||
DummyClassWithMainRangeCheck.class.getName());
|
||||
|
||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user