Mercurial > hg > truffle
comparison src/share/vm/ci/ciEnv.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 | f95d63e2154a |
children | 3582bf76420e |
comparison
equal
deleted
inserted
replaced
2146:2f33b03bd915 | 2147:9afee0b9fc1d |
---|---|
407 if (sym->byte_at(0) == '[') { | 407 if (sym->byte_at(0) == '[') { |
408 fail_type = _unloaded_ciobjarrayklass; | 408 fail_type = _unloaded_ciobjarrayklass; |
409 } else { | 409 } else { |
410 fail_type = _unloaded_ciinstance_klass; | 410 fail_type = _unloaded_ciinstance_klass; |
411 } | 411 } |
412 klassOop found_klass; | 412 KlassHandle found_klass; |
413 if (!require_local) { | 413 if (!require_local) { |
414 found_klass = | 414 klassOop kls = SystemDictionary::find_constrained_instance_or_array_klass( |
415 SystemDictionary::find_constrained_instance_or_array_klass(sym, loader, | 415 sym, loader, KILL_COMPILE_ON_FATAL_(fail_type)); |
416 KILL_COMPILE_ON_FATAL_(fail_type)); | 416 found_klass = KlassHandle(THREAD, kls); |
417 } else { | 417 } else { |
418 found_klass = | 418 klassOop kls = SystemDictionary::find_instance_or_array_klass( |
419 SystemDictionary::find_instance_or_array_klass(sym, loader, domain, | 419 sym, loader, domain, KILL_COMPILE_ON_FATAL_(fail_type)); |
420 KILL_COMPILE_ON_FATAL_(fail_type)); | 420 found_klass = KlassHandle(THREAD, kls); |
421 } | 421 } |
422 | 422 |
423 // If we fail to find an array klass, look again for its element type. | 423 // If we fail to find an array klass, look again for its element type. |
424 // The element type may be available either locally or via constraints. | 424 // The element type may be available either locally or via constraints. |
425 // In either case, if we can find the element type in the system dictionary, | 425 // In either case, if we can find the element type in the system dictionary, |
442 // Now make an array for it | 442 // Now make an array for it |
443 return ciObjArrayKlass::make_impl(elem_klass); | 443 return ciObjArrayKlass::make_impl(elem_klass); |
444 } | 444 } |
445 } | 445 } |
446 | 446 |
447 if (found_klass != NULL) { | 447 if (found_klass() != NULL) { |
448 // Found it. Build a CI handle. | 448 // Found it. Build a CI handle. |
449 return get_object(found_klass)->as_klass(); | 449 return get_object(found_klass())->as_klass(); |
450 } | 450 } |
451 | 451 |
452 if (require_local) return NULL; | 452 if (require_local) return NULL; |
453 // Not yet loaded into the VM, or not governed by loader constraints. | 453 // Not yet loaded into the VM, or not governed by loader constraints. |
454 // Make a CI representative for it. | 454 // Make a CI representative for it. |