From b703fc1c0ff369a09018b54645c2832859816cf4 Mon Sep 17 00:00:00 2001
From: Florian Schmaus <flow@cs.fau.de>
Date: Mon, 19 Jun 2017 08:18:01 +0200
Subject: [PATCH] Add overflow feature to LAWS scheduler

---
 emper/strategies/laws/LawsScheduler.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/emper/strategies/laws/LawsScheduler.cpp b/emper/strategies/laws/LawsScheduler.cpp
index 394e8c1a..5e605992 100644
--- a/emper/strategies/laws/LawsScheduler.cpp
+++ b/emper/strategies/laws/LawsScheduler.cpp
@@ -3,6 +3,8 @@
 #include "Common.hpp"
 #include "Runtime.hpp"
 
+#define EMPER_OVERFLOW_QUEUE
+
 thread_local adt::MpscQueue<Fiber> priorityQueue;
 
 thread_local LawsScheduler::WsQueue<LawsScheduler::QUEUE_SIZE> LawsScheduler::queue;
@@ -34,7 +36,11 @@ void LawsScheduler::schedule(Fiber& fiber) {
 	}
 	bool pushed = queue.pushBottom(&fiber);
 	if (unlikely(!pushed)) {
-		abort();
+#ifdef EMPER_OVERFLOW_QUEUE
+		priorityQueue.enqueue(&fiber);
+#else
+		ABORT("Could not push fiber " << &fiber << " into queue");
+#endif
 	}
 }
 
-- 
GitLab