Mercurial > hg > release > icedtea7-2.1
changeset 2242:586b58d937ca
PR IcedTea/481: Disable use of arbitrary deoptimisation which we can't currently support.
2010-05-05 Gary Benson <gbenson@redhat.com>
PR icedtea/481
* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
(SharkTopLevelBlock::improve_virtual_call): Disable an
optimization that cannot currently be supported.
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Wed, 05 May 2010 11:28:27 +0100 |
parents | 68790c7c4ff7 |
children | 03a30accd9b2 |
files | ChangeLog ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp |
diffstat | 2 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Apr 30 10:24:39 2010 +0100 +++ b/ChangeLog Wed May 05 11:28:27 2010 +0100 @@ -1,3 +1,10 @@ +2010-05-05 Gary Benson <gbenson@redhat.com> + + PR icedtea/481 + * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp + (SharkTopLevelBlock::improve_virtual_call): Disable an + optimization that cannot currently be supported. + 2010-04-30 Gary Benson <gbenson@redhat.com> PR icedtea/324
--- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Fri Apr 30 10:24:39 2010 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Wed May 05 11:28:27 2010 +0100 @@ -903,6 +903,18 @@ dest_method->holder() == java_lang_Object_klass()) return dest_method; +#ifdef SHARK_CAN_DEOPTIMIZE_ANYWHERE + // This code can replace a virtual call with a direct call if this + // class is the only one in the entire set of loaded classes that + // implements this method. This makes the compiled code dependent + // on other classes that implement the method not being loaded, a + // condition which is enforced by the dependency tracker. If the + // dependency tracker determines a method has become invalid it + // will mark it for recompilation, causing running copies to be + // deoptimized. Shark currently can't deoptimize arbitrarily like + // that, so this optimization cannot be used. + // http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=481 + // All other interesting cases are instance classes if (!receiver_type->is_instance_klass()) return NULL; @@ -958,6 +970,8 @@ // with non-monomorphic targets if the receiver has an exact // type. We don't mark types this way, so we can't do this. +#endif // SHARK_CAN_DEOPTIMIZE_ANYWHERE + return NULL; }