|
@@ -264,17 +264,16 @@ selector: "valueWithInterval:",
|
|
|
category: 'timeout/interval',
|
|
|
fn: function (aNumber){
|
|
|
var self=this;
|
|
|
-var $1;
|
|
|
-var local;
|
|
|
-local = setInterval(self, aNumber);
|
|
|
+
|
|
|
+ var interval = setInterval(self, aNumber);
|
|
|
+ return smalltalk.Timeout._on_(interval);
|
|
|
+ ;
|
|
|
;
|
|
|
-$1=smalltalk.send((smalltalk.Timeout || Timeout),"_on_",[local]);
|
|
|
-return $1;
|
|
|
-},
|
|
|
+return self},
|
|
|
args: ["aNumber"],
|
|
|
-source: "valueWithInterval: aNumber\x0a\x09| local |\x0a\x09<local = setInterval(self, aNumber)>.\x0a ^ Timeout on: local",
|
|
|
-messageSends: ["on:"],
|
|
|
-referencedClasses: ["Timeout"]
|
|
|
+source: "valueWithInterval: aNumber\x0a\x09<\x0a \x09var interval = setInterval(self, aNumber);\x0a \x09return smalltalk.Timeout._on_(interval);\x0a >",
|
|
|
+messageSends: [],
|
|
|
+referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.BlockClosure);
|
|
|
|
|
@@ -302,17 +301,16 @@ selector: "valueWithTimeout:",
|
|
|
category: 'timeout/interval',
|
|
|
fn: function (aNumber){
|
|
|
var self=this;
|
|
|
-var $1;
|
|
|
-var local;
|
|
|
-local = setTimeout(self, aNumber);
|
|
|
+
|
|
|
+ var timeout = setTimeout(self, aNumber);
|
|
|
+ return smalltalk.Timeout._on_(timeout);
|
|
|
+ ;
|
|
|
;
|
|
|
-$1=smalltalk.send((smalltalk.Timeout || Timeout),"_on_",[local]);
|
|
|
-return $1;
|
|
|
-},
|
|
|
+return self},
|
|
|
args: ["aNumber"],
|
|
|
-source: "valueWithTimeout: aNumber\x0a\x09| local |\x0a\x09<local = setTimeout(self, aNumber)>.\x0a ^ Timeout on: local",
|
|
|
-messageSends: ["on:"],
|
|
|
-referencedClasses: ["Timeout"]
|
|
|
+source: "valueWithTimeout: aNumber\x0a\x09<\x0a \x09var timeout = setTimeout(self, aNumber);\x0a \x09return smalltalk.Timeout._on_(timeout);\x0a >",
|
|
|
+messageSends: [],
|
|
|
+referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.BlockClosure);
|
|
|
|
|
@@ -647,6 +645,7 @@ smalltalk.CompiledMethod);
|
|
|
|
|
|
|
|
|
smalltalk.addClass('ForkPool', smalltalk.Object, ['poolSize', 'maxPoolSize', 'queue', 'worker'], 'Kernel-Methods');
|
|
|
+smalltalk.ForkPool.comment="A ForkPool is responsible for handling forked blocks.\x0aThe pool size sets the maximum concurrent forked blocks.\x0a\x0aThe default instance is accessed with `ForkPool default`"
|
|
|
smalltalk.addMethod(
|
|
|
"_addWorker",
|
|
|
smalltalk.method({
|
|
@@ -664,6 +663,24 @@ referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.ForkPool);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+"_defaultMaxPoolSize",
|
|
|
+smalltalk.method({
|
|
|
+selector: "defaultMaxPoolSize",
|
|
|
+category: 'defaults',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+var $1;
|
|
|
+$1=smalltalk.send(smalltalk.send(self,"_class",[]),"_defaultMaxPoolSize",[]);
|
|
|
+return $1;
|
|
|
+},
|
|
|
+args: [],
|
|
|
+source: "defaultMaxPoolSize\x0a\x09^ self class defaultMaxPoolSize",
|
|
|
+messageSends: ["defaultMaxPoolSize", "class"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.ForkPool);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
"_fork_",
|
|
|
smalltalk.method({
|
|
@@ -672,15 +689,15 @@ category: 'action',
|
|
|
fn: function (aBlock){
|
|
|
var self=this;
|
|
|
var $1;
|
|
|
-$1=smalltalk.send(self["@poolSize"],"__lt",[self["@maxPoolSize"]]);
|
|
|
+$1=smalltalk.send(self["@poolSize"],"__lt",[smalltalk.send(self,"_maxPoolSize",[])]);
|
|
|
if(smalltalk.assert($1)){
|
|
|
smalltalk.send(self,"_addWorker",[]);
|
|
|
};
|
|
|
smalltalk.send(self["@queue"],"_back_",[aBlock]);
|
|
|
return self},
|
|
|
args: ["aBlock"],
|
|
|
-source: "fork: aBlock\x0a\x09poolSize < maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue back: aBlock",
|
|
|
-messageSends: ["ifTrue:", "addWorker", "<", "back:"],
|
|
|
+source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue back: aBlock",
|
|
|
+messageSends: ["ifTrue:", "addWorker", "<", "maxPoolSize", "back:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.ForkPool);
|
|
@@ -694,13 +711,12 @@ fn: function (){
|
|
|
var self=this;
|
|
|
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"],
|
|
|
+source: "initialize\x0a super initialize.\x0a \x0a\x09poolSize := 0.\x0a queue := Queue new.\x0a worker := self makeWorker",
|
|
|
+messageSends: ["initialize", "new", "makeWorker"],
|
|
|
referencedClasses: ["Queue"]
|
|
|
}),
|
|
|
smalltalk.ForkPool);
|
|
@@ -741,6 +757,45 @@ referencedClasses: ["Object"]
|
|
|
}),
|
|
|
smalltalk.ForkPool);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+"_maxPoolSize",
|
|
|
+smalltalk.method({
|
|
|
+selector: "maxPoolSize",
|
|
|
+category: 'accessing',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+var $2,$1;
|
|
|
+$2=self["@maxPoolSize"];
|
|
|
+if(($receiver = $2) == nil || $receiver == undefined){
|
|
|
+$1=smalltalk.send(self,"_defaultMaxPoolSize",[]);
|
|
|
+} else {
|
|
|
+$1=$2;
|
|
|
+};
|
|
|
+return $1;
|
|
|
+},
|
|
|
+args: [],
|
|
|
+source: "maxPoolSize\x0a\x09^ maxPoolSize ifNil: [ self defaultMaxPoolSize ]",
|
|
|
+messageSends: ["ifNil:", "defaultMaxPoolSize"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.ForkPool);
|
|
|
+
|
|
|
+smalltalk.addMethod(
|
|
|
+"_maxPoolSize_",
|
|
|
+smalltalk.method({
|
|
|
+selector: "maxPoolSize:",
|
|
|
+category: 'accessing',
|
|
|
+fn: function (anInteger){
|
|
|
+var self=this;
|
|
|
+self["@maxPoolSize"]=anInteger;
|
|
|
+return self},
|
|
|
+args: ["anInteger"],
|
|
|
+source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
|
|
|
+messageSends: [],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.ForkPool);
|
|
|
+
|
|
|
|
|
|
smalltalk.ForkPool.klass.iVarNames = ['default'];
|
|
|
smalltalk.addMethod(
|