comparison src/share/vm/memory/metaspaceShared.cpp @ 20730:8210e5f2e21b

8044269: Analysis of archive files. Summary: Add checksum verification. Reviewed-by: iklam, dholmes, mschoene
author jiangli
date Tue, 12 Aug 2014 17:46:16 -0400
parents 78bbf4d43a14
children eaf39a954227 8cb56c8cb30d
comparison
equal deleted inserted replaced
20729:609faa407cfd 20730:8210e5f2e21b
583 SharedMiscCodeSize, 583 SharedMiscCodeSize,
584 true, true); 584 true, true);
585 585
586 // Pass 2 - write data. 586 // Pass 2 - write data.
587 mapinfo->open_for_write(); 587 mapinfo->open_for_write();
588 mapinfo->set_header_crc(mapinfo->compute_header_crc());
588 mapinfo->write_header(); 589 mapinfo->write_header();
589 mapinfo->write_space(MetaspaceShared::ro, _loader_data->ro_metaspace(), true); 590 mapinfo->write_space(MetaspaceShared::ro, _loader_data->ro_metaspace(), true);
590 mapinfo->write_space(MetaspaceShared::rw, _loader_data->rw_metaspace(), false); 591 mapinfo->write_space(MetaspaceShared::rw, _loader_data->rw_metaspace(), false);
591 mapinfo->write_region(MetaspaceShared::md, _md_vs.low(), 592 mapinfo->write_region(MetaspaceShared::md, _md_vs.low(),
592 pointer_delta(md_top, _md_vs.low(), sizeof(char)), 593 pointer_delta(md_top, _md_vs.low(), sizeof(char)),
861 char* _md_base = NULL; 862 char* _md_base = NULL;
862 char* _mc_base = NULL; 863 char* _mc_base = NULL;
863 864
864 // Map each shared region 865 // Map each shared region
865 if ((_ro_base = mapinfo->map_region(ro)) != NULL && 866 if ((_ro_base = mapinfo->map_region(ro)) != NULL &&
867 mapinfo->verify_region_checksum(ro) &&
866 (_rw_base = mapinfo->map_region(rw)) != NULL && 868 (_rw_base = mapinfo->map_region(rw)) != NULL &&
869 mapinfo->verify_region_checksum(rw) &&
867 (_md_base = mapinfo->map_region(md)) != NULL && 870 (_md_base = mapinfo->map_region(md)) != NULL &&
871 mapinfo->verify_region_checksum(md) &&
868 (_mc_base = mapinfo->map_region(mc)) != NULL && 872 (_mc_base = mapinfo->map_region(mc)) != NULL &&
873 mapinfo->verify_region_checksum(mc) &&
869 (image_alignment == (size_t)max_alignment())) { 874 (image_alignment == (size_t)max_alignment())) {
870 // Success (no need to do anything) 875 // Success (no need to do anything)
871 return true; 876 return true;
872 } else { 877 } else {
873 // If there was a failure in mapping any of the spaces, unmap the ones 878 // If there was a failure in mapping any of the spaces, unmap the ones