changeset 54175:3047cf8c3bc2

8218625: Remove dead code in relocInfo Reviewed-by: kvn, thartmann
author redestad
date Thu, 07 Feb 2019 22:20:46 +0100
parents df83034c9275
children e439ec989141
files src/hotspot/cpu/arm/arm.ad src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp src/hotspot/cpu/arm/gc/g1/g1BarrierSetAssembler_arm.cpp src/hotspot/cpu/arm/gc/shared/barrierSetAssembler_arm.cpp src/hotspot/cpu/arm/gc/shared/cardTableBarrierSetAssembler_arm.cpp src/hotspot/cpu/arm/macroAssembler_arm.hpp src/hotspot/cpu/arm/stubGenerator_arm.cpp src/hotspot/share/code/relocInfo.cpp src/hotspot/share/code/relocInfo.hpp src/hotspot/share/code/relocInfo_ext.cpp src/hotspot/share/code/relocInfo_ext.hpp
diffstat 11 files changed, 14 insertions(+), 216 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/cpu/arm/arm.ad	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/arm.ad	Thu Feb 07 22:20:46 2019 +0100
@@ -352,7 +352,7 @@
   // If this does safepoint polling, then do it here
   if (do_polling() && ra_->C->is_method_compilation()) {
     // mov_slow here is usually one or two instruction
-    __ mov_address(Rtemp, (address)os::get_polling_page(), symbolic_Relocation::polling_page_reference);
+    __ mov_address(Rtemp, (address)os::get_polling_page());
     __ relocate(relocInfo::poll_return_type);
     __ ldr(Rtemp, Address(Rtemp));
   }
--- a/src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp	Thu Feb 07 22:20:46 2019 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -309,7 +309,7 @@
   __ remove_frame(initial_frame_size_in_bytes());
 
   // mov_slow here is usually one or two instruction
-  __ mov_address(Rtemp, os::get_polling_page(), symbolic_Relocation::polling_page_reference);
+  __ mov_address(Rtemp, os::get_polling_page());
   __ relocate(relocInfo::poll_return_type);
   __ ldr(Rtemp, Address(Rtemp));
   __ ret();
@@ -317,7 +317,7 @@
 
 
 int LIR_Assembler::safepoint_poll(LIR_Opr tmp, CodeEmitInfo* info) {
-  __ mov_address(Rtemp, os::get_polling_page(), symbolic_Relocation::polling_page_reference);
+  __ mov_address(Rtemp, os::get_polling_page());
   if (info != NULL) {
     add_debug_info_for_branch(info);
   }
--- a/src/hotspot/cpu/arm/gc/g1/g1BarrierSetAssembler_arm.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/gc/g1/g1BarrierSetAssembler_arm.cpp	Thu Feb 07 22:20:46 2019 +0100
@@ -218,7 +218,7 @@
   const Register card_addr = tmp1;
   assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code");
 
-  __ mov_address(tmp2, (address)ct->byte_map_base(), symbolic_Relocation::card_table_reference);
+  __ mov_address(tmp2, (address)ct->byte_map_base());
   __ add(card_addr, tmp2, AsmOperand(store_addr, lsr, CardTable::card_shift));
 
   __ ldrb(tmp2, Address(card_addr));
--- a/src/hotspot/cpu/arm/gc/shared/barrierSetAssembler_arm.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/gc/shared/barrierSetAssembler_arm.cpp	Thu Feb 07 22:20:46 2019 +0100
@@ -167,7 +167,7 @@
 
   bool load_const = VM_Version::supports_movw();
   if (load_const) {
-    __ mov_address(top_addr, (address)Universe::heap()->top_addr(), symbolic_Relocation::eden_top_reference);
+    __ mov_address(top_addr, (address)Universe::heap()->top_addr());
   } else {
     __ ldr(top_addr, Address(Rthread, JavaThread::heap_top_addr_offset()));
   }
--- a/src/hotspot/cpu/arm/gc/shared/cardTableBarrierSetAssembler_arm.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/gc/shared/cardTableBarrierSetAssembler_arm.cpp	Thu Feb 07 22:20:46 2019 +0100
@@ -61,7 +61,7 @@
   __ sub(count, count, addr); // nb of cards
 
   // warning: Rthread has not been preserved
-  __ mov_address(tmp, (address) ct->byte_map_base(), symbolic_Relocation::card_table_reference);
+  __ mov_address(tmp, (address) ct->byte_map_base());
   __ add(addr,tmp, addr);
 
   Register zero = __ zero_register(tmp);
@@ -119,7 +119,7 @@
      Possible cause is a cache miss (card table base address resides in a
      rarely accessed area of thread descriptor).
   */
-  __ mov_address(card_table_base, (address)ct->byte_map_base(), symbolic_Relocation::card_table_reference);
+  __ mov_address(card_table_base, (address)ct->byte_map_base());
 }
 
 // The 2nd part of the store check.
