Merge

Tue, 08 Jul 2014 13:25:13 -0700

author
asaha
date
Tue, 08 Jul 2014 13:25:13 -0700
changeset 6803
9f169829d0e1
parent 6802
6e4bd4c906dc
parent 6743
f7429096a202
child 6804
781c4237cda7

Merge

.hgtags file | annotate | diff | comparison | revisions
make/hotspot_version file | annotate | diff | comparison | revisions
src/share/vm/classfile/classFileParser.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/.hgtags	Wed Jul 02 15:31:10 2014 -0700
     1.2 +++ b/.hgtags	Tue Jul 08 13:25:13 2014 -0700
     1.3 @@ -493,3 +493,4 @@
     1.4  4f18dea0312d601d0515976bc0c643ea7acc829d hs25.20-b20
     1.5  9e4d27da4ac04c6e19291087f7c68a5c5803c7ca jdk8u20-b20
     1.6  4828415ebbf11e205dcc08e97ad5ae7dd03522f9 jdk8u20-b21
     1.7 +e4a6e7f1b90b85270aee1c54edaca3ef737082f1 hs25.20-b21
     2.1 --- a/make/hotspot_version	Wed Jul 02 15:31:10 2014 -0700
     2.2 +++ b/make/hotspot_version	Tue Jul 08 13:25:13 2014 -0700
     2.3 @@ -35,7 +35,7 @@
     2.4  
     2.5  HS_MAJOR_VER=25
     2.6  HS_MINOR_VER=20
     2.7 -HS_BUILD_NUMBER=20
     2.8 +HS_BUILD_NUMBER=21
     2.9  
    2.10  JDK_MAJOR_VER=1
    2.11  JDK_MINOR_VER=8
     3.1 --- a/src/share/vm/classfile/classFileParser.cpp	Wed Jul 02 15:31:10 2014 -0700
     3.2 +++ b/src/share/vm/classfile/classFileParser.cpp	Tue Jul 08 13:25:13 2014 -0700
     3.3 @@ -4038,6 +4038,11 @@
     3.4      this_klass->set_major_version(major_version);
     3.5      this_klass->set_has_default_methods(has_default_methods);
     3.6  
     3.7 +    if (!host_klass.is_null()) {
     3.8 +      assert (this_klass->is_anonymous(), "should be the same");
     3.9 +      this_klass->set_host_klass(host_klass());
    3.10 +    }
    3.11 +
    3.12      // Set up Method*::intrinsic_id as soon as we know the names of methods.
    3.13      // (We used to do this lazily, but now we query it in Rewriter,
    3.14      // which is eagerly done for every method, so we might as well do it now,
     4.1 --- a/src/share/vm/classfile/classLoaderData.cpp	Wed Jul 02 15:31:10 2014 -0700
     4.2 +++ b/src/share/vm/classfile/classLoaderData.cpp	Tue Jul 08 13:25:13 2014 -0700
     4.3 @@ -531,6 +531,7 @@
     4.4  // GC root of class loader data created.
     4.5  ClassLoaderData* ClassLoaderDataGraph::_head = NULL;
     4.6  ClassLoaderData* ClassLoaderDataGraph::_unloading = NULL;
     4.7 +ClassLoaderData* ClassLoaderDataGraph::_saved_unloading = NULL;
     4.8  ClassLoaderData* ClassLoaderDataGraph::_saved_head = NULL;
     4.9  
    4.10  bool ClassLoaderDataGraph::_should_purge = false;
    4.11 @@ -628,7 +629,9 @@
    4.12  
    4.13  void ClassLoaderDataGraph::classes_unloading_do(void f(Klass* const)) {
    4.14    assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!");
    4.15 -  for (ClassLoaderData* cld = _unloading; cld != NULL; cld = cld->next()) {
    4.16 +  // Only walk the head until any clds not purged from prior unloading
    4.17 +  // (CMS doesn't purge right away).
    4.18 +  for (ClassLoaderData* cld = _unloading; cld != _saved_unloading; cld = cld->next()) {
    4.19      cld->classes_do(f);
    4.20    }
    4.21  }
    4.22 @@ -676,6 +679,11 @@
    4.23    ClassLoaderData* data = _head;
    4.24    ClassLoaderData* prev = NULL;
    4.25    bool seen_dead_loader = false;
    4.26 +
    4.27 +  // Save previous _unloading pointer for CMS which may add to unloading list before
    4.28 +  // purging and we don't want to rewalk the previously unloaded class loader data.
    4.29 +  _saved_unloading = _unloading;
    4.30 +
    4.31    // mark metadata seen on the stack and code cache so we can delete
    4.32    // unneeded entries.
    4.33    bool has_redefined_a_class = JvmtiExport::has_redefined_a_class();
     5.1 --- a/src/share/vm/classfile/classLoaderData.hpp	Wed Jul 02 15:31:10 2014 -0700
     5.2 +++ b/src/share/vm/classfile/classLoaderData.hpp	Tue Jul 08 13:25:13 2014 -0700
     5.3 @@ -66,6 +66,7 @@
     5.4    static ClassLoaderData* _unloading;
     5.5    // CMS support.
     5.6    static ClassLoaderData* _saved_head;
     5.7 +  static ClassLoaderData* _saved_unloading;
     5.8    static bool _should_purge;
     5.9  
    5.10    static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS);
     6.1 --- a/src/share/vm/classfile/systemDictionary.cpp	Wed Jul 02 15:31:10 2014 -0700
     6.2 +++ b/src/share/vm/classfile/systemDictionary.cpp	Tue Jul 08 13:25:13 2014 -0700
     6.3 @@ -997,7 +997,6 @@
     6.4  
     6.5    if (host_klass.not_null() && k.not_null()) {
     6.6      assert(EnableInvokeDynamic, "");
     6.7 -    k->set_host_klass(host_klass());
     6.8      // If it's anonymous, initialize it now, since nobody else will.
     6.9  
    6.10      {

mercurial