comparison src/share/vm/gc_implementation/g1/g1AllocRegion.cpp @ 5188:5afc5a089c2c

8014555: G1: Memory ordering problem with Conc refinement and card marking Summary: Add a StoreLoad barrier in the G1 post-barrier to fix a race with concurrent refinement. Reviewed-by: brutisso, tschatzl, roland
author mgerdin
date Tue, 08 Oct 2013 17:35:51 +0200
parents f44782f04dd4
children
comparison
equal deleted inserted replaced
1:d4bf9ab113f7 2:bd6ef1f6950b
1 /* 1 /*
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
138 } 138 }
139 ShouldNotReachHere(); 139 ShouldNotReachHere();
140 } 140 }
141 141
142 void G1AllocRegion::fill_in_ext_msg(ar_ext_msg* msg, const char* message) { 142 void G1AllocRegion::fill_in_ext_msg(ar_ext_msg* msg, const char* message) {
143 msg->append("[%s] %s c: "SIZE_FORMAT" b: %s r: "PTR_FORMAT" u: "SIZE_FORMAT, 143 msg->append("[%s] %s c: %u b: %s r: "PTR_FORMAT" u: "SIZE_FORMAT,
144 _name, message, _count, BOOL_TO_STR(_bot_updates), 144 _name, message, _count, BOOL_TO_STR(_bot_updates),
145 _alloc_region, _used_bytes_before); 145 _alloc_region, _used_bytes_before);
146 } 146 }
147 147
148 void G1AllocRegion::init() { 148 void G1AllocRegion::init() {
213 } 213 }
214 } else { 214 } else {
215 jio_snprintf(rest_buffer, buffer_length, ""); 215 jio_snprintf(rest_buffer, buffer_length, "");
216 } 216 }
217 217
218 tty->print_cr("[%s] "SIZE_FORMAT" %s : %s %s", 218 tty->print_cr("[%s] %u %s : %s %s",
219 _name, _count, hr_buffer, str, rest_buffer); 219 _name, _count, hr_buffer, str, rest_buffer);
220 } 220 }
221 } 221 }
222 #endif // G1_ALLOC_REGION_TRACING 222 #endif // G1_ALLOC_REGION_TRACING
223 223