changeset 1590:ff13b7d6e330

2009-06-09 Gary Benson <gbenson@redhat.com> * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp (SharkTopLevelBlock::scan_for_traps): Removed unused code. * ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp: Removed. * ports/hotspot/src/share/vm/shark/sharkConstantPool.cpp: Likewise. * patches/hotspot/default/icedtea-shark.patch (ciInstanceKlass::is_cache_entry_resolved): Removed. (ciInstanceKlass::constant_pool_tag_at): Likewise. * ports/hotspot/src/share/vm/includeDB_shark: Updated.
author Gary Benson <gbenson@redhat.com>
date Tue, 09 Jun 2009 08:53:57 -0400
parents d55dfba8404f
children 852af6e8bf0e
files ChangeLog patches/hotspot/default/icedtea-shark.patch ports/hotspot/src/share/vm/includeDB_shark ports/hotspot/src/share/vm/shark/sharkConstantPool.cpp ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
diffstat 6 files changed, 41 insertions(+), 266 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jun 09 06:22:07 2009 -0400
+++ b/ChangeLog	Tue Jun 09 08:53:57 2009 -0400
@@ -1,3 +1,17 @@
+2009-06-09  Gary Benson  <gbenson@redhat.com>
+
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::scan_for_traps): Removed unused code.
+
+	* ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp: Removed.
+	* ports/hotspot/src/share/vm/shark/sharkConstantPool.cpp: Likewise.
+
+	* patches/hotspot/default/icedtea-shark.patch
+	(ciInstanceKlass::is_cache_entry_resolved): Removed.
+	(ciInstanceKlass::constant_pool_tag_at): Likewise.
+
+	* ports/hotspot/src/share/vm/includeDB_shark: Updated.	
+
 2009-06-09  Gary Benson  <gbenson@redhat.com>
 
 	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp
--- a/patches/hotspot/default/icedtea-shark.patch	Tue Jun 09 06:22:07 2009 -0400
+++ b/patches/hotspot/default/icedtea-shark.patch	Tue Jun 09 08:53:57 2009 -0400
@@ -337,46 +337,40 @@
  }
  
  // ------------------------------------------------------------------
-diff -r 5297ff20101d openjdk-ecj/hotspot/src/share/vm/ci/ciInstanceKlass.cpp
---- openjdk/hotspot/src/share/vm/ci/ciInstanceKlass.cpp	Mon Dec 15 15:32:37 2008 +0000
-+++ openjdk/hotspot/src/share/vm/ci/ciInstanceKlass.cpp	Tue Apr 21 09:47:27 2009 +0100
-@@ -548,3 +548,23 @@
-   }
-   return impl;
+diff -r 12c97e7e55eb -r e6fef2ef2fea openjdk/hotspot/src/share/vm/ci/ciMethod.cpp
+--- openjdk/hotspot/src/share/vm/ci/ciMethod.cpp	Tue Jun 09 09:17:11 2009 +0100
++++ openjdk/hotspot/src/share/vm/ci/ciMethod.cpp	Tue Jun 09 10:04:02 2009 +0100
+@@ -229,6 +229,20 @@
  }
-+
+ 
+ 
 +#ifdef SHARK
 +// ------------------------------------------------------------------
-+// ciInstanceKlass::constant_pool_tag_at
++// ciMethod::itable_index
 +//
