Skip to content

Commit f3bba6e

Browse files
authored
Simplify use of withStackSave when used in arrow functions. NFC (#19614)
1 parent a60507f commit f3bba6e

File tree

3 files changed

+83
-105
lines changed

3 files changed

+83
-105
lines changed

src/library_exceptions.js

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -312,23 +312,21 @@ var LibraryExceptions = {
312312
#endif
313313
#if WASM_EXCEPTIONS || !DISABLE_EXCEPTION_CATCHING
314314
$getExceptionMessageCommon__deps: ['__get_exception_message', 'free', '$withStackSave'],
315-
$getExceptionMessageCommon: function(ptr) {
316-
return withStackSave(function() {
317-
var type_addr_addr = stackAlloc({{{ POINTER_SIZE }}});
318-
var message_addr_addr = stackAlloc({{{ POINTER_SIZE }}});
319-
___get_exception_message({{{ to64('ptr') }}}, {{{ to64('type_addr_addr') }}}, {{{ to64('message_addr_addr') }}});
320-
var type_addr = {{{ makeGetValue('type_addr_addr', 0, '*') }}};
321-
var message_addr = {{{ makeGetValue('message_addr_addr', 0, '*') }}};
322-
var type = UTF8ToString(type_addr);
323-
_free(type_addr);
324-
var message;
325-
if (message_addr) {
326-
message = UTF8ToString(message_addr);
327-
_free(message_addr);
328-
}
329-
return [type, message];
330-
});
331-
},
315+
$getExceptionMessageCommon: (ptr) => withStackSave(() => {
316+
var type_addr_addr = stackAlloc({{{ POINTER_SIZE }}});
317+
var message_addr_addr = stackAlloc({{{ POINTER_SIZE }}});
318+
___get_exception_message({{{ to64('ptr') }}}, {{{ to64('type_addr_addr') }}}, {{{ to64('message_addr_addr') }}});
319+
var type_addr = {{{ makeGetValue('type_addr_addr', 0, '*') }}};
320+
var message_addr = {{{ makeGetValue('message_addr_addr', 0, '*') }}};
321+
var type = UTF8ToString(type_addr);
322+
_free(type_addr);
323+
var message;
324+
if (message_addr) {
325+
message = UTF8ToString(message_addr);
326+
_free(message_addr);
327+
}
328+
return [type, message];
329+
}),
332330
#endif
333331
#if WASM_EXCEPTIONS
334332
$getCppExceptionTag: function() {

src/library_html5.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2508,17 +2508,15 @@ var LibraryHTML5 = {
25082508

25092509
// JavaScript-friendly API, returns pair [width, height]
25102510
$getCanvasElementSize__deps: ['emscripten_get_canvas_element_size', '$withStackSave', '$stringToUTF8OnStack'],
2511-
$getCanvasElementSize: function(target) {
2512-
return withStackSave(function() {
2513-
var w = stackAlloc(8);
2514-
var h = w + 4;
2515-
2516-
var targetInt = stringToUTF8OnStack(target.id);
2517-
var ret = _emscripten_get_canvas_element_size(targetInt, w, h);
2518-
var size = [{{{ makeGetValue('w', 0, 'i32')}}}, {{{ makeGetValue('h', 0, 'i32')}}}];
2519-
return size;
2520-
});
2521-
},
2511+
$getCanvasElementSize: (target) => withStackSave(() => {
2512+
var w = stackAlloc(8);
2513+
var h = w + 4;
2514+
2515+
var targetInt = stringToUTF8OnStack(target.id);
2516+
var ret = _emscripten_get_canvas_element_size(targetInt, w, h);
2517+
var size = [{{{ makeGetValue('w', 0, 'i32')}}}, {{{ makeGetValue('h', 0, 'i32')}}}];
2518+
return size;
2519+
}),
25222520

25232521
emscripten_set_element_css_size__proxy: 'sync',
25242522
emscripten_set_element_css_size__deps: ['$JSEvents', '$findEventTarget'],

src/library_wasmfs.js

Lines changed: 59 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -103,51 +103,39 @@ FS.createPreloadedFile = FS_createPreloadedFile;
103103
// to include that.
104104
// Full JS API support
105105

106-
cwd: () => {
107-
return UTF8ToString(__wasmfs_get_cwd());
108-
},
109-
mkdir: (path, mode) => {
110-
return withStackSave(() => {
111-
mode = mode !== undefined ? mode : 511 /* 0777 */;
112-
var buffer = stringToUTF8OnStack(path);
113-
return __wasmfs_mkdir({{{ to64('buffer') }}}, mode);
114-
});
115-
},
106+
cwd: () => UTF8ToString(__wasmfs_get_cwd()),
107+
mkdir: (path, mode) => withStackSave(() => {
108+
mode = mode !== undefined ? mode : 511 /* 0777 */;
109+
var buffer = stringToUTF8OnStack(path);
110+
return __wasmfs_mkdir({{{ to64('buffer') }}}, mode);
111+
}),
116112
// TODO: mkdirTree
117-
rmdir: (path) => {
118-
return FS.handleError(withStackSave(() => __wasmfs_rmdir(stringToUTF8OnStack(path))));
119-
},
120-
open: (path, flags, mode) => {
113+
rmdir: (path) => FS.handleError(
114+
withStackSave(() => __wasmfs_rmdir(stringToUTF8OnStack(path)))
115+
),
116+
open: (path, flags, mode) => withStackSave(() => {
121117
flags = typeof flags == 'string' ? FS_modeStringToFlags(flags) : flags;
122118
mode = typeof mode == 'undefined' ? 438 /* 0666 */ : mode;
123-
return withStackSave(() => {
124-
var buffer = stringToUTF8OnStack(path);
125-
var fd = FS.handleError(__wasmfs_open({{{ to64('buffer') }}}, flags, mode));
126-
return { fd : fd };
127-
});
128-
},
119+
var buffer = stringToUTF8OnStack(path);
120+
var fd = FS.handleError(__wasmfs_open({{{ to64('buffer') }}}, flags, mode));
121+
return { fd : fd };
122+
}),
129123
create: (path, mode) => {
130124
// Default settings copied from the legacy JS FS API.
131125
mode = mode !== undefined ? mode : 438 /* 0666 */;
132126
mode &= {{{ cDefs.S_IALLUGO }}};
133127
mode |= {{{ cDefs.S_IFREG }}};
134128
return FS.mknod(path, mode, 0);
135129
},
136-
close: (stream) => {
137-
return FS.handleError(-__wasmfs_close(stream.fd));
138-
},
139-
unlink: (path) => {
140-
return withStackSave(() => {
141-
var buffer = stringToUTF8OnStack(path);
142-
return __wasmfs_unlink(buffer);
143-
});
144-
},
145-
chdir: (path) => {
146-
return withStackSave(() => {
147-
var buffer = stringToUTF8OnStack(path);
148-
return __wasmfs_chdir(buffer);
149-
});
150-
},
130+
close: (stream) => FS.handleError(-__wasmfs_close(stream.fd)),
131+
unlink: (path) => withStackSave(() => {
132+
var buffer = stringToUTF8OnStack(path);
133+
return __wasmfs_unlink(buffer);
134+
}),
135+
chdir: (path) => withStackSave(() => {
136+
var buffer = stringToUTF8OnStack(path);
137+
return __wasmfs_chdir(buffer);
138+
}),
151139
// TODO: read
152140
read: (stream, buffer, offset, length, position) => {
153141
var seeking = typeof position != 'undefined';
@@ -193,33 +181,29 @@ FS.createPreloadedFile = FS_createPreloadedFile;
193181
// TODO: mmap
194182
// TODO: msync
195183
// TODO: munmap
196-
writeFile: (path, data) => {
197-
return withStackSave(() => {
198-
var pathBuffer = stringToUTF8OnStack(path);
199-
if (typeof data == 'string') {
200-
var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
201-
var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
202-
data = buf.slice(0, actualNumBytes);
203-
}
204-
var dataBuffer = _malloc(data.length);
184+
writeFile: (path, data) => withStackSave(() => {
185+
var pathBuffer = stringToUTF8OnStack(path);
186+
if (typeof data == 'string') {
187+
var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
188+
var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
189+
data = buf.slice(0, actualNumBytes);
190+
}
191+
var dataBuffer = _malloc(data.length);
205192
#if ASSERTIONS
206-
assert(dataBuffer);
193+
assert(dataBuffer);
207194
#endif
208-
for (var i = 0; i < data.length; i++) {
209-
{{{ makeSetValue('dataBuffer', 'i', 'data[i]', 'i8') }}};
210-
}
211-
var ret = __wasmfs_write_file(pathBuffer, dataBuffer, data.length);
212-
_free(dataBuffer);
213-
return ret;
214-
});
215-
},
216-
symlink: (target, linkpath) => {
217-
return withStackSave(() => {
218-
var targetBuffer = stringToUTF8OnStack(target);
219-
var linkpathBuffer = stringToUTF8OnStack(linkpath);
220-
return __wasmfs_symlink(targetBuffer, linkpathBuffer);
221-
});
222-
},
195+
for (var i = 0; i < data.length; i++) {
196+
{{{ makeSetValue('dataBuffer', 'i', 'data[i]', 'i8') }}};
197+
}
198+
var ret = __wasmfs_write_file(pathBuffer, dataBuffer, data.length);
199+
_free(dataBuffer);
200+
return ret;
201+
}),
202+
symlink: (target, linkpath) => withStackSave(() => {
203+
var targetBuffer = stringToUTF8OnStack(target);
204+
var linkpathBuffer = stringToUTF8OnStack(linkpath);
205+
return __wasmfs_symlink(targetBuffer, linkpathBuffer);
206+
}),
223207
// TODO: readlink
224208
statBufToObject : (statBuf) => {
225209
// i53/u53 are enough for times and ino in practice.
@@ -296,23 +280,21 @@ FS.createPreloadedFile = FS_createPreloadedFile;
296280
isDevice: false, // TODO: wasmfs support for devices
297281
};
298282
},
299-
readdir: (path) => {
300-
return withStackSave(() => {
301-
var pathBuffer = stringToUTF8OnStack(path);
302-
var entries = [];
303-
var state = __wasmfs_readdir_start(pathBuffer);
304-
if (!state) {
305-
// TODO: The old FS threw an ErrnoError here.
306-
throw new Error("No such directory");
307-
}
308-
var entry;
309-
while (entry = __wasmfs_readdir_get(state)) {
310-
entries.push(UTF8ToString(entry));
311-
}
312-
__wasmfs_readdir_finish(state);
313-
return entries;
314-
});
315-
},
283+
readdir: (path) => withStackSave(() => {
284+
var pathBuffer = stringToUTF8OnStack(path);
285+
var entries = [];
286+
var state = __wasmfs_readdir_start(pathBuffer);
287+
if (!state) {
288+
// TODO: The old FS threw an ErrnoError here.
289+
throw new Error("No such directory");
290+
}
291+
var entry;
292+
while (entry = __wasmfs_readdir_get(state)) {
293+
entries.push(UTF8ToString(entry));
294+
}
295+
__wasmfs_readdir_finish(state);
296+
return entries;
297+
}),
316298
// TODO: mount
317299
// TODO: unmount
318300
// TODO: lookup

0 commit comments

Comments
 (0)