--- a/src/hotspot/cpu/arm/macroAssembler_arm.hpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/macroAssembler_arm.hpp	Thu Feb 07 22:20:46 2019 +0100
@@ -26,7 +26,6 @@
 #define CPU_ARM_MACROASSEMBLER_ARM_HPP
 
 #include "code/relocInfo.hpp"
-#include "code/relocInfo_ext.hpp"
 
 class BiasedLockingCounters;
 
@@ -513,15 +512,13 @@
     }
   }
 
-  // Runtime address that may vary from one execution to another. The
-  // symbolic_reference describes what the address is, allowing
-  // the address to be resolved in a different execution context.
+  // Runtime address that may vary from one execution to another.
   // Warning: do not implement as a PC relative address.
-  void mov_address(Register rd, address addr, symbolic_Relocation::symbolic_reference t) {
+  void mov_address(Register rd, address addr) {
     mov_address(rd, addr, RelocationHolder::none);
   }
 
-  // rspec can be RelocationHolder::none (for ignored symbolic_Relocation).
+  // rspec can be RelocationHolder::none (for ignored symbolic Relocation).
   // In that case, the address is absolute and the generated code need
   // not be relocable.
   void mov_address(Register rd, address addr, RelocationHolder const& rspec) {
--- a/src/hotspot/cpu/arm/stubGenerator_arm.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/cpu/arm/stubGenerator_arm.cpp	Thu Feb 07 22:20:46 2019 +0100
@@ -820,9 +820,9 @@
     // Note: oop_mask and oop_bits must be updated if the code is saved/reused
     const address oop_mask = (address) Universe::verify_oop_mask();
     const address oop_bits = (address) Universe::verify_oop_bits();
-    __ mov_address(tmp1, oop_mask, symbolic_Relocation::oop_mask_reference);
+    __ mov_address(tmp1, oop_mask);
     __ andr(tmp2, oop, tmp1);
-    __ mov_address(tmp1, oop_bits, symbolic_Relocation::oop_bits_reference);
+    __ mov_address(tmp1, oop_bits);
     __ cmp(tmp2, tmp1);
     __ b(error, ne);
 
--- a/src/hotspot/share/code/relocInfo.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/share/code/relocInfo.cpp	Thu Feb 07 22:20:46 2019 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -92,18 +92,6 @@
   assert(format()==old_format, "sanity check");
 }
 
-nmethod* RelocIterator::code_as_nmethod() const {
-  return _code->as_nmethod();
-}
-
-void relocInfo::set_format(int f) {
-  int old_offset = addr_offset();
-  assert((f & format_mask) == f, "wrong format");
-  _value = (_value & ~(format_mask << offset_width)) | (f << offset_width);
-  assert(addr_offset()==old_offset, "sanity check");
-}
-
-
 void relocInfo::change_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type, relocType new_type) {
   bool found = false;
   while (itr->next() && !found) {
@@ -117,11 +105,6 @@
 }
 
 
-void relocInfo::remove_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type) {
-  change_reloc_info_for_address(itr, pc, old_type, none);
-}
-
-
 // ----------------------------------------------------------------------------------------------------
 // Implementation of RelocIterator
 
