1975 int old_tag; 1976 old_tag = (int)(intptr_t)nextPtr(); 1977 // do_int(&old_tag); 1978 assert(tag == old_tag, "old tag doesn't match"); 1979 FileMapInfo::assert_mark(tag == old_tag); 1980 } 1981 1982 void ReadClosure::do_oop(oop *p) { 1983 narrowOop o = (narrowOop)nextPtr(); 1984 if (o == 0 || !HeapShared::open_archive_heap_region_mapped()) { 1985 p = NULL; 1986 } else { 1987 assert(HeapShared::is_heap_object_archiving_allowed(), 1988 "Archived heap object is not allowed"); 1989 assert(HeapShared::open_archive_heap_region_mapped(), 1990 "Open archive heap region is not mapped"); 1991 *p = HeapShared::decode_from_archive(o); 1992 } 1993 } 1994 1995 void ReadClosure::do_mirror_oop(oop *p) { 1996 do_oop(p); 1997 oop mirror = *p; 1998 if (mirror != NULL) { 1999 java_lang_Class::update_archived_mirror_native_pointers(mirror); 2000 } 2001 } 2002 2003 void ReadClosure::do_region(u_char* start, size_t size) { 2004 assert((intptr_t)start % sizeof(intptr_t) == 0, "bad alignment"); 2005 assert(size % sizeof(intptr_t) == 0, "bad size"); 2006 do_tag((int)size); 2007 while (size > 0) { 2008 *(intptr_t*)start = nextPtr(); 2009 start += sizeof(intptr_t); 2010 size -= sizeof(intptr_t); 2011 } 2012 } 2013 2014 void MetaspaceShared::set_shared_metaspace_range(void* base, void *static_top, void* top) { 2015 assert(base <= static_top && static_top <= top, "must be"); 2016 _shared_metaspace_static_top = static_top; 2017 MetaspaceObj::set_shared_metaspace_range(base, top); 2018 } 2019 2020 // Return true if given address is in the misc data region 2021 bool MetaspaceShared::is_in_shared_region(const void* p, int idx) { 2022 return UseSharedSpaces && FileMapInfo::current_info()->is_in_shared_region(p, idx); | 1975 int old_tag; 1976 old_tag = (int)(intptr_t)nextPtr(); 1977 // do_int(&old_tag); 1978 assert(tag == old_tag, "old tag doesn't match"); 1979 FileMapInfo::assert_mark(tag == old_tag); 1980 } 1981 1982 void ReadClosure::do_oop(oop *p) { 1983 narrowOop o = (narrowOop)nextPtr(); 1984 if (o == 0 || !HeapShared::open_archive_heap_region_mapped()) { 1985 p = NULL; 1986 } else { 1987 assert(HeapShared::is_heap_object_archiving_allowed(), 1988 "Archived heap object is not allowed"); 1989 assert(HeapShared::open_archive_heap_region_mapped(), 1990 "Open archive heap region is not mapped"); 1991 *p = HeapShared::decode_from_archive(o); 1992 } 1993 } 1994 1995 void ReadClosure::do_region(u_char* start, size_t size) { 1996 assert((intptr_t)start % sizeof(intptr_t) == 0, "bad alignment"); 1997 assert(size % sizeof(intptr_t) == 0, "bad size"); 1998 do_tag((int)size); 1999 while (size > 0) { 2000 *(intptr_t*)start = nextPtr(); 2001 start += sizeof(intptr_t); 2002 size -= sizeof(intptr_t); 2003 } 2004 } 2005 2006 void MetaspaceShared::set_shared_metaspace_range(void* base, void *static_top, void* top) { 2007 assert(base <= static_top && static_top <= top, "must be"); 2008 _shared_metaspace_static_top = static_top; 2009 MetaspaceObj::set_shared_metaspace_range(base, top); 2010 } 2011 2012 // Return true if given address is in the misc data region 2013 bool MetaspaceShared::is_in_shared_region(const void* p, int idx) { 2014 return UseSharedSpaces && FileMapInfo::current_info()->is_in_shared_region(p, idx); |