Mercurial > hg > truffle
changeset 20187:fc25d8f6c466
8039150: host_klass invariant fails when verifying newly loaded JSR-292 anonymous classes
Summary: Initialize host_klass while parsing the class with the other initializations.
Reviewed-by: sspitsyn, stefank
author | coleenp |
---|---|
date | Fri, 20 Jun 2014 10:48:36 -0400 |
parents | a45a4f5a9609 |
children | fcef32387025 |
files | src/share/vm/classfile/classFileParser.cpp src/share/vm/classfile/systemDictionary.cpp |
diffstat | 2 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/classfile/classFileParser.cpp Fri Jun 13 13:46:06 2014 +0200 +++ b/src/share/vm/classfile/classFileParser.cpp Fri Jun 20 10:48:36 2014 -0400 @@ -4022,6 +4022,11 @@ this_klass->set_major_version(major_version); this_klass->set_has_default_methods(has_default_methods); + if (!host_klass.is_null()) { + assert (this_klass->is_anonymous(), "should be the same"); + this_klass->set_host_klass(host_klass()); + } + // Set up Method*::intrinsic_id as soon as we know the names of methods. // (We used to do this lazily, but now we query it in Rewriter, // which is eagerly done for every method, so we might as well do it now,
--- a/src/share/vm/classfile/systemDictionary.cpp Fri Jun 13 13:46:06 2014 +0200 +++ b/src/share/vm/classfile/systemDictionary.cpp Fri Jun 20 10:48:36 2014 -0400 @@ -997,7 +997,6 @@ if (host_klass.not_null() && k.not_null()) { assert(EnableInvokeDynamic, ""); - k->set_host_klass(host_klass()); // If it's anonymous, initialize it now, since nobody else will. {