1.1 --- a/src/share/vm/memory/cardTableRS.cpp Thu May 16 11:44:33 2013 +0100 1.2 +++ b/src/share/vm/memory/cardTableRS.cpp Thu May 23 12:44:18 2013 +0100 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -54,9 +54,10 @@ 1.11 _ct_bs = new CardTableModRefBSForCTRS(whole_heap, max_covered_regions); 1.12 #endif 1.13 set_bs(_ct_bs); 1.14 - _last_cur_val_in_gen = new jbyte[GenCollectedHeap::max_gens + 1]; 1.15 + _last_cur_val_in_gen = NEW_C_HEAP_ARRAY3(jbyte, GenCollectedHeap::max_gens + 1, 1.16 + mtGC, 0, AllocFailStrategy::RETURN_NULL); 1.17 if (_last_cur_val_in_gen == NULL) { 1.18 - vm_exit_during_initialization("Could not last_cur_val_in_gen array."); 1.19 + vm_exit_during_initialization("Could not create last_cur_val_in_gen array."); 1.20 } 1.21 for (int i = 0; i < GenCollectedHeap::max_gens + 1; i++) { 1.22 _last_cur_val_in_gen[i] = clean_card_val(); 1.23 @@ -64,6 +65,16 @@ 1.24 _ct_bs->set_CTRS(this); 1.25 } 1.26 1.27 +CardTableRS::~CardTableRS() { 1.28 + if (_ct_bs) { 1.29 + delete _ct_bs; 1.30 + _ct_bs = NULL; 1.31 + } 1.32 + if (_last_cur_val_in_gen) { 1.33 + FREE_C_HEAP_ARRAY(jbyte, _last_cur_val_in_gen, mtInternal); 1.34 + } 1.35 +} 1.36 + 1.37 void CardTableRS::resize_covered_region(MemRegion new_region) { 1.38 _ct_bs->resize_covered_region(new_region); 1.39 }