src/share/vm/opto/memnode.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/memnode.cpp

Print this page
rev 7139 : imported patch 8062258.adr_type


  35 #include "opto/loopnode.hpp"
  36 #include "opto/machnode.hpp"
  37 #include "opto/matcher.hpp"
  38 #include "opto/memnode.hpp"
  39 #include "opto/mulnode.hpp"
  40 #include "opto/narrowptrnode.hpp"
  41 #include "opto/phaseX.hpp"
  42 #include "opto/regmask.hpp"
  43 
  44 // Portions of code courtesy of Clifford Click
  45 
  46 // Optimization - Graph Style
  47 
  48 static Node *step_through_mergemem(PhaseGVN *phase, MergeMemNode *mmem,  const TypePtr *tp, const TypePtr *adr_check, outputStream *st);
  49 
  50 //=============================================================================
  51 uint MemNode::size_of() const { return sizeof(*this); }
  52 
  53 const TypePtr *MemNode::adr_type() const {
  54   Node* adr = in(Address);

  55   const TypePtr* cross_check = NULL;
  56   DEBUG_ONLY(cross_check = _adr_type);
  57   return calculate_adr_type(adr->bottom_type(), cross_check);
  58 }
  59 
  60 #ifndef PRODUCT
  61 void MemNode::dump_spec(outputStream *st) const {
  62   if (in(Address) == NULL)  return; // node is dead
  63 #ifndef ASSERT
  64   // fake the missing field
  65   const TypePtr* _adr_type = NULL;
  66   if (in(Address) != NULL)
  67     _adr_type = in(Address)->bottom_type()->isa_ptr();
  68 #endif
  69   dump_adr_type(this, _adr_type, st);
  70 
  71   Compile* C = Compile::current();
  72   if( C->alias_type(_adr_type)->is_volatile() )
  73     st->print(" Volatile!");
  74 }




  35 #include "opto/loopnode.hpp"
  36 #include "opto/machnode.hpp"
  37 #include "opto/matcher.hpp"
  38 #include "opto/memnode.hpp"
  39 #include "opto/mulnode.hpp"
  40 #include "opto/narrowptrnode.hpp"
  41 #include "opto/phaseX.hpp"
  42 #include "opto/regmask.hpp"
  43 
  44 // Portions of code courtesy of Clifford Click
  45 
  46 // Optimization - Graph Style
  47 
  48 static Node *step_through_mergemem(PhaseGVN *phase, MergeMemNode *mmem,  const TypePtr *tp, const TypePtr *adr_check, outputStream *st);
  49 
  50 //=============================================================================
  51 uint MemNode::size_of() const { return sizeof(*this); }
  52 
  53 const TypePtr *MemNode::adr_type() const {
  54   Node* adr = in(Address);
  55   NOT_PRODUCT(if (adr == NULL)  return NULL;) // node is dead
  56   const TypePtr* cross_check = NULL;
  57   DEBUG_ONLY(cross_check = _adr_type);
  58   return calculate_adr_type(adr->bottom_type(), cross_check);
  59 }
  60 
  61 #ifndef PRODUCT
  62 void MemNode::dump_spec(outputStream *st) const {
  63   if (in(Address) == NULL)  return; // node is dead
  64 #ifndef ASSERT
  65   // fake the missing field
  66   const TypePtr* _adr_type = NULL;
  67   if (in(Address) != NULL)
  68     _adr_type = in(Address)->bottom_type()->isa_ptr();
  69 #endif
  70   dump_adr_type(this, _adr_type, st);
  71 
  72   Compile* C = Compile::current();
  73   if( C->alias_type(_adr_type)->is_volatile() )
  74     st->print(" Volatile!");
  75 }


src/share/vm/opto/memnode.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File