| 
					
				 | 
			
			
				@@ -684,13 +684,30 @@ selector: "initialize", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'initialization', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var sentinel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self,"_initialize",[],smalltalk.Object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@poolSize"]=(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@maxPoolSize"]=smalltalk.send(smalltalk.send(self,"_class",[]),"_defaultMaxPoolSize",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@queue"]=smalltalk.send((smalltalk.Queue || Queue),"_new",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+self["@worker"]=smalltalk.send(self,"_makeWorker",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "initialize\x0a    super initialize.\x0a\x09poolSize := 0.\x0a    maxPoolSize := self class defaultMaxPoolSize.\x0a    queue := Queue new.\x0a    worker := self makeWorker", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["initialize", "defaultMaxPoolSize", "class", "new", "makeWorker"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Queue"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ForkPool); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_makeWorker", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "makeWorker", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'initialization', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var $2,$1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var sentinel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sentinel=smalltalk.send((smalltalk.Object || Object),"_new",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-self["@worker"]=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@poolSize"]=smalltalk.send(self["@poolSize"],"__minus",[(1)]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 self["@poolSize"]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -698,8 +715,8 @@ block=smalltalk.send(self["@queue"],"_frontIfAbsent_",[(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return sentinel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=smalltalk.send(block,"__eq_eq",[sentinel]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if(! smalltalk.assert($1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=smalltalk.send(block,"__eq_eq",[sentinel]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if(! smalltalk.assert($2)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send((function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send(block,"_value",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }),"_ensure_",[(function(){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -707,11 +724,12 @@ return smalltalk.send(self,"_addWorker",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "initialize\x0a\x09| sentinel |\x0a\x09poolSize := 0.\x0a    maxPoolSize := self class defaultMaxPoolSize.\x0a    queue := Queue new.\x0a    sentinel := Object new.\x0a    worker := [\x0a\x09\x09| block |\x0a        poolSize := poolSize - 1.\x0a\x09\x09block := queue frontIfAbsent: [ sentinel ].\x0a        block == sentinel ifFalse: [\x0a        \x09[ block value ] ensure: [ self addWorker ]]].", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["defaultMaxPoolSize", "class", "new", "-", "frontIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["Queue", "Object"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "makeWorker\x0a\x09| sentinel |\x0a    sentinel := Object new.\x0a    ^[ | block |\x0a        poolSize := poolSize - 1.\x0a\x09\x09block := queue frontIfAbsent: [ sentinel ].\x0a        block == sentinel ifFalse: [\x0a        \x09[ block value ] ensure: [ self addWorker ]]]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["new", "-", "frontIfAbsent:", "ifFalse:", "ensure:", "addWorker", "value", "=="], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["Object"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.ForkPool); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |