On 04/25/2016 04:17 PM, Trevor Saunders wrote:
On Mon, Apr 25, 2016 at 03:55:15PM +0200, Bernd Schmidt wrote:
On 04/20/2016 08:22 AM, tbsaunde+...@tbsaunde.org wrote:
-/* Remove INSN from queue. */
+/* Remove INSN at idx from queue. */
+static void
+queue_remove (unsigned int q, unsigned int idx)
+{
+ QUEUE_INDEX (insn_queue[q][idx]) = QUEUE_NOWHERE;
+ insn_queue[q].ordered_remove (idx);
+ q_size--;
I think I'm nacking this one, sorry. I don't think ordered_removes in the
scheduler queues are going to fly.
So, we're going from a linear walk through a linked list to linear scan
of part of a vector and memcpy of the rest. That's certainly not great,
but the linked list walk doesn't seem great either. Is unordered_remove
here safe? Or do you have some other idea? I guess we could write a
forward_list.
After looking at it for a bit, I think unordered_remove for the queues
(leaving the ready list alone entirely) is probably alright. I think
here in particular but also for the other patches it would be good to
run some tests that code generation is identical before and after.
Bernd