381 // Check for real heapbased compressed oops.
382 // We must subtract the base as the bits overlap.
383 // If we negate above function, we also get unscaled and zerobased.
384 static bool narrow_oop_base_overlaps() {
385 return _narrow_oop._base != NULL && !is_disjoint_heap_base_address(_narrow_oop._base);
386 }
387 static bool is_narrow_oop_base(void* addr) { return (narrow_oop_base() == (address)addr); }
388 static int narrow_oop_shift() { return _narrow_oop._shift; }
389 static bool narrow_oop_use_implicit_null_checks() { return _narrow_oop._use_implicit_null_checks; }
390
391 // For UseCompressedClassPointers
392 static address narrow_klass_base() { return _narrow_klass._base; }
393 static bool is_narrow_klass_base(void* addr) { return (narrow_klass_base() == (address)addr); }
394 static int narrow_klass_shift() { return _narrow_klass._shift; }
395 static bool narrow_klass_use_implicit_null_checks() { return _narrow_klass._use_implicit_null_checks; }
396
397 static address* narrow_ptrs_base_addr() { return &_narrow_ptrs_base; }
398 static void set_narrow_ptrs_base(address a) { _narrow_ptrs_base = a; }
399 static address narrow_ptrs_base() { return _narrow_ptrs_base; }
400
401 static void print_compressed_oops_mode();
402
403 // this is set in vm_version on sparc (and then reset in universe afaict)
404 static void set_narrow_oop_shift(int shift) {
405 _narrow_oop._shift = shift;
406 }
407
408 static void set_narrow_klass_shift(int shift) {
409 assert(shift == 0 || shift == LogKlassAlignmentInBytes, "invalid shift for klass ptrs");
410 _narrow_klass._shift = shift;
411 }
412
413 // Reserve Java heap and determine CompressedOops mode
414 static ReservedSpace reserve_heap(size_t heap_size, size_t alignment);
415
416 // Historic gc information
417 static size_t get_heap_capacity_at_last_gc() { return _heap_capacity_at_last_gc; }
418 static size_t get_heap_free_at_last_gc() { return _heap_capacity_at_last_gc - _heap_used_at_last_gc; }
419 static size_t get_heap_used_at_last_gc() { return _heap_used_at_last_gc; }
420 static void update_heap_info_at_gc();
421
|
381 // Check for real heapbased compressed oops.
382 // We must subtract the base as the bits overlap.
383 // If we negate above function, we also get unscaled and zerobased.
384 static bool narrow_oop_base_overlaps() {
385 return _narrow_oop._base != NULL && !is_disjoint_heap_base_address(_narrow_oop._base);
386 }
387 static bool is_narrow_oop_base(void* addr) { return (narrow_oop_base() == (address)addr); }
388 static int narrow_oop_shift() { return _narrow_oop._shift; }
389 static bool narrow_oop_use_implicit_null_checks() { return _narrow_oop._use_implicit_null_checks; }
390
391 // For UseCompressedClassPointers
392 static address narrow_klass_base() { return _narrow_klass._base; }
393 static bool is_narrow_klass_base(void* addr) { return (narrow_klass_base() == (address)addr); }
394 static int narrow_klass_shift() { return _narrow_klass._shift; }
395 static bool narrow_klass_use_implicit_null_checks() { return _narrow_klass._use_implicit_null_checks; }
396
397 static address* narrow_ptrs_base_addr() { return &_narrow_ptrs_base; }
398 static void set_narrow_ptrs_base(address a) { _narrow_ptrs_base = a; }
399 static address narrow_ptrs_base() { return _narrow_ptrs_base; }
400
401 static void print_compressed_oops_mode(outputStream* st);
402
403 // this is set in vm_version on sparc (and then reset in universe afaict)
404 static void set_narrow_oop_shift(int shift) {
405 _narrow_oop._shift = shift;
406 }
407
408 static void set_narrow_klass_shift(int shift) {
409 assert(shift == 0 || shift == LogKlassAlignmentInBytes, "invalid shift for klass ptrs");
410 _narrow_klass._shift = shift;
411 }
412
413 // Reserve Java heap and determine CompressedOops mode
414 static ReservedSpace reserve_heap(size_t heap_size, size_t alignment);
415
416 // Historic gc information
417 static size_t get_heap_capacity_at_last_gc() { return _heap_capacity_at_last_gc; }
418 static size_t get_heap_free_at_last_gc() { return _heap_capacity_at_last_gc - _heap_used_at_last_gc; }
419 static size_t get_heap_used_at_last_gc() { return _heap_used_at_last_gc; }
420 static void update_heap_info_at_gc();
421
|