Skip to content

Commit 29f6ffc

Browse files
akosthekissyichoi
authored andcommitted
Make logging an optional feature and disable it by default (#2449)
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
1 parent 58c568a commit 29f6ffc

File tree

10 files changed

+59
-6
lines changed

10 files changed

+59
-6
lines changed

docs/02.API-REFERENCE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ Possible compile time enabled feature types:
6060
- JERRY_FEATURE_DATE - Date support
6161
- JERRY_FEATURE_REGEXP - RegExp support
6262
- JERRY_FEATURE_LINE_INFO - line info available
63+
- JERRY_FEATURE_LOGGING - logging
6364

6465
## jerry_parse_opts_t
6566

docs/05.PORT-API.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ typedef enum
6363
*
6464
* Example: a libc-based port may implement this with vfprintf(stderr) or
6565
* vfprintf(logfile), or both, depending on log level.
66+
*
67+
* Note:
68+
* This port function is called by jerry-core when JERRY_ENABLE_LOGGING is
69+
* defined. It is also common practice though to use this function in
70+
* application code.
6671
*/
6772
void jerry_port_log (jerry_log_level_t level, const char *fmt, ...);
6873
```

jerry-core/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ set(FEATURE_ERROR_MESSAGES OFF CACHE BOOL "Enable error messages?")
2626
set(FEATURE_EXTERNAL_CONTEXT OFF CACHE BOOL "Enable external context?")
2727
set(FEATURE_JS_PARSER ON CACHE BOOL "Enable js-parser?")
2828
set(FEATURE_LINE_INFO OFF CACHE BOOL "Enable line info?")
29+
set(FEATURE_LOGGING OFF CACHE BOOL "Enable logging?")
2930
set(FEATURE_MEM_STATS OFF CACHE BOOL "Enable memory statistics?")
3031
set(FEATURE_MEM_STRESS_TEST OFF CACHE BOOL "Enable mem-stress test?")
3132
set(FEATURE_PARSER_DUMP OFF CACHE BOOL "Enable parser byte-code dumps?")
@@ -66,6 +67,12 @@ if(JERRY_CMDLINE_SNAPSHOT)
6667
set(FEATURE_SNAPSHOT_SAVE_MESSAGE " (FORCED BY SNAPSHOT TOOL)")
6768
endif()
6869

70+
if(FEATURE_MEM_STATS OR FEATURE_PARSER_DUMP OR FEATURE_REGEXP_DUMP)
71+
set(FEATURE_LOGGING ON)
72+
73+
set(FEATURE_LOGGING_MESSAGE " (FORCED BY STATS OR DUMP)")
74+
endif()
75+
6976
# Status messages
7077
message(STATUS "ENABLE_ALL_IN_ONE " ${ENABLE_ALL_IN_ONE} ${ENABLE_ALL_IN_ONE_MESSAGE})
7178
message(STATUS "FEATURE_CPOINTER_32_BIT " ${FEATURE_CPOINTER_32_BIT} ${FEATURE_CPOINTER_32_BIT_MESSAGE})
@@ -74,6 +81,7 @@ message(STATUS "FEATURE_ERROR_MESSAGES " ${FEATURE_ERROR_MESSAGES})
7481
message(STATUS "FEATURE_EXTERNAL_CONTEXT " ${FEATURE_EXTERNAL_CONTEXT})
7582
message(STATUS "FEATURE_JS_PARSER " ${FEATURE_JS_PARSER})
7683
message(STATUS "FEATURE_LINE_INFO " ${FEATURE_LINE_INFO})
84+
message(STATUS "FEATURE_LOGGING " ${FEATURE_LOGGING} ${FEATURE_LOGGING_MESSAGE})
7785
message(STATUS "FEATURE_MEM_STATS " ${FEATURE_MEM_STATS})
7886
message(STATUS "FEATURE_MEM_STRESS_TEST " ${FEATURE_MEM_STRESS_TEST})
7987
message(STATUS "FEATURE_PARSER_DUMP " ${FEATURE_PARSER_DUMP} ${FEATURE_PARSER_DUMP_MESSAGE})
@@ -187,6 +195,11 @@ if(FEATURE_LINE_INFO)
187195
set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_ENABLE_LINE_INFO)
188196
endif()
189197

198+
# Logging
199+
if(FEATURE_LOGGING)
200+
set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_ENABLE_LOGGING)
201+
endif()
202+
190203
# Memory statistics
191204
if(FEATURE_MEM_STATS)
192205
set(DEFINES_JERRY ${DEFINES_JERRY} JMEM_STATS)

jerry-core/api/jerry.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,9 @@ jerry_is_feature_enabled (const jerry_feature_t feature) /**< feature to check *
883883
#ifdef JERRY_ENABLE_LINE_INFO
884884
|| feature == JERRY_FEATURE_LINE_INFO
885885
#endif /* JERRY_ENABLE_LINE_INFO */
886+
#ifdef JERRY_ENABLE_LOGGING
887+
|| feature == JERRY_FEATURE_LOGGING
888+
#endif /* JERRY_ENABLE_LOGGING */
886889
);
887890
} /* jerry_is_feature_enabled */
888891

jerry-core/include/jerryscript-core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ typedef enum
9191
JERRY_FEATURE_DATE, /**< Date support */
9292
JERRY_FEATURE_REGEXP, /**< Regexp support */
9393
JERRY_FEATURE_LINE_INFO, /**< line info available */
94+
JERRY_FEATURE_LOGGING, /**< logging */
9495
JERRY_FEATURE__COUNT /**< number of features. NOTE: must be at the end of the list */
9596
} jerry_feature_t;
9697

jerry-core/include/jerryscript-port.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ typedef enum
9797
*
9898
* Example: a libc-based port may implement this with vfprintf(stderr) or
9999
* vfprintf(logfile), or both, depending on log level.
100+
*
101+
* Note:
102+
* This port function is called by jerry-core when JERRY_ENABLE_LOGGING is
103+
* defined. It is also common practice though to use this function in
104+
* application code.
100105
*/
101106
void JERRY_ATTR_FORMAT (printf, 2, 3) jerry_port_log (jerry_log_level_t level, const char *format, ...);
102107

jerry-core/jrt/jrt.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@
4949
*/
5050
#define JERRY_UNUSED(x) ((void) (x))
5151

52+
#define JERRY_UNUSED_1(_1) JERRY_UNUSED (_1)
53+
#define JERRY_UNUSED_2(_1, _2) JERRY_UNUSED (_1), JERRY_UNUSED_1 (_2)
54+
#define JERRY_UNUSED_3(_1, _2, _3) JERRY_UNUSED (_1), JERRY_UNUSED_2 (_2, _3)
55+
#define JERRY_UNUSED_4(_1, _2, _3, _4) JERRY_UNUSED (_1), JERRY_UNUSED_3 (_2, _3, _4)
56+
#define JERRY_UNUSED_5(_1, _2, _3, _4, _5) JERRY_UNUSED (_1), JERRY_UNUSED_4 (_2, _3, _4, _5)
57+
58+
#define JERRY_VA_ARGS_NUM_IMPL(_1, _2, _3, _4, _5, N, ...) N
59+
#define JERRY_VA_ARGS_NUM(...) JERRY_VA_ARGS_NUM_IMPL (__VA_ARGS__, 5, 4, 3, 2, 1, 0)
60+
61+
#define JERRY_UNUSED_ALL_IMPL_(nargs) JERRY_UNUSED_ ## nargs
62+
#define JERRY_UNUSED_ALL_IMPL(nargs) JERRY_UNUSED_ALL_IMPL_ (nargs)
63+
#define JERRY_UNUSED_ALL(...) JERRY_UNUSED_ALL_IMPL (JERRY_VA_ARGS_NUM (__VA_ARGS__)) (__VA_ARGS__)
64+
5265
/*
5366
* Asserts
5467
*
@@ -114,10 +127,17 @@ void JERRY_ATTR_NORETURN jerry_fatal (jerry_fatal_code_t code);
114127
/*
115128
* Logging
116129
*/
130+
#ifdef JERRY_ENABLE_LOGGING
117131
#define JERRY_ERROR_MSG(...) jerry_port_log (JERRY_LOG_LEVEL_ERROR, __VA_ARGS__)
118132
#define JERRY_WARNING_MSG(...) jerry_port_log (JERRY_LOG_LEVEL_WARNING, __VA_ARGS__)
119133
#define JERRY_DEBUG_MSG(...) jerry_port_log (JERRY_LOG_LEVEL_DEBUG, __VA_ARGS__)
120134
#define JERRY_TRACE_MSG(...) jerry_port_log (JERRY_LOG_LEVEL_TRACE, __VA_ARGS__)
135+
#else /* !JERRY_ENABLE_LOGGING */
136+
#define JERRY_ERROR_MSG(...) do { if (false) { JERRY_UNUSED_ALL (__VA_ARGS__); } } while (0)
137+
#define JERRY_WARNING_MSG(...) do { if (false) { JERRY_UNUSED_ALL (__VA_ARGS__); } } while (0)
138+
#define JERRY_DEBUG_MSG(...) do { if (false) { JERRY_UNUSED_ALL (__VA_ARGS__); } } while (0)
139+
#define JERRY_TRACE_MSG(...) do { if (false) { JERRY_UNUSED_ALL (__VA_ARGS__); } } while (0)
140+
#endif /* JERRY_ENABLE_LOGGING */
121141

122142
/**
123143
* Size of struct member

jerry-core/parser/js/js-parser.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2575,9 +2575,9 @@ parser_parse_function (parser_context_t *context_p, /**< context */
25752575
if (context_p->is_show_opcodes)
25762576
{
25772577
#ifndef CONFIG_DISABLE_ES2015_CLASS
2578-
bool is_constructor = context_p->status_flags & PARSER_CLASS_CONSTRUCTOR;
2579-
JERRY_DEBUG_MSG (is_constructor ? "\n--- Class constructor parsing start ---\n\n"
2580-
: "\n--- Function parsing start ---\n\n");
2578+
JERRY_DEBUG_MSG ("\n--- %s parsing start ---\n\n",
2579+
(context_p->status_flags & PARSER_CLASS_CONSTRUCTOR) ? "Class constructor"
2580+
: "Function");
25812581
#else /* CONFIG_DISABLE_ES2015_CLASS */
25822582
JERRY_DEBUG_MSG ("\n--- Function parsing start ---\n\n");
25832583
#endif /* !CONFIG_DISABLE_ES2015_CLASS */
@@ -2679,9 +2679,9 @@ parser_parse_function (parser_context_t *context_p, /**< context */
26792679
if (context_p->is_show_opcodes)
26802680
{
26812681
#ifndef CONFIG_DISABLE_ES2015_CLASS
2682-
bool is_constructor = context_p->status_flags & PARSER_CLASS_CONSTRUCTOR;
2683-
JERRY_DEBUG_MSG (is_constructor ? "\n--- Class constructor parsing end ---\n\n"
2684-
: "\n--- Function parsing end ---\n\n");
2682+
JERRY_DEBUG_MSG ("\n--- %s parsing end ---\n\n",
2683+
(context_p->status_flags & PARSER_CLASS_CONSTRUCTOR) ? "Class constructor"
2684+
: "Function");
26852685
#else /* CONFIG_DISABLE_ES2015_CLASS */
26862686
JERRY_DEBUG_MSG ("\n--- Function parsing end ---\n\n");
26872687
#endif /* !CONFIG_DISABLE_ES2015_CLASS */

tools/build.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ def devhelp(helpstring):
116116
help='enable js-parser (%(choices)s)')
117117
coregrp.add_argument('--line-info', metavar='X', choices=['ON', 'OFF'], type=str.upper,
118118
help='provide line info (%(choices)s)')
119+
coregrp.add_argument('--logging', metavar='X', choices=['ON', 'OFF'], type=str.upper,
120+
help='enable logging (%(choices)s)')
119121
coregrp.add_argument('--mem-heap', metavar='SIZE', type=int,
120122
help='size of memory heap (in kilobytes)')
121123
coregrp.add_argument('--mem-stats', metavar='X', choices=['ON', 'OFF'], type=str.upper,
@@ -189,6 +191,7 @@ def build_options_append(cmakeopt, cliarg):
189191
build_options_append('FEATURE_DEBUGGER', arguments.jerry_debugger)
190192
build_options_append('FEATURE_JS_PARSER', arguments.js_parser)
191193
build_options_append('FEATURE_LINE_INFO', arguments.line_info)
194+
build_options_append('FEATURE_LOGGING', arguments.logging)
192195
build_options_append('MEM_HEAP_SIZE_KB', arguments.mem_heap)
193196
build_options_append('FEATURE_MEM_STATS', arguments.mem_stats)
194197
build_options_append('FEATURE_MEM_STRESS_TEST', arguments.mem_stress_test)

tools/run-tests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@
120120
['--lto=on']),
121121
Options('buildoption_test-error_messages',
122122
['--error-messages=on']),
123+
Options('buildoption_test-logging',
124+
['--logging=on']),
123125
Options('buildoption_test-all_in_one',
124126
['--all-in-one=on']),
125127
Options('buildoption_test-valgrind',

0 commit comments

Comments
 (0)