src/share/vm/classfile/defaultMethods.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/classfile/defaultMethods.cpp	Thu Jan 17 11:43:12 2013
--- new/src/share/vm/classfile/defaultMethods.cpp	Thu Jan 17 11:43:12 2013

*** 1283,1299 **** --- 1283,1301 ---- static void merge_in_new_methods(InstanceKlass* klass, GrowableArray<Method*>* new_methods, TRAPS) { enum { ANNOTATIONS, PARAMETERS, DEFAULTS, NUM_ARRAYS }; ! Array<AnnotationArray*>* original_annots[NUM_ARRAYS] = { NULL }; Array<Method*>* original_methods = klass->methods(); Annotations* annots = klass->annotations(); + if (annots != NULL) { original_annots[ANNOTATIONS] = annots->methods_annotations(); original_annots[PARAMETERS] = annots->methods_parameter_annotations(); original_annots[DEFAULTS] = annots->methods_default_annotations(); + } Array<int>* original_ordering = klass->method_ordering(); Array<int>* merged_ordering = Universe::the_empty_int_array(); int new_size = klass->methods()->length() + new_methods->length();
*** 1368,1380 **** --- 1370,1388 ---- } #endif // Replace klass methods with new merged lists klass->set_methods(merged_methods); + if (annots != NULL) { annots->set_methods_annotations(merged_annots[ANNOTATIONS]); annots->set_methods_parameter_annotations(merged_annots[PARAMETERS]); annots->set_methods_default_annotations(merged_annots[DEFAULTS]); + } else { + assert(merged_annots[ANNOTATIONS] == NULL, "Must be"); + assert(merged_annots[PARAMETERS] == NULL, "Must be"); + assert(merged_annots[DEFAULTS] == NULL, "Must be"); + } ClassLoaderData* cld = klass->class_loader_data(); MetadataFactory::free_array(cld, original_methods); for (int i = 0; i < NUM_ARRAYS; ++i) { MetadataFactory::free_array(cld, original_annots[i]);

src/share/vm/classfile/defaultMethods.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File