/hg/icedtea6: Fix PR IcedTea/481

gbenson at icedtea.classpath.org gbenson at icedtea.classpath.org
Wed May 5 03:28:35 PDT 2010


changeset 540dc0858c17 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=540dc0858c17
author: Gary Benson <gbenson at redhat.com>
date: Wed May 05 11:28:27 2010 +0100

	Fix PR IcedTea/481


diffstat:

2 files changed, 21 insertions(+)
ChangeLog                                               |    7 +++++++
ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp |   14 ++++++++++++++

diffs (45 lines):

diff -r b571e4dc0ca6 -r 540dc0858c17 ChangeLog
--- a/ChangeLog	Tue May 04 17:50:37 2010 +0100
+++ b/ChangeLog	Wed May 05 11:28:27 2010 +0100
@@ -1,3 +1,10 @@ 2010-05-04  Andrew John Hughes  <ahughes
+2010-05-05  Gary Benson  <gbenson at 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-05-04  Andrew John Hughes  <ahughes at redhat.com>
 
 	Move OpenJDK patches to appropriate subdirectory.
diff -r b571e4dc0ca6 -r 540dc0858c17 ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp	Tue May 04 17:50:37 2010 +0100
+++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp	Wed May 05 11:28:27 2010 +0100
@@ -903,6 +903,18 @@ ciMethod* SharkTopLevelBlock::improve_vi
       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;
@@ -957,6 +969,8 @@ ciMethod* SharkTopLevelBlock::improve_vi
   // it can perform a further optimization to replace calls
   // 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;
 }



More information about the distro-pkg-dev mailing list