ocaml style rooting macros
This commit is contained in:
@@ -75,7 +75,8 @@ static const JSCFunctionListEntry js_kim_funcs[] = {
|
||||
|
||||
JSValue js_kim_use(JSContext *js)
|
||||
{
|
||||
JSValue mod = JS_NewObject(js);
|
||||
JS_SetPropertyFunctionList(js, mod, js_kim_funcs, countof(js_kim_funcs));
|
||||
return mod;
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(mod, JS_NewObject(js));
|
||||
JS_SetPropertyFunctionList(js, mod.val, js_kim_funcs, countof(js_kim_funcs));
|
||||
JS_RETURN(mod.val);
|
||||
}
|
||||
@@ -277,29 +277,31 @@ JSC_CCALL(os_mallinfo,
|
||||
)
|
||||
|
||||
static JSValue js_os_rusage(JSContext *js, JSValue self, int argc, JSValue *argv) {
|
||||
JSValue ret = JS_NULL;
|
||||
ret = JS_NewObject(js);
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(ret, JS_NewObject(js));
|
||||
|
||||
#if defined(__linux__) || defined(__APPLE__)
|
||||
struct rusage jsmem;
|
||||
getrusage(RUSAGE_SELF, &jsmem);
|
||||
JSJMEMRET(ru_maxrss);
|
||||
JSJMEMRET(ru_ixrss);
|
||||
JSJMEMRET(ru_idrss);
|
||||
JSJMEMRET(ru_isrss);
|
||||
JSJMEMRET(ru_minflt);
|
||||
JSJMEMRET(ru_majflt);
|
||||
JSJMEMRET(ru_nswap);
|
||||
JSJMEMRET(ru_inblock);
|
||||
JSJMEMRET(ru_oublock);
|
||||
JSJMEMRET(ru_msgsnd);
|
||||
JSJMEMRET(ru_msgrcv);
|
||||
JSJMEMRET(ru_nsignals);
|
||||
JSJMEMRET(ru_nvcsw);
|
||||
JSJMEMRET(ru_nivcsw);
|
||||
#define JSJMEMRET_GC(FIELD) JS_SetPropertyStr(js, ret.val, #FIELD, number2js(js, jsmem.FIELD));
|
||||
JSJMEMRET_GC(ru_maxrss);
|
||||
JSJMEMRET_GC(ru_ixrss);
|
||||
JSJMEMRET_GC(ru_idrss);
|
||||
JSJMEMRET_GC(ru_isrss);
|
||||
JSJMEMRET_GC(ru_minflt);
|
||||
JSJMEMRET_GC(ru_majflt);
|
||||
JSJMEMRET_GC(ru_nswap);
|
||||
JSJMEMRET_GC(ru_inblock);
|
||||
JSJMEMRET_GC(ru_oublock);
|
||||
JSJMEMRET_GC(ru_msgsnd);
|
||||
JSJMEMRET_GC(ru_msgrcv);
|
||||
JSJMEMRET_GC(ru_nsignals);
|
||||
JSJMEMRET_GC(ru_nvcsw);
|
||||
JSJMEMRET_GC(ru_nivcsw);
|
||||
#undef JSJMEMRET_GC
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
JS_RETURN(ret.val);
|
||||
}
|
||||
|
||||
JSC_SCALL(os_system,
|
||||
@@ -628,7 +630,8 @@ JSValue js_os_use(JSContext *js) {
|
||||
JS_NewClassID(&js_dylib_class_id);
|
||||
JS_NewClass(js, js_dylib_class_id, &js_dylib_class);
|
||||
|
||||
JSValue mod = JS_NewObject(js);
|
||||
JS_SetPropertyFunctionList(js,mod,js_os_funcs,countof(js_os_funcs));
|
||||
return mod;
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(mod, JS_NewObject(js));
|
||||
JS_SetPropertyFunctionList(js, mod.val, js_os_funcs, countof(js_os_funcs));
|
||||
JS_RETURN(mod.val);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user