Mercurial > hg > graal-jvmci-8
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 |