From 1ffc316e18a74daf2eb1bcc60692312b825c0054 Mon Sep 17 00:00:00 2001
From: Sangheon Kim <sangheki@openjdk.org>
Date: Wed, 26 Nov 2014 21:38:25 -0800
Subject: [PATCH] 8055239: assert(_thread == Thread::current()->osthread())
 failed: The PromotionFailedInfo should be thread local

Changed to trace and reset before second use of PromotionFailedInfo.

Reviewed-by: jmasa, brutisso, kbarrett
---
 .../share/vm/gc_implementation/parNew/parNewGeneration.cpp   | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
index a923cf57441..9f21403440b 100644
--- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
@@ -999,6 +999,11 @@ void ParNewGeneration::collect(bool   full,
   thread_state_set.reset(0 /* Bad value in debug if not reset */,
                          promotion_failed());
 
+  // Trace and reset failed promotion info.
+  if (promotion_failed()) {
+    thread_state_set.trace_promotion_failed(gc_tracer);
+  }
+
   // Process (weak) reference objects found during scavenge.
   ReferenceProcessor* rp = ref_processor();
   IsAliveClosure is_alive(this);