src/share/vm/interpreter/oopMapCache.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/interpreter

src/share/vm/interpreter/oopMapCache.hpp

Print this page




 124 
 125  public:
 126   InterpreterOopMap();
 127   ~InterpreterOopMap();
 128 
 129   // Copy the OopMapCacheEntry in parameter "from" into this
 130   // InterpreterOopMap.  If the _bit_mask[0] in "from" points to
 131   // allocated space (i.e., the bit mask was to large to hold
 132   // in-line), allocate the space from a Resource area.
 133   void resource_copy(OopMapCacheEntry* from);
 134 
 135   void iterate_oop(OffsetClosure* oop_closure) const;
 136   void print() const;
 137 
 138   int number_of_entries() const                  { return mask_size() / bits_per_entry; }
 139   bool is_dead(int offset) const                 { return (entry_at(offset) & (1 << dead_bit_number)) != 0; }
 140   bool is_oop (int offset) const                 { return (entry_at(offset) & (1 << oop_bit_number )) != 0; }
 141 
 142   int expression_stack_size() const              { return _expression_stack_size; }
 143 
 144 #ifdef ENABLE_ZAP_DEAD_LOCALS
 145   void iterate_all(OffsetClosure* oop_closure, OffsetClosure* value_closure, OffsetClosure* dead_closure);
 146 #endif
 147 };
 148 
 149 class OopMapCache : public CHeapObj<mtClass> {
 150  private:
 151   enum { _size        = 32,     // Use fixed size for now
 152          _probe_depth = 3       // probe depth in case of collisions
 153   };
 154 
 155   OopMapCacheEntry* _array;
 156 
 157   unsigned int hash_value_for(methodHandle method, int bci) const;
 158   OopMapCacheEntry* entry_at(int i) const;
 159 
 160   mutable Mutex _mut;
 161 
 162   void flush();
 163 
 164  public:
 165   OopMapCache();
 166   ~OopMapCache();                                // free up memory


 124 
 125  public:
 126   InterpreterOopMap();
 127   ~InterpreterOopMap();
 128 
 129   // Copy the OopMapCacheEntry in parameter "from" into this
 130   // InterpreterOopMap.  If the _bit_mask[0] in "from" points to
 131   // allocated space (i.e., the bit mask was to large to hold
 132   // in-line), allocate the space from a Resource area.
 133   void resource_copy(OopMapCacheEntry* from);
 134 
 135   void iterate_oop(OffsetClosure* oop_closure) const;
 136   void print() const;
 137 
 138   int number_of_entries() const                  { return mask_size() / bits_per_entry; }
 139   bool is_dead(int offset) const                 { return (entry_at(offset) & (1 << dead_bit_number)) != 0; }
 140   bool is_oop (int offset) const                 { return (entry_at(offset) & (1 << oop_bit_number )) != 0; }
 141 
 142   int expression_stack_size() const              { return _expression_stack_size; }
 143 



 144 };
 145 
 146 class OopMapCache : public CHeapObj<mtClass> {
 147  private:
 148   enum { _size        = 32,     // Use fixed size for now
 149          _probe_depth = 3       // probe depth in case of collisions
 150   };
 151 
 152   OopMapCacheEntry* _array;
 153 
 154   unsigned int hash_value_for(methodHandle method, int bci) const;
 155   OopMapCacheEntry* entry_at(int i) const;
 156 
 157   mutable Mutex _mut;
 158 
 159   void flush();
 160 
 161  public:
 162   OopMapCache();
 163   ~OopMapCache();                                // free up memory
src/share/vm/interpreter/oopMapCache.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File