@@ -179,14 +162,6 @@
   set_limits(begin, limit);
 }
 
-
-enum { indexCardSize = 128 };
-struct RelocIndexEntry {
-  jint addr_offset;          // offset from header_end of an addr()
-  jint reloc_offset;         // offset from header_end of a relocInfo (prefix)
-};
-
-
 bool RelocIterator::addr_in_const() const {
   const int n = CodeBuffer::SECT_CONSTS;
   return section_start(n) <= addr() && addr() < section_end(n);
@@ -215,12 +190,6 @@
 }
 
 
-void RelocIterator::set_limit(address limit) {
-  address code_end = (address)code() + code()->size();
-  assert(limit == NULL || limit <= code_end, "in bounds");
-  _limit = limit;
-}
-
 // All the strange bit-encodings are in here.
 // The idea is to encode relocation data which are small integers
 // very efficiently (a single extra halfword).  Larger chunks of
@@ -622,14 +591,6 @@
   }
 }
 
-
-void metadata_Relocation::verify_metadata_relocation() {
-  if (!metadata_is_immediate()) {
-    // get the metadata from the pool, and re-insert it into the instruction:
-    verify_value(value());
-  }
-}
-
 address virtual_call_Relocation::cached_value() {
   assert(_cached_value != NULL && _cached_value < addr(), "must precede ic_call");
   return _cached_value;
--- a/src/hotspot/share/code/relocInfo.hpp	Thu Feb 07 14:29:17 2019 -0500
+++ b/src/hotspot/share/code/relocInfo.hpp	Thu Feb 07 22:20:46 2019 +0100
@@ -345,7 +345,6 @@
   static int offset_limit()     { return (1 << offset_width) * offset_unit; }
 
   void set_type(relocType type);
-  void set_format(int format);
 
   void remove() { set_type(none); }
 
@@ -422,7 +421,6 @@
   // (since code is dynamically patched, we also need to dynamically update the relocation info)
   // Both methods takes old_type, so it is able to performe sanity checks on the information removed.
   static void change_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type, relocType new_type);
-  static void remove_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type);
 
   // Machine dependent stuff
 #include CPU_HEADER(relocInfo)
@@ -531,7 +529,6 @@
   short           _databuf; // spare buffer for compressed data
   short*          _data;    // pointer to the relocation's data
   short           _datalen; // number of halfwords in _data
-  char            _format;  // position within the instruction
 
   // Base addresses needed to compute targets of section_word_type relocs.
   address _section_start[SECT_LIMIT];
@@ -588,23 +585,18 @@
       return false;
     }
 
-    if (relocInfo::have_format)  _format = current()->format();
     return true;
   }
 
   // accessors
   address      limit()        const { return _limit; }
-  void     set_limit(address x);
   relocType    type()         const { return current()->type(); }
   int          format()       const { return (relocInfo::have_format) ? current()->format() : 0; }
   address      addr()         const { return _addr; }
   CompiledMethod*     code()  const { return _code; }
-  nmethod*     code_as_nmethod() const;
   short*       data()         const { return _data; }
   int          datalen()      const { return _datalen; }
   bool     has_current()      const { return _datalen >= 0; }