-+// What is in this constant pool slot?
-+constantTag ciInstanceKlass::constant_pool_tag_at(int index) {
++// Get the position of this method's entry in the itable, if any.
++int ciMethod::itable_index() {
++  check_is_loaded();
++  assert(holder()->is_linked(), "must be linked");
 +  VM_ENTRY_MARK;
-+  return get_instanceKlass()->constants()->tag_at(index);
-+}
-+
-+// ------------------------------------------------------------------
-+// ciInstanceKlass::is_cache_entry_resolved
-+//
-+// Is this entry in the constant pool cache resolved?
-+bool ciInstanceKlass::is_cache_entry_resolved(int index, Bytecodes::Code opcode) {
-+  VM_ENTRY_MARK;
-+  return get_instanceKlass()->constants()->cache()->entry_at(index)->is_resolved(opcode);
++  return klassItable::compute_itable_index(get_methodOop());
 +}
 +#endif // SHARK
-diff -r 5297ff20101d openjdk-ecj/hotspot/src/share/vm/ci/ciInstanceKlass.hpp
---- openjdk/hotspot/src/share/vm/ci/ciInstanceKlass.hpp	Mon Dec 15 15:32:37 2008 +0000
-+++ openjdk/hotspot/src/share/vm/ci/ciInstanceKlass.hpp	Tue Apr 21 09:47:27 2009 +0100
-@@ -198,4 +198,12 @@
-   // What kind of ciObject is this?
-   bool is_instance_klass() { return true; }
-   bool is_java_klass()     { return true; }
++
 +
+ // ------------------------------------------------------------------
+ // ciMethod::native_entry
+ //
+diff -r 12c97e7e55eb -r e6fef2ef2fea openjdk/hotspot/src/share/vm/ci/ciMethod.hpp
+--- openjdk/hotspot/src/share/vm/ci/ciMethod.hpp	Tue Jun 09 09:17:11 2009 +0100
++++ openjdk/hotspot/src/share/vm/ci/ciMethod.hpp	Tue Jun 09 10:04:02 2009 +0100
+@@ -139,6 +139,9 @@
+ 
+   // Runtime information.
+   int           vtable_index();
 +#ifdef SHARK
-+  // What is in this constant pool slot?
-+  constantTag constant_pool_tag_at(int index);
-+
-+  // Is this entry in the constant pool cache resolved?
-+  bool is_cache_entry_resolved(int index, Bytecodes::Code opcode);
++  int           itable_index();
 +#endif // SHARK
- };
+   address       native_entry();
+   address       interpreter_entry();
+ 
--- a/ports/hotspot/src/share/vm/includeDB_shark	Tue Jun 09 06:22:07 2009 -0400
+++ b/ports/hotspot/src/share/vm/includeDB_shark	Tue Jun 09 08:53:57 2009 -0400
@@ -170,24 +170,6 @@
 sharkConstant.hpp                       sharkBuilder.hpp
 sharkConstant.hpp                       sharkValue.hpp
 
-sharkConstantPool.cpp                   allocation.hpp
-sharkConstantPool.cpp                   constantPoolOop.hpp
-sharkConstantPool.cpp                   cpCacheOop.hpp
-sharkConstantPool.cpp                   debug.hpp
-sharkConstantPool.cpp                   llvmHeaders.hpp
-sharkConstantPool.cpp                   llvmValue.hpp
-sharkConstantPool.cpp                   methodOop.hpp
-sharkConstantPool.cpp                   sharkBuilder.hpp
-sharkConstantPool.cpp                   sharkConstantPool.hpp
-sharkConstantPool.cpp                   sharkState.inline.hpp
-sharkConstantPool.cpp                   sharkType.hpp
-sharkConstantPool.cpp                   sharkValue.hpp
-
-sharkConstantPool.hpp                   allocation.hpp
-sharkConstantPool.hpp                   llvmHeaders.hpp
-sharkConstantPool.hpp                   sharkBuilder.hpp
-sharkConstantPool.hpp                   sharkTopLevelBlock.hpp
-
 sharkEntry.cpp                          sharkEntry.hpp
 
 sharkEntry.hpp                          llvmHeaders.hpp
@@ -316,7 +298,6 @@
 sharkTopLevelBlock.cpp                  sharkTopLevelBlock.hpp
 sharkTopLevelBlock.cpp                  sharkBuilder.hpp
 sharkTopLevelBlock.cpp                  sharkConstant.hpp
-sharkTopLevelBlock.cpp                  sharkConstantPool.hpp
 sharkTopLevelBlock.cpp                  sharkInliner.hpp
 sharkTopLevelBlock.cpp                  sharkRuntime.hpp
 sharkTopLevelBlock.cpp                  sharkState.inline.hpp
