# HG changeset patch # User ghaug # Date 1534759687 -7200 # Mon Aug 20 12:08:07 2018 +0200 # Node ID 9808914b61e388c4fbeebe57691a5cfb3924fdbf # Parent 703576fdd268138047de557f47af4ba08d4a1bae 8208480: Test failure: assert(is_bound() || is_unused()) after JDK-8206075 in C1 diff --git a/src/hotspot/share/c1/c1_LIRAssembler.cpp b/src/hotspot/share/c1/c1_LIRAssembler.cpp --- a/src/hotspot/share/c1/c1_LIRAssembler.cpp +++ b/src/hotspot/share/c1/c1_LIRAssembler.cpp @@ -112,6 +112,9 @@ LIR_Assembler::~LIR_Assembler() { + // The unwind handler label may be unnbound if this destructor is invoked because of a bail-out. + // Reset it here to avoid an assertion. + _unwind_handler_entry.reset(); } diff --git a/src/hotspot/share/c1/c1_LIRAssembler.hpp b/src/hotspot/share/c1/c1_LIRAssembler.hpp --- a/src/hotspot/share/c1/c1_LIRAssembler.hpp +++ b/src/hotspot/share/c1/c1_LIRAssembler.hpp @@ -71,11 +71,7 @@ void record_non_safepoint_debug_info(); // unified bailout support - void bailout(const char* msg) { - // reset the label in case it hits assertion in destructor. - _unwind_handler_entry.reset(); - compilation()->bailout(msg); - } + void bailout(const char* msg) const { compilation()->bailout(msg); } bool bailed_out() const { return compilation()->bailed_out(); } // code emission patterns and accessors