Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Perform a few automated ES6 transformations to our prelude #1215

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jun 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 28 additions & 28 deletions compiler/prelude/goroutines.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var $stackDepthOffset = 0;
var $getStackDepth = function () {
var $getStackDepth = () => {
var err = new Error();
if (err.stack === undefined) {
return undefined;
Expand All @@ -8,7 +8,7 @@ var $getStackDepth = function () {
};

var $panicStackDepth = null, $panicValue;
var $callDeferred = function (deferred, jsErr, fromPanic) {
var $callDeferred = (deferred, jsErr, fromPanic) => {
if (!fromPanic && deferred !== null && $curGoroutine.deferStack.indexOf(deferred) == -1) {
throw jsErr;
}
Expand Down Expand Up @@ -109,31 +109,31 @@ var $callDeferred = function (deferred, jsErr, fromPanic) {
}
};

var $panic = function (value) {
var $panic = value => {
$curGoroutine.panicStack.push(value);
$callDeferred(null, null, true);
};
var $recover = function () {
var $recover = () => {
if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) {
return $ifaceNil;
}
$panicStackDepth = null;
return $panicValue;
};
var $throw = function (err) { throw err; };
var $throw = err => { throw err; };

var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] };
var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true, $exportedFunctions = 0;
var $mainFinished = false;
var $go = function (fun, args) {
var $go = (fun, args) => {
$totalGoroutines++;
$awakeGoroutines++;
var $goroutine = function () {
var $goroutine = () => {
try {
$curGoroutine = $goroutine;
var r = fun.apply(undefined, args);
var r = fun(...args);
if (r && r.$blk !== undefined) {
fun = function () { return r.$blk(); };
fun = () => { return r.$blk(); };
args = [];
return;
}
Expand Down Expand Up @@ -167,7 +167,7 @@ var $go = function (fun, args) {
};

var $scheduled = [];
var $runScheduled = function () {
var $runScheduled = () => {
// For nested setTimeout calls browsers enforce 4ms minimum delay. We minimize
// the effect of this penalty by queueing the timer preemptively before we run
// the goroutines, and later cancelling it if it turns out unneeded. See:
Expand All @@ -194,7 +194,7 @@ var $runScheduled = function () {
}
};

var $schedule = function (goroutine) {
var $schedule = goroutine => {
if (goroutine.asleep) {
goroutine.asleep = false;
$awakeGoroutines++;
Expand All @@ -205,29 +205,29 @@ var $schedule = function (goroutine) {
}
};

var $setTimeout = function (f, t) {
var $setTimeout = (f, t) => {
$awakeGoroutines++;
return setTimeout(function () {
return setTimeout(() => {
$awakeGoroutines--;
f();
}, t);
};

var $block = function () {
var $block = () => {
if ($curGoroutine === $noGoroutine) {
$throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine");
}
$curGoroutine.asleep = true;
};

var $restore = function (context, params) {
var $restore = (context, params) => {
if (context !== undefined && context.$blk !== undefined) {
return context;
}
return params;
}

var $send = function (chan, value) {
var $send = (chan, value) => {
if (chan.$closed) {
$throwRuntimeError("send on closed channel");
}
Expand All @@ -243,21 +243,21 @@ var $send = function (chan, value) {

var thisGoroutine = $curGoroutine;
var closedDuringSend;
chan.$sendQueue.push(function (closed) {
chan.$sendQueue.push(closed => {
closedDuringSend = closed;
$schedule(thisGoroutine);
return value;
});
$block();
return {
$blk: function () {
$blk() {
if (closedDuringSend) {
$throwRuntimeError("send on closed channel");
}
}
};
};
var $recv = function (chan) {
var $recv = chan => {
var queuedSend = chan.$sendQueue.shift();
if (queuedSend !== undefined) {
chan.$buffer.push(queuedSend(false));
Expand All @@ -271,16 +271,16 @@ var $recv = function (chan) {
}

var thisGoroutine = $curGoroutine;
var f = { $blk: function () { return this.value; } };
var queueEntry = function (v) {
var f = { $blk() { return this.value; } };
var queueEntry = v => {
f.value = v;
$schedule(thisGoroutine);
};
chan.$recvQueue.push(queueEntry);
$block();
return f;
};
var $close = function (chan) {
var $close = chan => {
if (chan.$closed) {
$throwRuntimeError("close of closed channel");
}
Expand All @@ -300,7 +300,7 @@ var $close = function (chan) {
queuedRecv([chan.$elem.zero(), false]);
}
};
var $select = function (comms) {
var $select = comms => {
var ready = [];
var selection = -1;
for (var i = 0; i < comms.length; i++) {
Expand Down Expand Up @@ -344,8 +344,8 @@ var $select = function (comms) {

var entries = [];
var thisGoroutine = $curGoroutine;
var f = { $blk: function () { return this.selection; } };
var removeFromQueues = function () {
var f = { $blk() { return this.selection; } };
var removeFromQueues = () => {
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
var queue = entry[0];
Expand All @@ -356,11 +356,11 @@ var $select = function (comms) {
}
};
for (var i = 0; i < comms.length; i++) {
(function (i) {
(i => {
var comm = comms[i];
switch (comm.length) {
case 1: /* recv */
var queueEntry = function (value) {
var queueEntry = value => {
f.selection = [i, value];
removeFromQueues();
$schedule(thisGoroutine);
Expand All @@ -369,7 +369,7 @@ var $select = function (comms) {
comm[0].$recvQueue.push(queueEntry);
break;
case 2: /* send */
var queueEntry = function () {
var queueEntry = () => {
if (comm[0].$closed) {
$throwRuntimeError("send on closed channel");
}
Expand Down
28 changes: 14 additions & 14 deletions compiler/prelude/jsmapping.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var $jsObjectPtr, $jsErrorPtr;

var $needsExternalization = function (t) {
var $needsExternalization = t => {
switch (t.kind) {
case $kindBool:
case $kindInt:
Expand All @@ -20,7 +20,7 @@ var $needsExternalization = function (t) {
}
};

var $externalize = function (v, t, makeWrapper) {
var $externalize = (v, t, makeWrapper) => {
if (t === $jsObjectPtr) {
return v;
}
Expand All @@ -43,7 +43,7 @@ var $externalize = function (v, t, makeWrapper) {
return $flatten64(v);
case $kindArray:
if ($needsExternalization(t.elem)) {
return $mapArray(v, function (e) { return $externalize(e, t.elem, makeWrapper); });
return $mapArray(v, e => { return $externalize(e, t.elem, makeWrapper); });
}
return v;
case $kindFunc:
Expand Down Expand Up @@ -77,7 +77,7 @@ var $externalize = function (v, t, makeWrapper) {
return null;
}
if ($needsExternalization(t.elem)) {
return $mapArray($sliceToNativeArray(v), function (e) { return $externalize(e, t.elem, makeWrapper); });
return $mapArray($sliceToNativeArray(v), e => { return $externalize(e, t.elem, makeWrapper); });
}
return $sliceToNativeArray(v);
case $kindString:
Expand Down Expand Up @@ -105,7 +105,7 @@ var $externalize = function (v, t, makeWrapper) {
}

var noJsObject = {};
var searchJsObject = function (v, t) {
var searchJsObject = (v, t) => {
if (t === $jsObjectPtr) {
return v;
}
Expand Down Expand Up @@ -149,7 +149,7 @@ var $externalize = function (v, t, makeWrapper) {
$throwRuntimeError("cannot externalize " + t.string);
};

var $externalizeFunction = function (v, t, passThis, makeWrapper) {
var $externalizeFunction = (v, t, passThis, makeWrapper) => {
if (v === $throwNilPointerError) {
return null;
}
Expand Down Expand Up @@ -185,7 +185,7 @@ var $externalizeFunction = function (v, t, passThis, makeWrapper) {
return v.$externalizeWrapper;
};

var $internalize = function (v, t, recv, seen, makeWrapper) {
var $internalize = (v, t, recv, seen, makeWrapper) => {
if (t === $jsObjectPtr) {
return v;
}
Expand Down Expand Up @@ -239,7 +239,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
if (v.length !== t.len) {
$throwRuntimeError("got array with wrong size from JavaScript native");
}
return $mapArray(v, function (e) { return $internalize(e, t.elem, makeWrapper); });
return $mapArray(v, e => { return $internalize(e, t.elem, makeWrapper); });
case $kindFunc:
return function () {
var args = [];
Expand Down Expand Up @@ -303,7 +303,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
return new $jsObjectPtr(v);
}
return new timePkg.Time($internalize(v, timePkg.Time, makeWrapper));
case (function () { }).constructor: // is usually Function, but in Chrome extensions it is something else
case ((() => { })).constructor: // is usually Function, but in Chrome extensions it is something else
var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true);
return new funcType($internalize(v, funcType, makeWrapper));
case Number:
Expand All @@ -323,15 +323,15 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
var keys = $keys(v);
for (var i = 0; i < keys.length; i++) {
var k = $internalize(keys[i], t.key, recv, seen, makeWrapper);
m.set(t.key.keyFor(k), { k: k, v: $internalize(v[keys[i]], t.elem, recv, seen, makeWrapper) });
m.set(t.key.keyFor(k), { k, v: $internalize(v[keys[i]], t.elem, recv, seen, makeWrapper) });
}
return m;
case $kindPtr:
if (t.elem.kind === $kindStruct) {
return $internalize(v, t.elem, makeWrapper);
}
case $kindSlice:
return new t($mapArray(v, function (e) { return $internalize(e, t.elem, makeWrapper); }));
return new t($mapArray(v, e => { return $internalize(e, t.elem, makeWrapper); }));
case $kindString:
v = String(v);
if ($isASCII(v)) {
Expand All @@ -354,7 +354,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
return s;
case $kindStruct:
var noJsObject = {};
var searchJsObject = function (t) {
var searchJsObject = t => {
if (t === $jsObjectPtr) {
return v;
}
Expand Down Expand Up @@ -388,7 +388,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
$throwRuntimeError("cannot internalize " + t.string);
};

var $copyIfRequired = function (v, typ) {
var $copyIfRequired = (v, typ) => {
// interface values
if (v && v.constructor && v.constructor.copy) {
return new v.constructor($clone(v.$val, v.constructor))
Expand All @@ -403,7 +403,7 @@ var $copyIfRequired = function (v, typ) {
}

/* $isASCII reports whether string s contains only ASCII characters. */
var $isASCII = function (s) {
var $isASCII = s => {
for (var i = 0; i < s.length; i++) {
if (s.charCodeAt(i) >= 128) {
return false;
Expand Down
Loading