--- a/ports/hotspot/src/share/vm/shark/sharkConstantPool.cpp	Tue Jun 09 06:22:07 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
- * Copyright 2008, 2009 Red Hat, Inc.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-#include "incls/_precompiled.incl"
-#include "incls/_sharkConstantPool.cpp.incl"
-
-using namespace llvm;
-
-Value *SharkConstantPool::constants()
-{
-  Value *m = method();
-  if (m != _constants_method) {
-    _constants = builder()->CreateValueOfStructEntry(
-      m, methodOopDesc::constants_offset(),
-      SharkType::oop_type(), "constants");
-    _constants_method = m;
-  }
-  return _constants;
-}
-
-Value *SharkConstantPool::tags()
-{
-  Value *cp = constants();
-  if (cp != _tags_constants) {
-    _tags = builder()->CreateValueOfStructEntry(
-      cp, in_ByteSize(constantPoolOopDesc::tags_offset_in_bytes()),
-      SharkType::oop_type(), "tags");
-    _tags_constants = cp;
-  }
-  return _tags;
-}
-
-Value *SharkConstantPool::cache()
-{
-  Value *cp = constants();
-  if (cp != _cache_constants) {
-    _cache = builder()->CreateValueOfStructEntry(
-      cp, in_ByteSize(constantPoolOopDesc::cache_offset_in_bytes()),
-      SharkType::oop_type(), "cache");
-    _cache_constants = cp;
-  }
-  return _cache;
-}
-
-Value *SharkConstantPool::object_at(int which)
-{
-  return builder()->CreateLoad(
-    builder()->CreateArrayAddress(
-      constants(),
-      T_OBJECT, in_ByteSize(sizeof(constantPoolOopDesc)),
-      LLVMValue::jint_constant(which)));
-}
-
-Value *SharkConstantPool::tag_at(int which)
-{
-  return builder()->CreateLoad(
-    builder()->CreateArrayAddress(
-      tags(), T_BYTE, LLVMValue::jint_constant(which)));
-}
-
-Value *SharkConstantPool::cache_entry_at(int which)
-{
-  // Takes a constant pool cache index in byte-swapped byte order
-  // (which comes from the bytecodes after rewriting).  This is a
-  // bizarre hack but it's the same as
-  // constantPoolOopDesc::field_or_method_at().
-  which = Bytes::swap_u2(which);
-  assert(target()->holder()->is_cache_entry_resolved(which, block()->bc()),
-         "should be");
-
-  return builder()->CreateIntToPtr(
-    builder()->CreateAdd(
-      builder()->CreatePtrToInt(
-        cache(), SharkType::intptr_type()),
-      LLVMValue::intptr_constant(
-        in_bytes(constantPoolCacheOopDesc::base_offset()) +
-        which * sizeof(ConstantPoolCacheEntry))),
-    SharkType::cpCacheEntry_type());
-}
-
-Value *SharkConstantPool::java_mirror()
-{
-  Value *cp = constants();
-
-  Value *pool_holder = builder()->CreateValueOfStructEntry(
-    cp,
-    in_ByteSize(constantPoolOopDesc::pool_holder_offset_in_bytes()),
-    SharkType::oop_type(),
-    "pool_holder");
-
-  Value *klass_part = builder()->CreateAddressOfStructEntry(
-    pool_holder,
-    in_ByteSize(klassOopDesc::klass_part_offset_in_bytes()),
-    SharkType::klass_type(),
-    "klass_part");
-
-  // XXX should there be a memory barrier before this load?
-  return builder()->CreateValueOfStructEntry(
-    klass_part,
-    in_ByteSize(Klass::java_mirror_offset_in_bytes()),
-    SharkType::oop_type(),
-    "java_mirror");
-}
--- a/ports/hotspot/src/share/vm/shark/sharkConstantPool.hpp	Tue Jun 09 06:22:07 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
- * Copyright 2008, 2009 Red Hat, Inc.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-class SharkConstantPool : public StackObj {
- public:
-  SharkConstantPool(SharkTopLevelBlock* block)
-    : _block(block),
-      _constants_method(NULL),
-      _tags_constants(NULL),
-      _cache_constants(NULL) {}
-
- private:
-  SharkTopLevelBlock* _block;
-
- private:
-  SharkTopLevelBlock* block() const
-  {
-    return _block;
-  }
-  SharkBuilder* builder() const
-  {
-    return block()->builder();
-  }
-  ciMethod* target() const
-  {
-    return block()->target();
-  }
-  llvm::Value* method() const
-  {
-    return block()->method();
-  }
-
- private:
-  llvm::Value* _constants;        // The constant pool, a constantPoolOop
-  llvm::Value* _constants_method; // The method _constants was loaded from
-
-  llvm::Value* _tags;             // The tags array, a typeArrayOop
-  llvm::Value* _tags_constants;   // The constantPoolOop _tags is in
-
-  llvm::Value* _cache;            // The cache, a constantPoolCacheOop
-  llvm::Value* _cache_constants;  // The constantPoolCacheOop _cache is in
-
- private:
-  llvm::Value* constants();
-  llvm::Value* tags();
-  llvm::Value* cache();
-
- public:
-  llvm::Value* object_at(int which);
-  llvm::Value* tag_at(int which);
-  llvm::Value* cache_entry_at(int which);
-  llvm::Value* java_mirror();
-};
--- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp	Tue Jun 09 06:22:07 2009 -0400
+++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp	Tue Jun 09 08:53:57 2009 -0400
@@ -44,8 +44,6 @@
     bool will_link;
     bool is_field;
 
-    int index = -1;
-
     switch (bc()) {
     case Bytecodes::_ldc:
     case Bytecodes::_ldc_w:
@@ -141,18 +139,6 @@
       }
       break;
     }
-
-    // If we found a constant pool access on this bytecode then check it
-    if (index != -1) {
-      if (!target()->holder()->is_cache_entry_resolved(
-             Bytes::swap_u2(index), bc())) {
-        set_trap(
-          Deoptimization::make_trap_request(
-            Deoptimization::Reason_uninitialized,
-            Deoptimization::Action_reinterpret), bci());
-        return;
-      }
-    }
   }
   
   // Trap if typeflow trapped (and we didn't before)