Mercurial > hg > graal-compiler
comparison src/share/vm/oops/klass.cpp @ 3245:8ce625481709
7032407: Crash in LinkResolver::runtime_resolve_virtual_method()
Summary: Make CDS reorder vtables so that dump time vtables match run time order, so when redefine classes reinitializes them, they aren't in the wrong order.
Reviewed-by: dcubed, acorn
author | coleenp |
---|---|
date | Fri, 15 Apr 2011 09:36:28 -0400 |
parents | 1d1603768966 |
children | be4ca325525a 069ab3f976d3 94ec88ca68e2 |
comparison
equal
deleted
inserted
replaced
3244:a534c140904e | 3245:8ce625481709 |
---|---|
451 instanceKlass* ik = (instanceKlass*)this; | 451 instanceKlass* ik = (instanceKlass*)this; |
452 if (ik->is_linked()) { | 452 if (ik->is_linked()) { |
453 ik->unlink_class(); | 453 ik->unlink_class(); |
454 } | 454 } |
455 } | 455 } |
456 // Clear the Java vtable if the oop has one. | |
457 // The vtable isn't shareable because it's in the wrong order wrt the methods | |
458 // once the method names get moved and resorted. | |
459 klassVtable* vt = vtable(); | |
460 if (vt != NULL) { | |
461 assert(oop_is_instance() || oop_is_array(), "nothing else has vtable"); | |
462 vt->clear_vtable(); | |
463 } | |
456 set_subklass(NULL); | 464 set_subklass(NULL); |
457 set_next_sibling(NULL); | 465 set_next_sibling(NULL); |
458 } | 466 } |
459 | 467 |
460 | 468 |