-
-  void       set_addr(address addr) { _addr = addr; }
   bool   addr_in_const()      const;
 
   address section_start(int n) const {
@@ -793,7 +785,6 @@
   // accessors which only make sense for a bound Relocation
   address         addr()            const { return binding()->addr(); }
   CompiledMethod* code()            const { return binding()->code(); }
-  nmethod*        code_as_nmethod() const { return binding()->code_as_nmethod(); }
   bool            addr_in_const()   const { return binding()->addr_in_const(); }
  protected:
   short*   data()         const { return binding()->data(); }
@@ -1002,8 +993,6 @@
 
   void fix_metadata_relocation();        // reasserts metadata value
 
-  void verify_metadata_relocation();
-
   address value()  { return (address) *metadata_addr(); }
 
   bool metadata_is_immediate()  { return metadata_index() == 0; }
--- a/src/hotspot/share/code/relocInfo_ext.cpp	Thu Feb 07 14:29:17 2019 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
- * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "code/codeCache.hpp"
-#include "code/relocInfo.hpp"
-#include "code/relocInfo_ext.hpp"
-#include "gc/shared/cardTable.hpp"
-#include "gc/shared/cardTableBarrierSet.hpp"
-#include "gc/shared/collectedHeap.hpp"
-#include "memory/universe.hpp"
-#include "runtime/os.hpp"
-#include "utilities/debug.hpp"
-#ifdef COMPILER1
-#include "c1/c1_globals.hpp"
-#endif
-
-address symbolic_Relocation::symbolic_value(symbolic_Relocation::symbolic_reference t) {
-  if (Universe::heap() == NULL) {
-    // the symbolic values are not needed so early
-    // (and most of them lead to errors if asked too early)
-    return NULL;
-  }
-  switch(t) {
-  case symbolic_Relocation::polling_page_reference: {
-    return os::get_polling_page();
-  }
-  case symbolic_Relocation::eden_top_reference: {
-    if (!Universe::heap()->supports_inline_contig_alloc()) {
-      return NULL;
-    }
-    return (address)Universe::heap()->top_addr();
-  }
-  case symbolic_Relocation::heap_end_reference: {
-    if (!Universe::heap()->supports_inline_contig_alloc()) {
-      return NULL;
-    }
-    return (address)Universe::heap()->end_addr();
-  }
-  case symbolic_Relocation::card_table_reference: {
-    BarrierSet* bs = BarrierSet::barrier_set();
-    CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs);
-    CardTable* ct = ctbs->card_table();
-    return (address)ct->byte_map_base();
-  }
-  case symbolic_Relocation::mark_bits_reference: {
-    return (address)Universe::verify_mark_bits();
-  }
-  case symbolic_Relocation::mark_mask_reference: {
-    return (address)Universe::verify_mark_mask();
-  }
-  case symbolic_Relocation::oop_bits_reference: {
-    return (address)Universe::verify_oop_bits();
-  }
-  case symbolic_Relocation::oop_mask_reference: {
-    return (address)Universe::verify_oop_mask();
-  }
-  case symbolic_Relocation::debug_string_reference: {
-    return (address)"<Lost debug string>";
-  }
-  default: {
-    // missing declaration
-    ShouldNotReachHere();
-    return NULL;
-  }
-  }
-}
--- a/src/hotspot/share/code/relocInfo_ext.hpp	Thu Feb 07 14:29:17 2019 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
- * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_CODE_RELOCINFO_EXT_HPP
-#define SHARE_CODE_RELOCINFO_EXT_HPP
-
-// symbolic_Relocation allows to anotate some addresses in the generated code.
-//
-// This class was initially defined using the last unused relocType. The
-// new version tries to limit the impact on open source code changes.
-//
-// Without compiled code support, symbolic_Relocation need not be a real
-// relocation. To avoid using the last unused relocType, the
-// symbolic_Relocation::spec(<any symbolic type>) has been replaced
-// by additional methods using directly the symbolic type.
-//
-// Note: the order of the arguments in some methods had to reversed
-// to avoid confusion between the relocType enum and the
-// symbolic_reference enum.
-class symbolic_Relocation : AllStatic {
-
- public:
-  enum symbolic_reference {
-    card_table_reference,
-    eden_top_reference,
-    heap_end_reference,
-    polling_page_reference,
-    mark_bits_reference,
-    mark_mask_reference,
-    oop_bits_reference,
-    oop_mask_reference,
-    debug_string_reference,
-    last_symbolic_reference
-  };
-
-  // get the new value for a given symbolic type
-  static address symbolic_value(symbolic_reference t);
-};
-
-#endif // SHARE_CODE_RELOCINFO_EXT_HPP