From 01f13ebcb2fc133b9e07d3055a67d168ba28e251 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Fri, 23 Jun 2023 13:02:36 -0700 Subject: [PATCH] Avoid unnecessary pointer params for gmtime/localtime. NFC (#19698) Seems like there is no reason to pass a pointer here. I noticed this while investigating #19694. --- src/library.js | 14 ++++++++------ src/library_sigs.js | 4 ++-- src/modules.js | 2 +- system/lib/libc/emscripten_internal.h | 4 ++-- system/lib/libc/mktime.c | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/library.js b/src/library.js index 4ef958dd1f80..b2b67a46dbff 100644 --- a/src/library.js +++ b/src/library.js @@ -479,9 +479,10 @@ mergeInto(LibraryManager.library, { return (date.getTime() / 1000)|0; }, - _gmtime_js__deps: ['$readI53FromI64'], - _gmtime_js: (time, tmPtr) => { - var date = new Date({{{ makeGetValue('time', 0, 'i53') }}}*1000); + _gmtime_js__deps: ['$readI53FromI64'].concat(i53ConversionDeps), + _gmtime_js: ({{{ defineI64Param('time') }}}, tmPtr) => { + {{{ receiveI64ParamAsI53('time') }}} + var date = new Date(time * 1000); {{{ makeSetValue('tmPtr', C_STRUCTS.tm.tm_sec, 'date.getUTCSeconds()', 'i32') }}}; {{{ makeSetValue('tmPtr', C_STRUCTS.tm.tm_min, 'date.getUTCMinutes()', 'i32') }}}; {{{ makeSetValue('tmPtr', C_STRUCTS.tm.tm_hour, 'date.getUTCHours()', 'i32') }}}; @@ -512,9 +513,10 @@ mergeInto(LibraryManager.library, { return (date.getTime() / 1000)|0; }, - _localtime_js__deps: ['$readI53FromI64', '$ydayFromDate'], - _localtime_js: (time, tmPtr) => { - var date = new Date({{{ makeGetValue('time', 0, 'i53') }}}*1000); + _localtime_js__deps: ['$readI53FromI64', '$ydayFromDate'].concat(i53ConversionDeps), + _localtime_js: ({{{ defineI64Param('time') }}}, tmPtr) => { + {{{ receiveI64ParamAsI53('time') }}} + var date = new Date(time*1000); {{{ makeSetValue('tmPtr', C_STRUCTS.tm.tm_sec, 'date.getSeconds()', 'i32') }}}; {{{ makeSetValue('tmPtr', C_STRUCTS.tm.tm_min, 'date.getMinutes()', 'i32') }}}; {{{ makeSetValue('tmPtr', C_STRUCTS.tm.tm_hour, 'date.getHours()', 'i32') }}}; diff --git a/src/library_sigs.js b/src/library_sigs.js index 40cc2e7e51bc..16652976e3b0 100644 --- a/src/library_sigs.js +++ b/src/library_sigs.js @@ -351,8 +351,8 @@ sigs = { _emval_take_value__sig: 'ppp', _emval_throw__sig: 'ip', _emval_typeof__sig: 'pp', - _gmtime_js__sig: 'vpp', - _localtime_js__sig: 'vpp', + _gmtime_js__sig: 'vjp', + _localtime_js__sig: 'vjp', _mktime_js__sig: 'ip', _mmap_js__sig: 'ipiiijpp', _msync_js__sig: 'ippiiij', diff --git a/src/modules.js b/src/modules.js index a8208bbf67b4..e9312392fa74 100644 --- a/src/modules.js +++ b/src/modules.js @@ -36,9 +36,9 @@ global.LibraryManager = { // Core system libraries (always linked against) let libraries = [ + 'library_int53.js', 'library.js', 'library_sigs.js', - 'library_int53.js', 'library_ccall.js', 'library_addfunction.js', 'library_formatString.js', diff --git a/system/lib/libc/emscripten_internal.h b/system/lib/libc/emscripten_internal.h index ceef9c2984d2..e2210561ab99 100644 --- a/system/lib/libc/emscripten_internal.h +++ b/system/lib/libc/emscripten_internal.h @@ -41,8 +41,8 @@ void emscripten_notify_memory_growth(size_t memory_index); // TODO(sbc): Covert back to `time_t` before 2038 ... int _timegm_js(struct tm* tm); int _mktime_js(struct tm* tm); -void _localtime_js(const time_t* __restrict__ t, struct tm* __restrict__ tm); -void _gmtime_js(const time_t* __restrict__ t, struct tm* __restrict__ tm); +void _localtime_js(time_t t, struct tm* __restrict__ tm); +void _gmtime_js(time_t t, struct tm* __restrict__ tm); void _tzset_js(long* timezone, int* daylight, char** tzname); diff --git a/system/lib/libc/mktime.c b/system/lib/libc/mktime.c index 603f8fde0aa7..ccbd899c8bd7 100644 --- a/system/lib/libc/mktime.c +++ b/system/lib/libc/mktime.c @@ -20,7 +20,7 @@ weak time_t mktime(struct tm *tm) { weak struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm) { tzset(); - _localtime_js(t, tm); + _localtime_js(*t, tm); // __localtime_js sets everything but the tmzone pointer tm->__tm_zone = tm->tm_isdst ? tzname[1] :tzname[0]; return tm; @@ -28,7 +28,7 @@ weak struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm) weak struct tm *__gmtime_r(const time_t *restrict t, struct tm *restrict tm) { tzset(); - _gmtime_js(t, tm); + _gmtime_js(*t, tm); tm->tm_isdst = 0; tm->__tm_gmtoff = 0; tm->__tm_zone = "GMT";