8149743: JVM crash after debugger hotswap with lambdas
Reviewed-by: sspitsyn, coleenp, dcubed
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp Tue Feb 23 19:10:01 2016 -0500
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp Thu Feb 18 16:15:28 2016 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, 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
@@ -3940,6 +3940,10 @@
scratch_class->set_methods(_old_methods); // To prevent potential GCing of the old methods,
// and to be able to undo operation easily.
+ Array<int>* old_ordering = the_class->method_ordering();
+ the_class->set_method_ordering(scratch_class->method_ordering());
+ scratch_class->set_method_ordering(old_ordering);
+
ConstantPool* old_constants = the_class->constants();
the_class->set_constants(scratch_class->constants());
scratch_class->set_constants(old_constants); // See the previous comment.