comparison src/share/vm/prims/jvmtiImpl.cpp @ 2147:9afee0b9fc1d

7012505: BreakpointWithFullGC.sh fails with Internal Error (src/share/vm/oops/methodOop.cpp:220) Summary: Rebuild breakpoint cache at gc_epilogue instead of during oops_do Reviewed-by: dcubed, ysr, coleenp
author kamg
date Wed, 19 Jan 2011 13:51:53 -0800
parents 7246a374a9f2
children 3582bf76420e
comparison
equal deleted inserted replaced
2146:2f33b03bd915 2147:9afee0b9fc1d
210 void GrowableCache::oops_do(OopClosure* f) { 210 void GrowableCache::oops_do(OopClosure* f) {
211 int len = _elements->length(); 211 int len = _elements->length();
212 for (int i=0; i<len; i++) { 212 for (int i=0; i<len; i++) {
213 GrowableElement *e = _elements->at(i); 213 GrowableElement *e = _elements->at(i);
214 e->oops_do(f); 214 e->oops_do(f);
215 _cache[i] = e->getCacheValue(); 215 }
216 }
217
218 void GrowableCache::gc_epilogue() {
219 int len = _elements->length();
220 for (int i=0; i<len; i++) {
221 _cache[i] = _elements->at(i)->getCacheValue();
216 } 222 }
217 } 223 }
218 224
219 // 225 //
220 // class JvmtiBreakpoint 226 // class JvmtiBreakpoint
390 396
391 JvmtiBreakpoints:: ~JvmtiBreakpoints() {} 397 JvmtiBreakpoints:: ~JvmtiBreakpoints() {}
392 398
393 void JvmtiBreakpoints::oops_do(OopClosure* f) { 399 void JvmtiBreakpoints::oops_do(OopClosure* f) {
394 _bps.oops_do(f); 400 _bps.oops_do(f);
401 }
402
403 void JvmtiBreakpoints::gc_epilogue() {
404 _bps.gc_epilogue();
395 } 405 }
396 406
397 void JvmtiBreakpoints::print() { 407 void JvmtiBreakpoints::print() {
398 #ifndef PRODUCT 408 #ifndef PRODUCT
399 ResourceMark rm; 409 ResourceMark rm;
521 if (_jvmti_breakpoints != NULL) { 531 if (_jvmti_breakpoints != NULL) {
522 _jvmti_breakpoints->oops_do(f); 532 _jvmti_breakpoints->oops_do(f);
523 } 533 }
524 } 534 }
525 535
536 void JvmtiCurrentBreakpoints::gc_epilogue() {
537 if (_jvmti_breakpoints != NULL) {
538 _jvmti_breakpoints->gc_epilogue();
539 }
540 }
541
526 /////////////////////////////////////////////////////////////// 542 ///////////////////////////////////////////////////////////////
527 // 543 //
528 // class VM_GetOrSetLocal 544 // class VM_GetOrSetLocal
529 // 545 //
530 546