aboutsummaryrefslogtreecommitdiff
path: root/src/library.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/library.js')
-rw-r--r--src/library.js55
1 files changed, 40 insertions, 15 deletions
diff --git a/src/library.js b/src/library.js
index 6d821bfc..a5380c3a 100644
--- a/src/library.js
+++ b/src/library.js
@@ -3193,7 +3193,7 @@ LibraryManager.library = {
}
}
if (!finalBase) finalBase = 10;
- start = str;
+ var start = str;
// Get digits.
var chr;
@@ -6122,7 +6122,7 @@ LibraryManager.library = {
clock_gettime: function(clk_id, tp) {
// int clock_gettime(clockid_t clk_id, struct timespec *tp);
var now;
- if (clk_id === {{{ cDefine('CLOCK_REALTIME') }}}) {
+ if (clk_id === {{{ cDefine('CLOCK_REALTIME') }}}) {
now = Date.now();
} else {
now = _emscripten_get_now();
@@ -6136,10 +6136,17 @@ LibraryManager.library = {
// Nothing.
return 0;
},
+ clock_getres__deps: ['emscripten_get_now_res'],
clock_getres: function(clk_id, res) {
// int clock_getres(clockid_t clk_id, struct timespec *res);
+ var nsec;
+ if (clk_id === {{{ cDefine('CLOCK_REALTIME') }}}) {
+ nsec = 1000 * 1000;
+ } else {
+ nsec = _emscripten_get_now_res();
+ }
{{{ makeSetValue('res', C_STRUCTS.timespec.tv_sec, '1', 'i32') }}}
- {{{ makeSetValue('res', C_STRUCTS.timespec.tv_nsec, '1000 * 1000', 'i32') }}} // resolution is milliseconds
+ {{{ makeSetValue('res', C_STRUCTS.timespec.tv_nsec, 'nsec', 'i32') }}} // resolution is milliseconds
return 0;
},
@@ -8230,7 +8237,7 @@ LibraryManager.library = {
},
accept__deps: ['$FS', '$SOCKFS', '$DNS', '$ERRNO_CODES', '__setErrNo', '_write_sockaddr'],
- accept: function(fd, addrp, addrlen) {
+ accept: function(fd, addr, addrlen) {
var sock = SOCKFS.getSocket(fd);
if (!sock) {
___setErrNo(ERRNO_CODES.EBADF);
@@ -8238,7 +8245,7 @@ LibraryManager.library = {
}
try {
var newsock = sock.sock_ops.accept(sock);
- if (addrp) {
+ if (addr) {
var res = __write_sockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport);
assert(!res.errno);
}
@@ -8669,21 +8676,28 @@ LibraryManager.library = {
},
emscripten_asm_const: function(code) {
- // code is a constant string on the heap, so we can cache these
- if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
- var func = Runtime.asmConstCache[code];
- if (func) return func();
- func = Runtime.asmConstCache[code] = eval('(function(){ ' + Pointer_stringify(code) + ' })'); // new Function does not allow upvars in node
- return func();
+ Runtime.getAsmConst(code, 0)();
+ },
+
+ emscripten_asm_const_int__jsargs: true,
+ emscripten_asm_const_int: function(code) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return Runtime.getAsmConst(code, args.length).apply(null, args) | 0;
+ },
+
+ emscripten_asm_const_double__jsargs: true,
+ emscripten_asm_const_double: function(code) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return +Runtime.getAsmConst(code, args.length).apply(null, args);
},
emscripten_get_now: function() {
if (!_emscripten_get_now.actual) {
if (ENVIRONMENT_IS_NODE) {
- _emscripten_get_now.actual = function _emscripten_get_now_actual() {
- var t = process['hrtime']();
- return t[0] * 1e3 + t[1] / 1e6;
- }
+ _emscripten_get_now.actual = function _emscripten_get_now_actual() {
+ var t = process['hrtime']();
+ return t[0] * 1e3 + t[1] / 1e6;
+ }
} else if (typeof dateNow !== 'undefined') {
_emscripten_get_now.actual = dateNow;
} else if (ENVIRONMENT_IS_WEB && window['performance'] && window['performance']['now']) {
@@ -8695,6 +8709,17 @@ LibraryManager.library = {
return _emscripten_get_now.actual();
},
+ emscripten_get_now_res: function() { // return resolution of get_now, in nanoseconds
+ if (ENVIRONMENT_IS_NODE) {
+ return 1; // nanoseconds
+ } else if (typeof dateNow !== 'undefined' ||
+ (ENVIRONMENT_IS_WEB && window['performance'] && window['performance']['now'])) {
+ return 1000; // microseconds (1/1000 of a millisecond)
+ } else {
+ return 1000*1000; // milliseconds
+ }
+ },
+
//============================
// emscripten vector ops
//============================