src/share/vm/memory/cardTableRS.cpp

changeset 5249
ce9ecec70f99
parent 5103
f9be75d21404
child 5516
330dfb0476f4
     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  }

mercurial