< prev index next >
src/share/vm/interpreter/oopMapCache.hpp
Print this page
*** 142,162 ****
int expression_stack_size() const { return _expression_stack_size; }
};
class OopMapCache : public CHeapObj<mtClass> {
private:
enum { _size = 32, // Use fixed size for now
_probe_depth = 3 // probe depth in case of collisions
};
! OopMapCacheEntry* _array;
unsigned int hash_value_for(const methodHandle& method, int bci) const;
OopMapCacheEntry* entry_at(int i) const;
! mutable Mutex _mut;
void flush();
public:
OopMapCache();
--- 142,164 ----
int expression_stack_size() const { return _expression_stack_size; }
};
class OopMapCache : public CHeapObj<mtClass> {
+ static OopMapCacheEntry* volatile _old_entries;
private:
enum { _size = 32, // Use fixed size for now
_probe_depth = 3 // probe depth in case of collisions
};
! OopMapCacheEntry* volatile * _array;
unsigned int hash_value_for(const methodHandle& method, int bci) const;
OopMapCacheEntry* entry_at(int i) const;
+ bool put_at(int i, OopMapCacheEntry* entry, OopMapCacheEntry* old);
! static void enqueue_for_cleanup(OopMapCacheEntry* entry);
void flush();
public:
OopMapCache();
*** 165,179 ****
// flush cache entry is occupied by an obsolete method
void flush_obsolete_entries();
// Returns the oopMap for (method, bci) in parameter "entry".
// Returns false if an oop map was not found.
! void lookup(const methodHandle& method, int bci, InterpreterOopMap* entry) const;
// Compute an oop map without updating the cache or grabbing any locks (for debugging)
static void compute_one_oop_map(const methodHandle& method, int bci, InterpreterOopMap* entry);
!
! // Returns total no. of bytes allocated as part of OopMapCache's
! static long memory_usage() PRODUCT_RETURN0;
};
#endif // SHARE_VM_INTERPRETER_OOPMAPCACHE_HPP
--- 167,179 ----
// flush cache entry is occupied by an obsolete method
void flush_obsolete_entries();
// Returns the oopMap for (method, bci) in parameter "entry".
// Returns false if an oop map was not found.
! void lookup(const methodHandle& method, int bci, InterpreterOopMap* entry);
// Compute an oop map without updating the cache or grabbing any locks (for debugging)
static void compute_one_oop_map(const methodHandle& method, int bci, InterpreterOopMap* entry);
! static void cleanup_old_entries();
};
#endif // SHARE_VM_INTERPRETER_OOPMAPCACHE_HPP
< prev index next >