heavy webworker load can park the main thread of a

background chrome tab for 10sec; piggyback some pokes off postmessage
This commit is contained in:
ed 2023-03-02 22:35:32 +00:00
parent db95e880b2
commit 0009e31bd3
2 changed files with 14 additions and 4 deletions

View file

@ -114,10 +114,10 @@ function up2k_flagbus() {
do_take(now); do_take(now);
return; return;
} }
if (flag.owner && now - flag.owner[1] > 5000) { if (flag.owner && now - flag.owner[1] > 12000) {
flag.owner = null; flag.owner = null;
} }
if (flag.wants && now - flag.wants[1] > 5000) { if (flag.wants && now - flag.wants[1] > 12000) {
flag.wants = null; flag.wants = null;
} }
if (!flag.owner && !flag.wants) { if (!flag.owner && !flag.wants) {
@ -772,6 +772,7 @@ function fsearch_explain(n) {
function up2k_init(subtle) { function up2k_init(subtle) {
var r = { var r = {
"tact": Date.now(),
"init_deps": init_deps, "init_deps": init_deps,
"set_fsearch": set_fsearch, "set_fsearch": set_fsearch,
"gotallfiles": [gotallfiles] // hooks "gotallfiles": [gotallfiles] // hooks
@ -1647,8 +1648,14 @@ function up2k_init(subtle) {
running = true; running = true;
while (true) { while (true) {
var now = Date.now(), var now = Date.now(),
blocktime = now - r.tact,
is_busy = st.car < st.files.length; is_busy = st.car < st.files.length;
if (blocktime > 2500)
console.log('main thread blocked for ' + blocktime);
r.tact = now;
if (was_busy && !is_busy) { if (was_busy && !is_busy) {
for (var a = 0; a < st.files.length; a++) { for (var a = 0; a < st.files.length; a++) {
var t = st.files[a]; var t = st.files[a];
@ -2043,6 +2050,8 @@ function up2k_init(subtle) {
nbusy++; nbusy++;
reading++; reading++;
nchunk++; nchunk++;
if (Date.now() - up2k.tact > 1500)
tasker();
} }
function onmsg(d) { function onmsg(d) {

View file

@ -112,12 +112,13 @@ if ((document.location + '').indexOf(',rej,') + 1)
try { try {
console.hist = []; console.hist = [];
var CMAXHIST = 100;
var hook = function (t) { var hook = function (t) {
var orig = console[t].bind(console), var orig = console[t].bind(console),
cfun = function () { cfun = function () {
console.hist.push(Date.now() + ' ' + t + ': ' + Array.from(arguments).join(', ')); console.hist.push(Date.now() + ' ' + t + ': ' + Array.from(arguments).join(', '));
if (console.hist.length > 100) if (console.hist.length > CMAXHIST)
console.hist = console.hist.slice(50); console.hist = console.hist.slice(CMAXHIST / 2);
orig.apply(console, arguments); orig.apply(console, arguments);
}; };