comparison src/share/vm/runtime/biasedLocking.cpp @ 12316:190899198332

7195622: CheckUnhandledOops has limited usefulness now Summary: Enable CHECK_UNHANDLED_OOPS in fastdebug builds across all supported platforms. Reviewed-by: coleenp, hseigel, dholmes, stefank, twisti, ihse, rdurbin Contributed-by: lois.foltan@oracle.com
author hseigel
date Thu, 26 Sep 2013 10:25:02 -0400
parents 070d523b96a7
children 3205e78d8193
comparison
equal deleted inserted replaced
12315:c1fbf21c7397 12316:190899198332
1 /* 1 /*
2 * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2005, 2013, 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.
159 markOop unbiased_prototype = markOopDesc::prototype()->set_age(age); 159 markOop unbiased_prototype = markOopDesc::prototype()->set_age(age);
160 160
161 if (TraceBiasedLocking && (Verbose || !is_bulk)) { 161 if (TraceBiasedLocking && (Verbose || !is_bulk)) {
162 ResourceMark rm; 162 ResourceMark rm;
163 tty->print_cr("Revoking bias of object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s , prototype header " INTPTR_FORMAT " , allow rebias %d , requesting thread " INTPTR_FORMAT, 163 tty->print_cr("Revoking bias of object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s , prototype header " INTPTR_FORMAT " , allow rebias %d , requesting thread " INTPTR_FORMAT,
164 (intptr_t) obj, (intptr_t) mark, obj->klass()->external_name(), (intptr_t) obj->klass()->prototype_header(), (allow_rebias ? 1 : 0), (intptr_t) requesting_thread); 164 (void *)obj, (intptr_t) mark, obj->klass()->external_name(), (intptr_t) obj->klass()->prototype_header(), (allow_rebias ? 1 : 0), (intptr_t) requesting_thread);
165 } 165 }
166 166
167 JavaThread* biased_thread = mark->biased_locker(); 167 JavaThread* biased_thread = mark->biased_locker();
168 if (biased_thread == NULL) { 168 if (biased_thread == NULL) {
169 // Object is anonymously biased. We can get here if, for 169 // Object is anonymously biased. We can get here if, for
212 for (int i = 0; i < cached_monitor_info->length(); i++) { 212 for (int i = 0; i < cached_monitor_info->length(); i++) {
213 MonitorInfo* mon_info = cached_monitor_info->at(i); 213 MonitorInfo* mon_info = cached_monitor_info->at(i);
214 if (mon_info->owner() == obj) { 214 if (mon_info->owner() == obj) {
215 if (TraceBiasedLocking && Verbose) { 215 if (TraceBiasedLocking && Verbose) {
216 tty->print_cr(" mon_info->owner (" PTR_FORMAT ") == obj (" PTR_FORMAT ")", 216 tty->print_cr(" mon_info->owner (" PTR_FORMAT ") == obj (" PTR_FORMAT ")",
217 (intptr_t) mon_info->owner(), 217 (void *) mon_info->owner(),
218 (intptr_t) obj); 218 (void *) obj);
219 } 219 }
220 // Assume recursive case and fix up highest lock later 220 // Assume recursive case and fix up highest lock later
221 markOop mark = markOopDesc::encode((BasicLock*) NULL); 221 markOop mark = markOopDesc::encode((BasicLock*) NULL);
222 highest_lock = mon_info->lock(); 222 highest_lock = mon_info->lock();
223 highest_lock->set_displaced_header(mark); 223 highest_lock->set_displaced_header(mark);
224 } else { 224 } else {
225 if (TraceBiasedLocking && Verbose) { 225 if (TraceBiasedLocking && Verbose) {
226 tty->print_cr(" mon_info->owner (" PTR_FORMAT ") != obj (" PTR_FORMAT ")", 226 tty->print_cr(" mon_info->owner (" PTR_FORMAT ") != obj (" PTR_FORMAT ")",
227 (intptr_t) mon_info->owner(), 227 (void *) mon_info->owner(),
228 (intptr_t) obj); 228 (void *) obj);
229 } 229 }
230 } 230 }
231 } 231 }
232 if (highest_lock != NULL) { 232 if (highest_lock != NULL) {
233 // Fix up highest lock to contain displaced header and point 233 // Fix up highest lock to contain displaced header and point
324 324
325 if (TraceBiasedLocking) { 325 if (TraceBiasedLocking) {
326 tty->print_cr("* Beginning bulk revocation (kind == %s) because of object " 326 tty->print_cr("* Beginning bulk revocation (kind == %s) because of object "
327 INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", 327 INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s",
328 (bulk_rebias ? "rebias" : "revoke"), 328 (bulk_rebias ? "rebias" : "revoke"),
329 (intptr_t) o, (intptr_t) o->mark(), o->klass()->external_name()); 329 (void *) o, (intptr_t) o->mark(), o->klass()->external_name());
330 } 330 }
331 331
332 jlong cur_time = os::javaTimeMillis(); 332 jlong cur_time = os::javaTimeMillis();
333 o->klass()->set_last_biased_lock_bulk_revocation_time(cur_time); 333 o->klass()->set_last_biased_lock_bulk_revocation_time(cur_time);
334 334