src/share/vm/oops/klassVtable.cpp

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -1188,10 +1188,24 @@
     ime++;
   }
 }
 
 #if INCLUDE_JVMTI
+// Update old Unsafe.throwIllegalAccessError entries
+void klassItable::update_throw_illegal_access_entries() {
+  itableMethodEntry* ime = method_entry(0);
+  for(int i = 0; i < _size_method_table; i++) {
+    Method* m = ime->method();
+    if (m != NULL && m->is_valid() && m->is_old() &&
+        m->name() ==  vmSymbols::throwIllegalAccessError_name()) {
+      // replace old Unsafe.throwIllegalAccessError() method with latest version
+      ime->initialize(Universe::throw_illegal_access_error());
+    }
+    ime++;
+  }
+}
+
 void klassItable::adjust_method_entries(Method** old_methods, Method** new_methods,
                                         int methods_length, bool * trace_name_printed) {
   // search the itable for uses of either obsolete or EMCP methods
   for (int j = 0; j < methods_length; j++) {
     Method* old_method = old_methods[j];