1
1
var $stackDepthOffset = 0 ;
2
- var $getStackDepth = function ( ) {
2
+ var $getStackDepth = ( ) => {
3
3
var err = new Error ( ) ;
4
4
if ( err . stack === undefined ) {
5
5
return undefined ;
@@ -8,7 +8,7 @@ var $getStackDepth = function () {
8
8
} ;
9
9
10
10
var $panicStackDepth = null , $panicValue ;
11
- var $callDeferred = function ( deferred , jsErr , fromPanic ) {
11
+ var $callDeferred = ( deferred , jsErr , fromPanic ) => {
12
12
if ( ! fromPanic && deferred !== null && $curGoroutine . deferStack . indexOf ( deferred ) == - 1 ) {
13
13
throw jsErr ;
14
14
}
@@ -109,31 +109,31 @@ var $callDeferred = function (deferred, jsErr, fromPanic) {
109
109
}
110
110
} ;
111
111
112
- var $panic = function ( value ) {
112
+ var $panic = value => {
113
113
$curGoroutine . panicStack . push ( value ) ;
114
114
$callDeferred ( null , null , true ) ;
115
115
} ;
116
- var $recover = function ( ) {
116
+ var $recover = ( ) => {
117
117
if ( $panicStackDepth === null || ( $panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth ( ) - 2 ) ) {
118
118
return $ifaceNil ;
119
119
}
120
120
$panicStackDepth = null ;
121
121
return $panicValue ;
122
122
} ;
123
- var $throw = function ( err ) { throw err ; } ;
123
+ var $throw = err => { throw err ; } ;
124
124
125
125
var $noGoroutine = { asleep : false , exit : false , deferStack : [ ] , panicStack : [ ] } ;
126
126
var $curGoroutine = $noGoroutine , $totalGoroutines = 0 , $awakeGoroutines = 0 , $checkForDeadlock = true , $exportedFunctions = 0 ;
127
127
var $mainFinished = false ;
128
- var $go = function ( fun , args ) {
128
+ var $go = ( fun , args ) => {
129
129
$totalGoroutines ++ ;
130
130
$awakeGoroutines ++ ;
131
- var $goroutine = function ( ) {
131
+ var $goroutine = ( ) => {
132
132
try {
133
133
$curGoroutine = $goroutine ;
134
134
var r = fun ( ...args ) ;
135
135
if ( r && r . $blk !== undefined ) {
136
- fun = function ( ) { return r . $blk ( ) ; } ;
136
+ fun = ( ) => { return r . $blk ( ) ; } ;
137
137
args = [ ] ;
138
138
return ;
139
139
}
@@ -167,7 +167,7 @@ var $go = function (fun, args) {
167
167
} ;
168
168
169
169
var $scheduled = [ ] ;
170
- var $runScheduled = function ( ) {
170
+ var $runScheduled = ( ) => {
171
171
// For nested setTimeout calls browsers enforce 4ms minimum delay. We minimize
172
172
// the effect of this penalty by queueing the timer preemptively before we run
173
173
// the goroutines, and later cancelling it if it turns out unneeded. See:
@@ -194,7 +194,7 @@ var $runScheduled = function () {
194
194
}
195
195
} ;
196
196
197
- var $schedule = function ( goroutine ) {
197
+ var $schedule = goroutine => {
198
198
if ( goroutine . asleep ) {
199
199
goroutine . asleep = false ;
200
200
$awakeGoroutines ++ ;
@@ -205,29 +205,29 @@ var $schedule = function (goroutine) {
205
205
}
206
206
} ;
207
207
208
- var $setTimeout = function ( f , t ) {
208
+ var $setTimeout = ( f , t ) => {
209
209
$awakeGoroutines ++ ;
210
- return setTimeout ( function ( ) {
210
+ return setTimeout ( ( ) => {
211
211
$awakeGoroutines -- ;
212
212
f ( ) ;
213
213
} , t ) ;
214
214
} ;
215
215
216
- var $block = function ( ) {
216
+ var $block = ( ) => {
217
217
if ( $curGoroutine === $noGoroutine ) {
218
218
$throwRuntimeError ( "cannot block in JavaScript callback, fix by wrapping code in goroutine" ) ;
219
219
}
220
220
$curGoroutine . asleep = true ;
221
221
} ;
222
222
223
- var $restore = function ( context , params ) {
223
+ var $restore = ( context , params ) => {
224
224
if ( context !== undefined && context . $blk !== undefined ) {
225
225
return context ;
226
226
}
227
227
return params ;
228
228
}
229
229
230
- var $send = function ( chan , value ) {
230
+ var $send = ( chan , value ) => {
231
231
if ( chan . $closed ) {
232
232
$throwRuntimeError ( "send on closed channel" ) ;
233
233
}
@@ -243,7 +243,7 @@ var $send = function (chan, value) {
243
243
244
244
var thisGoroutine = $curGoroutine ;
245
245
var closedDuringSend ;
246
- chan . $sendQueue . push ( function ( closed ) {
246
+ chan . $sendQueue . push ( closed => {
247
247
closedDuringSend = closed ;
248
248
$schedule ( thisGoroutine ) ;
249
249
return value ;
@@ -257,7 +257,7 @@ var $send = function (chan, value) {
257
257
}
258
258
} ;
259
259
} ;
260
- var $recv = function ( chan ) {
260
+ var $recv = chan => {
261
261
var queuedSend = chan . $sendQueue . shift ( ) ;
262
262
if ( queuedSend !== undefined ) {
263
263
chan . $buffer . push ( queuedSend ( false ) ) ;
@@ -272,15 +272,15 @@ var $recv = function (chan) {
272
272
273
273
var thisGoroutine = $curGoroutine ;
274
274
var f = { $blk : function ( ) { return this . value ; } } ;
275
- var queueEntry = function ( v ) {
275
+ var queueEntry = v => {
276
276
f . value = v ;
277
277
$schedule ( thisGoroutine ) ;
278
278
} ;
279
279
chan . $recvQueue . push ( queueEntry ) ;
280
280
$block ( ) ;
281
281
return f ;
282
282
} ;
283
- var $close = function ( chan ) {
283
+ var $close = chan => {
284
284
if ( chan . $closed ) {
285
285
$throwRuntimeError ( "close of closed channel" ) ;
286
286
}
@@ -300,7 +300,7 @@ var $close = function (chan) {
300
300
queuedRecv ( [ chan . $elem . zero ( ) , false ] ) ;
301
301
}
302
302
} ;
303
- var $select = function ( comms ) {
303
+ var $select = comms => {
304
304
var ready = [ ] ;
305
305
var selection = - 1 ;
306
306
for ( var i = 0 ; i < comms . length ; i ++ ) {
@@ -345,7 +345,7 @@ var $select = function (comms) {
345
345
var entries = [ ] ;
346
346
var thisGoroutine = $curGoroutine ;
347
347
var f = { $blk : function ( ) { return this . selection ; } } ;
348
- var removeFromQueues = function ( ) {
348
+ var removeFromQueues = ( ) => {
349
349
for ( var i = 0 ; i < entries . length ; i ++ ) {
350
350
var entry = entries [ i ] ;
351
351
var queue = entry [ 0 ] ;
@@ -356,11 +356,11 @@ var $select = function (comms) {
356
356
}
357
357
} ;
358
358
for ( var i = 0 ; i < comms . length ; i ++ ) {
359
- ( function ( i ) {
359
+ ( i => {
360
360
var comm = comms [ i ] ;
361
361
switch ( comm . length ) {
362
362
case 1 : /* recv */
363
- var queueEntry = function ( value ) {
363
+ var queueEntry = value => {
364
364
f . selection = [ i , value ] ;
365
365
removeFromQueues ( ) ;
366
366
$schedule ( thisGoroutine ) ;
@@ -369,7 +369,7 @@ var $select = function (comms) {
369
369
comm [ 0 ] . $recvQueue . push ( queueEntry ) ;
370
370
break ;
371
371
case 2 : /* send */
372
- var queueEntry = function ( ) {
372
+ var queueEntry = ( ) => {
373
373
if ( comm [ 0 ] . $closed ) {
374
374
$throwRuntimeError ( "send on closed channel" ) ;
375
375
}
0 commit comments