comparison src/share/vm/prims/methodHandles.hpp @ 20677:fe34c5ab0b35

8042235: redefining method used by multiple MethodHandles crashes VM Summary: note all MemberNames created on internal list for adjusting method entries. Reviewed-by: sspitsyn, dcubed, lfoltan
author coleenp
date Wed, 19 Nov 2014 13:02:11 -0500
parents 9063bd8808a7
children 7848fc12602b
comparison
equal deleted inserted replaced
20666:bee8095780db 20677:fe34c5ab0b35
1 /* 1 /*
2 * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
234 234
235 class MemberNameTable : public GrowableArray<jweak> { 235 class MemberNameTable : public GrowableArray<jweak> {
236 public: 236 public:
237 MemberNameTable(int methods_cnt); 237 MemberNameTable(int methods_cnt);
238 ~MemberNameTable(); 238 ~MemberNameTable();
239 void add_member_name(int index, jweak mem_name_ref); 239 void add_member_name(jweak mem_name_ref);
240 oop get_member_name(int index);
241 240
242 #if INCLUDE_JVMTI 241 #if INCLUDE_JVMTI
243 public:
244 // RedefineClasses() API support: 242 // RedefineClasses() API support:
245 // If a MemberName refers to old_method then update it 243 // If a MemberName refers to old_method then update it
246 // to refer to new_method. 244 // to refer to new_method.
247 void adjust_method_entries(Method** old_methods, Method** new_methods, 245 void adjust_method_entries(Method** old_methods, Method** new_methods,
248 int methods_length, bool *trace_name_printed); 246 int methods_length, bool *trace_name_printed);
249 private:
250 oop find_member_name_by_method(Method* old_method);
251 #endif // INCLUDE_JVMTI 247 #endif // INCLUDE_JVMTI
252 }; 248 };
253 249
254 #endif // SHARE_VM_PRIMS_METHODHANDLES_HPP 250 #endif // SHARE_VM_PRIMS_METHODHANDLES_HPP