Index: libcfa/src/concurrency/ready_subqueue.hfa
===================================================================
--- libcfa/src/concurrency/ready_subqueue.hfa	(revision 8cd40bf8f695d26ae4aace6ae9e3c3150abe3703)
+++ libcfa/src/concurrency/ready_subqueue.hfa	(revision 16fd826a3bf8c266056376651e653e5ea88cbc89)
@@ -11,4 +11,8 @@
 	// spin lock protecting the queue
 	volatile bool lock;
+
+	#if !defined(__CFA_NO_STATISTICS__)
+		unsigned cnt;
+	#endif
 
 	__thread_desc_link anchor;
@@ -29,6 +33,10 @@
 	this.anchor.next = 0p;
 	this.anchor.ts   = 0;
+	#if !defined(__CFA_NO_STATISTICS__)
+		this.cnt  = 0;
+	#endif
 
 	// We add a boat-load of assertions here because the anchor code is very fragile
+	/* paranoid */ _Static_assert( offsetof( $thread, link ) == offsetof(__intrusive_lane_t, anchor) );
 	/* paranoid */ verify( offsetof( $thread, link ) == offsetof(__intrusive_lane_t, anchor) );
 	/* paranoid */ verify( ((uintptr_t)( mock_head(this) ) + offsetof( $thread, link )) == (uintptr_t)(&this.anchor) );
@@ -54,4 +62,5 @@
 // returns true of lane was empty before push, false otherwise
 static inline void push( __intrusive_lane_t & this, $thread * node ) {
+	/* paranoid */ verify( this.lock );
 	/* paranoid */ verify( node->link.next == 0p );
 	/* paranoid */ verify( node->link.ts   == 0  );
@@ -72,4 +81,7 @@
 	this.prev->link.ts   = rdtscl();
 	this.prev = node;
+	#if !defined(__CFA_NO_STATISTICS__)
+		this.cnt++;
+	#endif
 }
 
@@ -78,4 +90,5 @@
 // returns true of lane was empty before push, false otherwise
 static inline [* $thread, unsigned long long] pop( __intrusive_lane_t & this ) {
+	/* paranoid */ verify( this.lock );
 	/* paranoid */ verify( this.anchor.next != 0p );
 	/* paranoid */ verify( this.anchor.ts   != 0  );
@@ -89,4 +102,7 @@
 	node->link.next = 0p;
 	node->link.ts   = 0;
+	#if !defined(__CFA_NO_STATISTICS__)
+		this.cnt--;
+	#endif
 
 	// Update head time stamp
