]> source.dussan.org Git - dcevm.git/commitdiff
Update host klass to newest version
authorIvan Dubrov <idubrov@guidewire.com>
Fri, 2 May 2014 05:53:33 +0000 (22:53 -0700)
committerIvan Dubrov <idubrov@guidewire.com>
Fri, 2 May 2014 06:00:40 +0000 (23:00 -0700)
hotspot/.hg/patches/light-jdk8u5-b13.patch

index 286dba09d2e32f7ac35f0e755c9a1fa8fbcd6d7c..4458820c50a9070d6f385d0382f09f3cb21099e1 100644 (file)
@@ -1564,7 +1564,7 @@ diff --git a/src/share/vm/prims/jvmtiRedefineClasses2.cpp b/src/share/vm/prims/j
 new file mode 100644
 --- /dev/null
 +++ b/src/share/vm/prims/jvmtiRedefineClasses2.cpp
-@@ -0,0 +1,2102 @@
+@@ -0,0 +1,2107 @@
 +/*
 + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -3049,6 +3049,11 @@ new file mode 100644
 +  InstanceKlass *ik = InstanceKlass::cast(klass);
 +  constantPoolHandle other_cp = constantPoolHandle(ik->constants());
 +
++  // Update host klass of anonymous classes (for example, produced by lambdas) to newest version.
++  if (ik->is_anonymous() && !ik->host_klass()->is_newest_version()) {
++    ik->set_host_klass(ik->host_klass()->newest_version());
++  }
++
 +  for (int i = 0; i < other_cp->length(); i++) {
 +    if (other_cp->tag_at(i).is_klass()) {
 +      Klass* klass = other_cp->klass_at(i, _thread);