Skip to content

Commit 32411ad

Browse files
authored
[wasm64] Remove unneeded usage of from64 (#16976)
Followup to #16922. The goal here is to do any BigInt/Number conversions for int53 at the JS/Wasm boundary. Some of the internal usage of `from64` predates the `__sig` machanism for annotating functions and no longer necessary.
1 parent 55a3c87 commit 32411ad

File tree

7 files changed

+23
-7
lines changed

7 files changed

+23
-7
lines changed

src/embind/embind.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,6 @@ var LibraryEmbind = {
403403
},
404404

405405
$heap32VectorToArray: function(count, firstElement) {
406-
{{{ from64('firstElement') }}}
407406
var array = [];
408407
for (var i = 0; i < count; i++) {
409408
array.push(HEAP32[(firstElement >> 2) + i]);
@@ -475,7 +474,6 @@ var LibraryEmbind = {
475474

476475
$getShiftFromSize__deps: [],
477476
$getShiftFromSize: function(size) {
478-
{{{ from64('size') }}}
479477
switch (size) {
480478
case 1: return 0;
481479
case 2: return 1;

src/library_syscall.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ var SyscallsLibrary = {
166166
FS.chdir(path);
167167
return 0;
168168
},
169+
__syscall_chmod__sig: 'ipi',
169170
__syscall_chmod: function(path, mode) {
170171
path = SYSCALLS.getStr(path);
171172
FS.chmod(path, mode);
@@ -261,6 +262,7 @@ var SyscallsLibrary = {
261262
}
262263
#endif // SYSCALLS_REQUIRE_FILESYSTEM
263264
},
265+
__syscall_symlink__sig: 'ipp',
264266
__syscall_symlink: function(target, linkpath) {
265267
target = SYSCALLS.getStr(target);
266268
linkpath = SYSCALLS.getStr(linkpath);
@@ -640,12 +642,12 @@ var SyscallsLibrary = {
640642
FS.ftruncate(fd, length);
641643
return 0;
642644
},
643-
__syscall_stat64__sig: 'iip',
645+
__syscall_stat64__sig: 'ipp',
644646
__syscall_stat64: function(path, buf) {
645647
path = SYSCALLS.getStr(path);
646648
return SYSCALLS.doStat(FS.stat, path, buf);
647649
},
648-
__syscall_lstat64__sig: 'iip',
650+
__syscall_lstat64__sig: 'ipp',
649651
__syscall_lstat64: function(path, buf) {
650652
path = SYSCALLS.getStr(path);
651653
return SYSCALLS.doStat(FS.lstat, path, buf);
@@ -821,6 +823,7 @@ var SyscallsLibrary = {
821823
FS.mkdir(path, mode, 0);
822824
return 0;
823825
},
826+
__syscall_mknodat__sig: 'iipii',
824827
__syscall_mknodat: function(dirfd, path, mode, dev) {
825828
#if SYSCALL_DEBUG
826829
err('warning: untested syscall');
@@ -880,6 +883,7 @@ var SyscallsLibrary = {
880883
}
881884
return 0;
882885
},
886+
__syscall_renameat__sig: 'iipip',
883887
__syscall_renameat: function(olddirfd, oldpath, newdirfd, newpath) {
884888
oldpath = SYSCALLS.getStr(oldpath);
885889
newpath = SYSCALLS.getStr(newpath);
@@ -916,6 +920,7 @@ var SyscallsLibrary = {
916920
HEAP8[buf+len] = endChar;
917921
return len;
918922
},
923+
__syscall_fchmodat__sig: 'iipip',
919924
__syscall_fchmodat: function(dirfd, path, mode, varargs) {
920925
#if SYSCALL_DEBUG
921926
err('warning: untested syscall');
@@ -925,6 +930,7 @@ var SyscallsLibrary = {
925930
FS.chmod(path, mode);
926931
return 0;
927932
},
933+
__syscall_faccessat__sig: 'iipii',
928934
__syscall_faccessat: function(dirfd, path, amode, flags) {
929935
#if SYSCALL_DEBUG
930936
err('warning: untested syscall');

src/library_trace.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ var LibraryTracing = {
180180
}
181181
},
182182

183+
emscripten_trace_log_message__sig: 'vpp',
183184
emscripten_trace_log_message: function(channel, message) {
184185
if (EmscriptenTrace.postEnabled) {
185186
var now = EmscriptenTrace.now();
@@ -200,6 +201,7 @@ var LibraryTracing = {
200201
}
201202
},
202203

204+
emscripten_trace_mark__sig: 'vp',
203205
emscripten_trace_mark: function(message) {
204206
if (EmscriptenTrace.postEnabled) {
205207
var now = EmscriptenTrace.now();
@@ -309,6 +311,7 @@ var LibraryTracing = {
309311
}
310312
},
311313

314+
emscripten_trace_enter_context__sig: 'vp',
312315
emscripten_trace_enter_context: function(name) {
313316
if (EmscriptenTrace.postEnabled) {
314317
var now = EmscriptenTrace.now();
@@ -330,6 +333,7 @@ var LibraryTracing = {
330333
}
331334
},
332335

336+
emscripten_trace_task_start__sig: 'vip',
333337
emscripten_trace_task_start: function(task_id, name) {
334338
if (EmscriptenTrace.postEnabled) {
335339
var now = EmscriptenTrace.now();

src/preamble.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,6 @@ function instrumentWasmTableWithAbort() {
762762
var realGet = wasmTable.get;
763763
var wrapperCache = {};
764764
wasmTable.get = (i) => {
765-
{{{ from64('i') }}}
766765
var func = realGet.call(wasmTable, i);
767766
var cached = wrapperCache[i];
768767
if (!cached || cached.func !== func) {

src/runtime_strings.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
101101
* @return {string}
102102
*/
103103
function UTF8ToString(ptr, maxBytesToRead) {
104-
{{{ from64('ptr') }}};
105104
#if CAN_ADDRESS_2GB
106105
ptr >>>= 0;
107106
#endif

tests/core/test_em_js.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ EM_JS(double, noarg_double, (void), {
1919
EM_JS(void, intarg, (int x), { out(" takes ints: " + x);});
2020
EM_JS(void, doublearg, (double d), { out(" takes doubles: " + d);});
2121
EM_JS(double, stringarg, (const char* str), {
22+
// Convert pointers (which can be BigInt under wasm64), to Number, which
23+
// internal function expect.
24+
// FIXME(https://github.com/emscripten-core/emscripten/issues/16975)
25+
str = Number(str);
2226
out(" takes strings: " + UTF8ToString(str));
2327
return 7.75;
2428
});
@@ -27,6 +31,10 @@ EM_JS(int, multi_intarg, (int x, int y), {
2731
return 6;
2832
});
2933
EM_JS(double, multi_mixedarg, (int x, const char* str, double d), {
34+
// Convert pointers (which can be BigInt under wasm64), to Number, which
35+
// internal function expect.
36+
// FIXME(https://github.com/emscripten-core/emscripten/issues/16975)
37+
str = Number(str);
3038
out(" mixed arg types: " + x + ", " + UTF8ToString(str) + ", " + d);
3139
return 8.125;
3240
});
@@ -60,6 +68,7 @@ EM_JS(char*, return_utf8_str, (void), {
6068
var lengthBytes = lengthBytesUTF8(jsString)+1;
6169
var stringOnWasmHeap = _malloc(lengthBytes);
6270
stringToUTF8(jsString, stringOnWasmHeap, lengthBytes);
71+
// FIXME(https://github.com/emscripten-core/emscripten/issues/16975)
6372
#if __wasm64__
6473
return BigInt(stringOnWasmHeap);
6574
#else
@@ -72,6 +81,7 @@ EM_JS(char*, return_str, (void), {
7281
var lengthBytes = jsString.length+1;
7382
var stringOnWasmHeap = _malloc(lengthBytes);
7483
stringToUTF8(jsString, stringOnWasmHeap, lengthBytes);
84+
// FIXME(https://github.com/emscripten-core/emscripten/issues/16975)
7585
#if __wasm64__
7686
return BigInt(stringOnWasmHeap);
7787
#else

tools/file_packager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ def generate_js(data_target, data_files, metadata):
661661
code += '''\
662662
var start64 = Module['___emscripten_embedded_file_data'] >> 3;
663663
do {
664-
var name_addr = HEAPU64[start64++];
664+
var name_addr = Number(HEAPU64[start64++]);
665665
var len = HEAPU32[start64 << 1];
666666
start64++;
667667
var content = Number(HEAPU64[start64++]);

0 commit comments

Comments
 (0)