hotspot/src/share/vm/interpreter/rewriter.cpp
changeset 46741 d5a7407108b4
parent 46727 6e4a84748e2c
child 46783 bfa353c0d440
--- a/hotspot/src/share/vm/interpreter/rewriter.cpp	Wed Aug 02 00:15:52 2017 +0000
+++ b/hotspot/src/share/vm/interpreter/rewriter.cpp	Wed Aug 02 08:19:09 2017 -0400
@@ -27,6 +27,7 @@
 #include "interpreter/bytecodes.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/rewriter.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/metaspaceShared.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/generateOopMap.hpp"
@@ -101,7 +102,13 @@
   // the above lines.
   _pool->initialize_resolved_references(loader_data, _resolved_references_map,
                                         _resolved_reference_limit,
-                                        CHECK);
+                                        THREAD);
+
+  // Clean up constant pool cache if initialize_resolved_references() failed.
+  if (HAS_PENDING_EXCEPTION) {
+    MetadataFactory::free_metadata(loader_data, cache);
+    _pool->set_cache(NULL);  // so the verifier isn't confused
+  }
 }