Skip to content

Commit d95ebd3

Browse files
committed
Use async/await for LZ4.loadPackage
1 parent a51e7ef commit d95ebd3

4 files changed

Lines changed: 15 additions & 31 deletions

File tree

src/lib/liblz4.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#if LZ4
88
addToLibrary({
9-
$LZ4__deps: ['$FS', '$preloadPlugins', '$getUniqueRunDependency', '$addRunDependency', '$removeRunDependency'],
9+
$LZ4__deps: ['$FS', '$preloadPlugins'],
1010
$LZ4: {
1111
DIR_MODE: {{{ cDefs.S_IFDIR | 0o777 }}},
1212
FILE_MODE: {{{ cDefs.S_IFREG | 0o777 }}},
@@ -20,7 +20,7 @@ addToLibrary({
2020
})();
2121
LZ4.CHUNK_SIZE = LZ4.codec.CHUNK_SIZE;
2222
},
23-
loadPackage(pack, preloadPlugin) {
23+
async loadPackage(pack, preloadPlugin) {
2424
LZ4.init();
2525
var compressedData = pack['compressedData'] || LZ4.codec.compressPackage(pack['data']);
2626
assert(compressedData['cachedIndexes'].length === compressedData['cachedChunks'].length);
@@ -52,14 +52,11 @@ addToLibrary({
5252
var fullname = file.filename;
5353
for (var plugin of preloadPlugins) {
5454
if (plugin['canHandle'](fullname)) {
55-
var dep = getUniqueRunDependency('fp ' + fullname);
56-
addRunDependency(dep);
57-
var finish = () => removeRunDependency(dep);
5855
var byteArray = FS.readFile(fullname);
5956
#if ASSERTIONS
6057
assert(plugin['handle'].constructor.name === 'AsyncFunction', 'Filesystem plugin handlers must be async functions (See #24914)')
6158
#endif
62-
plugin['handle'](byteArray, fullname).then(finish).catch(finish);
59+
await plugin['handle'](byteArray, fullname);
6360
break;
6461
}
6562
}

test/codesize/test_codesize_file_preload.expected.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,6 @@ Module["expectedDataFileDownloads"]++;
112112
function assert(check, msg) {
113113
if (!check) throw new Error(msg);
114114
}
115-
for (var file of metadata["files"]) {
116-
var name = file["filename"];
117-
Module["addRunDependency"](`fp ${name}`);
118-
}
119115
async function processPackageData(arrayBuffer) {
120116
assert(arrayBuffer, "Loading data file failed.");
121117
assert(arrayBuffer.constructor.name === ArrayBuffer.name, "bad input to processPackageData " + arrayBuffer.constructor.name);
@@ -138,7 +134,7 @@ Module["expectedDataFileDownloads"]++;
138134
if (!fetched) {
139135
fetched = await fetchPromise;
140136
}
141-
processPackageData(fetched);
137+
await processPackageData(fetched);
142138
}
143139
if (Module["calledRun"]) {
144140
runWithFS(Module);

test/codesize/test_codesize_file_preload.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
"a.out.js": 22224,
3-
"a.out.js.gz": 9207,
2+
"a.out.js": 22168,
3+
"a.out.js.gz": 9202,
44
"a.out.nodebug.wasm": 1666,
55
"a.out.nodebug.wasm.gz": 945,
6-
"total": 23890,
7-
"total_gz": 10152,
6+
"total": 23834,
7+
"total_gz": 10147,
88
"sent": [
99
"a (fd_write)"
1010
],

tools/file_packager.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -689,15 +689,6 @@ def generate_preload_js(data_target, data_files, metadata):
689689

690690
finish_handler = create_preloaded if options.use_preload_plugins else create_data
691691

692-
if not options.lz4:
693-
# Data requests - for getting a block of data out of the big archive - have
694-
# a similar API to XHRs
695-
code += '''
696-
for (var file of metadata['files']) {
697-
var name = file['filename']
698-
Module['addRunDependency'](`fp ${name}`);
699-
}\n'''
700-
701692
catch_handler = ''
702693
if options.export_es6:
703694
catch_handler += '''
@@ -735,7 +726,7 @@ def generate_preload_js(data_target, data_files, metadata):
735726
use_data = '''var compressedData = %s;
736727
compressedData['data'] = byteArray;
737728
assert(typeof Module['LZ4'] === 'object', 'LZ4 not present - was your app build with -sLZ4?');
738-
Module['LZ4'].loadPackage({ 'metadata': metadata, 'compressedData': compressedData }, %s);
729+
await Module['LZ4'].loadPackage({ 'metadata': metadata, 'compressedData': compressedData }, %s);
739730
Module['removeRunDependency']('datafile_%s');''' % (meta, "true" if options.use_preload_plugins else "false", js_manipulation.escape_for_js_string(data_target))
740731

741732
if options.export_es6:
@@ -993,7 +984,7 @@ def generate_preload_js(data_target, data_files, metadata):
993984
async function preloadFallback(error) {
994985
console.error(error);
995986
console.error('falling back to default preload behavior');
996-
processPackageData(await fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE));
987+
await processPackageData(await fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE));
997988
}
998989
999990
try {
@@ -1002,14 +993,14 @@ def generate_preload_js(data_target, data_files, metadata):
1002993
var useCached = !!pkgMetadata;
1003994
Module['preloadResults'][PACKAGE_NAME] = {fromCache: useCached};
1004995
if (useCached) {
1005-
processPackageData(await fetchCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME, pkgMetadata));
996+
await processPackageData(await fetchCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME, pkgMetadata));
1006997
} else {
1007998
var packageData = await fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE);
1008999
try {
1009-
processPackageData(await cacheRemotePackage(db, PACKAGE_PATH + PACKAGE_NAME, packageData, {uuid:PACKAGE_UUID}))
1000+
await processPackageData(await cacheRemotePackage(db, PACKAGE_PATH + PACKAGE_NAME, packageData, {uuid:PACKAGE_UUID}))
10101001
} catch (error) {
10111002
console.error(error);
1012-
processPackageData(packageData);
1003+
await processPackageData(packageData);
10131004
}
10141005
}
10151006
} catch(e) {
@@ -1037,7 +1028,7 @@ def generate_preload_js(data_target, data_files, metadata):
10371028
if (!fetched) {
10381029
fetched = await fetchPromise;
10391030
}
1040-
processPackageData(fetched);\n'''
1031+
await processPackageData(fetched);\n'''
10411032

10421033
ret += '''
10431034
async function runWithFS(Module) {\n'''
@@ -1077,7 +1068,7 @@ def generate_preload_js(data_target, data_files, metadata):
10771068
throw new Error(`${response.status}: ${response.url}`);
10781069
}
10791070
var json = await response.json();
1080-
await loadPackage(json);
1071+
loadPackage(json);
10811072
}
10821073
10831074
if (Module['calledRun']) {

0 commit comments

Comments
 (0)