From 177e829f4b6454ba602db5dbd8178bc7369493b6 Mon Sep 17 00:00:00 2001 From: Dmitry Frank <dmitry.frank@cesanta.com> Date: Wed, 18 May 2016 14:52:23 +0200 Subject: [PATCH] Add v7 arg to _mk_ and _get_ functions `v7_mk_undefined()` and `v7_mk_null()` are left unchanged, but marked deprecated, and `V7_UNDEFINED` and `V7_NULL` are public now. Xtensa code size with instrumentation: 590400 -> 590432, i.e. 32 bytes. Xtensa code size without instrumentation: 530848 -> 531760, i.e. 912 bytes. As objdump reveals, inside v7.c, `v7_mk_number` and others are inlined, so the extra v7 argument is eliminated; outside of v7.c it's obviously not inlined. ---- Also, v7_get_int() is added, which currently just casts stored double value to int PUBLISHED_FROM=e984b7308faf2380b3de388f238e0fae0aea545d --- docs/c-api/util.h/mg_mk_str.md | 9 ++++----- mongoose.c | 8 ++++---- mongoose.h | 2 ++ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/c-api/util.h/mg_mk_str.md b/docs/c-api/util.h/mg_mk_str.md index 89afcef..4862e86 100644 --- a/docs/c-api/util.h/mg_mk_str.md +++ b/docs/c-api/util.h/mg_mk_str.md @@ -1,11 +1,10 @@ --- -title: "mg_mk_str()" -decl_name: "mg_mk_str" +title: "MG_MK_STR()" +decl_name: "MG_MK_STR" symbol_kind: "func" signature: | - struct mg_str mg_mk_str(const char *s); + #define MG_MK_STR(str_literal); --- -A helper function for creating mg_str struct from plain C string. -`NULL` is allowed and becomes `{NULL, 0}`. +Macro for initializing mg_str. diff --git a/mongoose.c b/mongoose.c index 2412984..9635fce 100644 --- a/mongoose.c +++ b/mongoose.c @@ -2269,7 +2269,7 @@ void mg_mgr_init(struct mg_mgr *m, void *user_data) { static enum v7_err mg_send_js(struct v7 *v7, v7_val_t *res) { v7_val_t arg0 = v7_arg(v7, 0); v7_val_t arg1 = v7_arg(v7, 1); - struct mg_connection *c = (struct mg_connection *) v7_get_ptr(arg0); + struct mg_connection *c = (struct mg_connection *) v7_get_ptr(v7, arg0); size_t len = 0; if (v7_is_string(arg1)) { @@ -2277,7 +2277,7 @@ static enum v7_err mg_send_js(struct v7 *v7, v7_val_t *res) { mg_send(c, data, len); } - *res = v7_mk_number(len); + *res = v7_mk_number(v7, len); return V7_OK; } @@ -5183,9 +5183,9 @@ void mg_http_handler(struct mg_connection *nc, int ev, void *ev_data) { } /* Invoke callback. TODO(lsm): report errors */ - v7_array_push(v7, args, v7_mk_foreign(nc)); + v7_array_push(v7, args, v7_mk_foreign(v7, nc)); v7_array_push(v7, args, req); - if (v7_apply(v7, v2, v7_mk_undefined(), args, &res) == V7_OK && + if (v7_apply(v7, v2, V7_UNDEFINED, args, &res) == V7_OK && v7_is_truthy(v7, res)) { js_callback_handled_request++; } diff --git a/mongoose.h b/mongoose.h index 0d4ecc9..c54e05a 100644 --- a/mongoose.h +++ b/mongoose.h @@ -104,10 +104,12 @@ #define NORETURN __attribute__((noreturn)) #define NOINLINE __attribute__((noinline)) #define WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#define NOINSTR __attribute__((no_instrument_function)) #else #define NORETURN #define NOINLINE #define WARN_UNUSED_RESULT +#define NOINSTR #endif /* __GNUC__ */ #ifndef ARRAY_SIZE -- 2.18.1