< prev index next >

src/share/vm/runtime/virtualspace.hpp

Print this page
rev 7462 : 8064457: Introduce compressed oops mode disjoint base and improve compressed heap handling.

*** 29,65 **** // ReservedSpace is a data structure for reserving a contiguous address range. class ReservedSpace VALUE_OBJ_CLASS_SPEC { friend class VMStructs; ! private: char* _base; size_t _size; size_t _noaccess_prefix; size_t _alignment; bool _special; bool _executable; // ReservedSpace ReservedSpace(char* base, size_t size, size_t alignment, bool special, bool executable); void initialize(size_t size, size_t alignment, bool large, char* requested_address, - const size_t noaccess_prefix, bool executable); - - protected: // Create protection page at the beginning of the space. ! void protect_noaccess_prefix(const size_t size); public: // Constructor ReservedSpace(); ReservedSpace(size_t size); ReservedSpace(size_t size, size_t alignment, bool large, ! char* requested_address = NULL, ! const size_t noaccess_prefix = 0); ReservedSpace(size_t size, size_t alignment, bool large, bool executable); // Accessors char* base() const { return _base; } size_t size() const { return _size; } --- 29,63 ---- // ReservedSpace is a data structure for reserving a contiguous address range. class ReservedSpace VALUE_OBJ_CLASS_SPEC { friend class VMStructs; ! protected: char* _base; size_t _size; size_t _noaccess_prefix; size_t _alignment; bool _special; + private: bool _executable; // ReservedSpace ReservedSpace(char* base, size_t size, size_t alignment, bool special, bool executable); + protected: void initialize(size_t size, size_t alignment, bool large, char* requested_address, bool executable); // Create protection page at the beginning of the space. ! void establish_noaccess_prefix(); public: // Constructor ReservedSpace(); ReservedSpace(size_t size); ReservedSpace(size_t size, size_t alignment, bool large, ! char* requested_address = NULL); ReservedSpace(size_t size, size_t alignment, bool large, bool executable); // Accessors char* base() const { return _base; } size_t size() const { return _size; }
*** 96,111 **** ReservedSpace ReservedSpace::last_part(size_t partition_size) { return last_part(partition_size, alignment()); } ! // Class encapsulating behavior specific of memory space reserved for Java heap class ReservedHeapSpace : public ReservedSpace { ! public: ! // Constructor ! ReservedHeapSpace(size_t size, size_t forced_base_alignment, ! bool large, char* requested_address); }; // Class encapsulating behavior specific memory space for Code class ReservedCodeSpace : public ReservedSpace { public: --- 94,116 ---- ReservedSpace ReservedSpace::last_part(size_t partition_size) { return last_part(partition_size, alignment()); } ! // Class encapsulating behavior specific of memory space reserved for Java heap. class ReservedHeapSpace : public ReservedSpace { ! private: ! void try_reserve_heap(size_t size, size_t alignment, bool large, char* requested_address); ! void try_reserve_range(char *const highest_start, char *lowest_start, size_t attach_point_alignment, ! char *aligned_HBMA, char *upper_bound, size_t size, size_t alignment, bool large); ! void initialize_compressed_heap(size_t size, size_t alignment, bool large); ! public: ! // Constructor. Tries to find a heap that is good for compressed oops. ! ReservedHeapSpace(size_t size, size_t forced_base_alignment, bool large); ! // Returns the base to be used for compression, i.e. so that null can be encoded safely and ! // implicit null checks can work. ! char *compressed_oop_base() { return _base - _noaccess_prefix; } }; // Class encapsulating behavior specific memory space for Code class ReservedCodeSpace : public ReservedSpace { public:
< prev index next >