Remove the built-in print and the jerry_port_console port API functions (#1749)
The built-in `print` is removed from jerry-core, but an external `print` implementation is added to jerry-main. From now on, all embedders of the engine have to implement their own `print` if they need such a functionality. For printing results in REPL mode of jerry-main, the external `print` handler is called directly instead of looking up the `print` function registered into the global object. (The two are the same, but the indirection is not needed anymore.) Because jerry-core does not contain `print` anymore, `jerry_port_console` is removed from the port API. The default port is updated, i.e., the implementation of `jerry_port_console` is removed. Additionally, all references to `jerry_port_console` in jerry-main are replaced by `printf`. Speculatively, `jerry_port_console` is also removed from all non-default targets. Most targets implemented it for the sake of the engine only; in those targets the removal was trivial. Where the function was called from the embedder application as well, the calls were replaced with equivalents (e.g., `printf`, `printk`). NOTE 1: This is a breaking change! NOTE 2: This patch still leaves several targets without a JS `print` implementation. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
This commit is contained in:
+12
-12
@@ -173,38 +173,38 @@ created by API functions has the error flag set.
|
||||
The following example function will output a JavaScript value:
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "jerryscript.h"
|
||||
#include "jerryscript-port.h"
|
||||
|
||||
static void
|
||||
print_value (const jerry_value_t value)
|
||||
{
|
||||
if (jerry_value_is_undefined (value))
|
||||
{
|
||||
jerry_port_console ("undefined");
|
||||
printf ("undefined");
|
||||
}
|
||||
else if (jerry_value_is_null (value))
|
||||
{
|
||||
jerry_port_console ("null");
|
||||
printf ("null");
|
||||
}
|
||||
else if (jerry_value_is_boolean (value))
|
||||
{
|
||||
if (jerry_get_boolean_value (value))
|
||||
{
|
||||
jerry_port_console ("true");
|
||||
printf ("true");
|
||||
}
|
||||
else
|
||||
{
|
||||
jerry_port_console ("false");
|
||||
printf ("false");
|
||||
}
|
||||
}
|
||||
/* Float value */
|
||||
else if (jerry_value_is_number (value))
|
||||
{
|
||||
jerry_port_console ("number");
|
||||
printf ("number");
|
||||
}
|
||||
/* String value */
|
||||
else if (jerry_value_is_string (value))
|
||||
@@ -216,15 +216,15 @@ print_value (const jerry_value_t value)
|
||||
jerry_string_to_char_buffer (value, str_buf_p, req_sz);
|
||||
str_buf_p[req_sz] = '\0';
|
||||
|
||||
jerry_port_console ("%s", (const char *) str_buf_p);
|
||||
printf ("%s", (const char *) str_buf_p);
|
||||
}
|
||||
/* Object reference */
|
||||
else if (jerry_value_is_object (value))
|
||||
{
|
||||
jerry_port_console ("[JS object]");
|
||||
printf ("[JS object]");
|
||||
}
|
||||
|
||||
jerry_port_console ("\n");
|
||||
printf ("\n");
|
||||
}
|
||||
```
|
||||
|
||||
@@ -243,11 +243,11 @@ Shell operation can be described with the following loop:
|
||||
- loop.
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "jerryscript.h"
|
||||
#include "jerryscript-port.h"
|
||||
|
||||
static void print_value (const jerry_value_t);
|
||||
|
||||
@@ -265,7 +265,7 @@ main (int argc, char *argv[])
|
||||
char *cmd_tail = cmd;
|
||||
size_t len = 0;
|
||||
|
||||
jerry_port_console ("> ");
|
||||
printf ("> ");
|
||||
|
||||
/* Read next command */
|
||||
while (true)
|
||||
@@ -302,7 +302,7 @@ main (int argc, char *argv[])
|
||||
{
|
||||
/* Evaluated JS code thrown an exception
|
||||
* and didn't handle it with try-catch-finally */
|
||||
jerry_port_console ("Unhandled JS exception occured: ");
|
||||
printf ("Unhandled JS exception occured: ");
|
||||
}
|
||||
|
||||
print_value (ret_val);
|
||||
|
||||
@@ -35,20 +35,6 @@ typedef enum
|
||||
These are the only I/O functions jerry calls.
|
||||
|
||||
```c
|
||||
/**
|
||||
* Print a string to the console. The function should implement a printf-like
|
||||
* interface, where the first argument specifies a format string on how to
|
||||
* stringify the rest of the parameter list.
|
||||
*
|
||||
* This function is only called with strings coming from the executed ECMAScript
|
||||
* wanting to print something as the result of its normal operation.
|
||||
*
|
||||
* It should be the port that decides what a "console" is.
|
||||
*
|
||||
* Example: a libc-based port may implement this with vprintf().
|
||||
*/
|
||||
void jerry_port_console (const char *fmt, ...);
|
||||
|
||||
/**
|
||||
* Jerry log levels. The levels are in severity order
|
||||
* where the most serious levels come first.
|
||||
@@ -133,19 +119,6 @@ void jerry_port_fatal (jerry_fatal_code_t code)
|
||||
#include <stdarg.h>
|
||||
#include "jerryscript-port.h"
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
*
|
||||
|
||||
@@ -47,95 +47,6 @@
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* The implementation-defined Global object's 'print' routine
|
||||
*
|
||||
* The routine converts all of its arguments to strings and outputs them using 'jerry_port_console'.
|
||||
*
|
||||
* Code points, with except of NUL character, that are representable with one utf8-byte
|
||||
* are outputted as is, using "%c" format argument, and other code points are outputted as "\uhhll",
|
||||
* where hh and ll are values of code point's high and low bytes, correspondingly.
|
||||
*
|
||||
* @return ecma value
|
||||
* Returned value must be freed with ecma_free_value.
|
||||
*/
|
||||
static ecma_value_t
|
||||
ecma_builtin_global_object_print (ecma_value_t this_arg, /**< this argument */
|
||||
const ecma_value_t args[], /**< arguments list */
|
||||
ecma_length_t args_number) /**< number of arguments */
|
||||
{
|
||||
JERRY_UNUSED (this_arg);
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
|
||||
for (ecma_length_t arg_index = 0;
|
||||
ecma_is_value_empty (ret_value) && arg_index < args_number;
|
||||
arg_index++)
|
||||
{
|
||||
ECMA_TRY_CATCH (str_value,
|
||||
ecma_op_to_string (args[arg_index]),
|
||||
ret_value);
|
||||
|
||||
ecma_string_t *str_p = ecma_get_string_from_value (str_value);
|
||||
|
||||
lit_utf8_size_t utf8_str_size = ecma_string_get_size (str_p);
|
||||
|
||||
JMEM_DEFINE_LOCAL_ARRAY (utf8_str_p,
|
||||
utf8_str_size,
|
||||
lit_utf8_byte_t);
|
||||
|
||||
ecma_string_to_utf8_bytes (str_p, utf8_str_p, utf8_str_size);
|
||||
|
||||
const lit_utf8_byte_t *utf8_str_curr_p = utf8_str_p;
|
||||
const lit_utf8_byte_t *utf8_str_end_p = utf8_str_p + utf8_str_size;
|
||||
|
||||
while (utf8_str_curr_p < utf8_str_end_p)
|
||||
{
|
||||
ecma_char_t code_unit = lit_utf8_read_next (&utf8_str_curr_p);
|
||||
|
||||
if (code_unit == LIT_CHAR_NULL)
|
||||
{
|
||||
jerry_port_console ("\\u0000");
|
||||
}
|
||||
else if (code_unit <= LIT_UTF8_1_BYTE_CODE_POINT_MAX)
|
||||
{
|
||||
jerry_port_console ("%c", (char) code_unit);
|
||||
}
|
||||
else
|
||||
{
|
||||
JERRY_STATIC_ASSERT (sizeof (code_unit) == 2,
|
||||
size_of_code_point_must_be_equal_to_2_bytes);
|
||||
|
||||
uint32_t byte_high = (uint32_t) JRT_EXTRACT_BIT_FIELD (ecma_char_t, code_unit,
|
||||
JERRY_BITSINBYTE,
|
||||
JERRY_BITSINBYTE);
|
||||
uint32_t byte_low = (uint32_t) JRT_EXTRACT_BIT_FIELD (ecma_char_t, code_unit,
|
||||
0,
|
||||
JERRY_BITSINBYTE);
|
||||
|
||||
jerry_port_console ("\\u%02x%02x", (unsigned int) byte_high, (unsigned int) byte_low);
|
||||
}
|
||||
}
|
||||
|
||||
if (arg_index < args_number - 1)
|
||||
{
|
||||
jerry_port_console (" ");
|
||||
}
|
||||
|
||||
JMEM_FINALIZE_LOCAL_ARRAY (utf8_str_p);
|
||||
|
||||
ECMA_FINALIZE (str_value);
|
||||
}
|
||||
|
||||
jerry_port_console ("\n");
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
} /* ecma_builtin_global_object_print */
|
||||
|
||||
/**
|
||||
* The Global object's 'eval' routine
|
||||
*
|
||||
|
||||
@@ -200,9 +200,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROMISE_UL,
|
||||
/* Routine properties:
|
||||
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
|
||||
|
||||
/* Implementation-defined 'print' routine */
|
||||
ROUTINE (LIT_MAGIC_STRING_PRINT, ecma_builtin_global_object_print, NON_FIXED, 1)
|
||||
|
||||
ROUTINE (LIT_MAGIC_STRING_EVAL, ecma_builtin_global_object_eval, 1, 1)
|
||||
ROUTINE (LIT_MAGIC_STRING_PARSE_FLOAT, ecma_builtin_global_object_parse_float, 1, 1)
|
||||
ROUTINE (LIT_MAGIC_STRING_IS_NAN, ecma_builtin_global_object_is_nan, 1, 1)
|
||||
|
||||
@@ -68,20 +68,6 @@ void jerry_port_fatal (jerry_fatal_code_t code);
|
||||
* I/O Port API
|
||||
*/
|
||||
|
||||
/**
|
||||
* Print a string to the console. The function should implement a printf-like
|
||||
* interface, where the first argument specifies a format string on how to
|
||||
* stringify the rest of the parameter list.
|
||||
*
|
||||
* This function is only called with strings coming from the executed ECMAScript
|
||||
* wanting to print something as the result of its normal operation.
|
||||
*
|
||||
* It should be the port that decides what a "console" is.
|
||||
*
|
||||
* Example: a libc-based port may implement this with vprintf().
|
||||
*/
|
||||
void jerry_port_console (const char *format, ...) __attribute__ ((format (printf, 1, 2)));
|
||||
|
||||
/**
|
||||
* Jerry log levels. The levels are in severity order
|
||||
* where the most serious levels come first.
|
||||
|
||||
@@ -192,7 +192,6 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MATCH, "match")
|
||||
|| !defined (CONFIG_DISABLE_JSON_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PARSE, "parse")
|
||||
#endif
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PRINT, "print")
|
||||
#if !defined (CONFIG_DISABLE_MATH_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ROUND, "round")
|
||||
#endif
|
||||
|
||||
@@ -105,7 +105,6 @@ LIT_MAGIC_STRING_INPUT = "input"
|
||||
LIT_MAGIC_STRING_IS_NAN = "isNaN"
|
||||
LIT_MAGIC_STRING_MATCH = "match"
|
||||
LIT_MAGIC_STRING_PARSE = "parse"
|
||||
LIT_MAGIC_STRING_PRINT = "print"
|
||||
LIT_MAGIC_STRING_ROUND = "round"
|
||||
LIT_MAGIC_STRING_SHIFT = "shift"
|
||||
LIT_MAGIC_STRING_SLICE = "slice"
|
||||
|
||||
@@ -59,12 +59,12 @@ read_file (const char *file_name,
|
||||
static void
|
||||
print_help (char *name)
|
||||
{
|
||||
jerry_port_console ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
" -h, --help\n"
|
||||
"\n",
|
||||
name);
|
||||
printf ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
" -h, --help\n"
|
||||
"\n",
|
||||
name);
|
||||
} /* print_help */
|
||||
|
||||
int
|
||||
|
||||
+104
-50
@@ -122,39 +122,111 @@ gc_handler (const jerry_value_t func_obj_val __attribute__((unused)), /**< funct
|
||||
return jerry_create_undefined ();
|
||||
} /* gc_handler */
|
||||
|
||||
/**
|
||||
* Provide the 'print' implementation for the engine.
|
||||
*
|
||||
* The routine converts all of its arguments to strings and outputs them using
|
||||
* 'printf'.
|
||||
*
|
||||
* The NUL character is output as "\u0000", other code points are output using
|
||||
* "%c" format argument.
|
||||
*
|
||||
* @return undefined - if all arguments could be converted to strings,
|
||||
* error - otherwise.
|
||||
*/
|
||||
static jerry_value_t
|
||||
print_handler (const jerry_value_t func_obj_val __attribute__((unused)), /**< function object */
|
||||
const jerry_value_t this_p __attribute__((unused)), /**< this arg */
|
||||
const jerry_value_t args_p[], /**< function arguments */
|
||||
const jerry_length_t args_cnt) /**< number of function arguments */
|
||||
{
|
||||
jerry_value_t ret_val = jerry_create_undefined ();
|
||||
|
||||
for (jerry_length_t arg_index = 0;
|
||||
jerry_value_is_undefined (ret_val) && arg_index < args_cnt;
|
||||
arg_index++)
|
||||
{
|
||||
jerry_value_t str_val = jerry_value_to_string (args_p[arg_index]);
|
||||
|
||||
if (!jerry_value_has_error_flag (str_val))
|
||||
{
|
||||
if (arg_index != 0)
|
||||
{
|
||||
printf (" ");
|
||||
}
|
||||
|
||||
jerry_size_t substr_size;
|
||||
jerry_length_t substr_pos = 0;
|
||||
jerry_char_t substr_buf[256];
|
||||
|
||||
while ((substr_size = jerry_substring_to_char_buffer (str_val,
|
||||
substr_pos,
|
||||
substr_pos + 256,
|
||||
substr_buf,
|
||||
256)) != 0)
|
||||
{
|
||||
for (jerry_size_t chr_index = 0; chr_index < substr_size; chr_index++)
|
||||
{
|
||||
char chr = (char) substr_buf[chr_index];
|
||||
if (chr == '\0')
|
||||
{
|
||||
printf ("\\u0000");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("%c", chr);
|
||||
}
|
||||
}
|
||||
|
||||
substr_pos += substr_size;
|
||||
}
|
||||
|
||||
jerry_release_value (str_val);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret_val = str_val;
|
||||
}
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
|
||||
return ret_val;
|
||||
} /* print_handler */
|
||||
|
||||
static void
|
||||
print_usage (const char *name)
|
||||
{
|
||||
jerry_port_console ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"Try '%s --help' for more information.\n",
|
||||
name,
|
||||
name);
|
||||
printf ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"Try '%s --help' for more information.\n",
|
||||
name,
|
||||
name);
|
||||
} /* print_usage */
|
||||
|
||||
static void
|
||||
print_help (const char *name)
|
||||
{
|
||||
jerry_port_console ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
" -h, --help\n"
|
||||
" -v, --version\n"
|
||||
" --mem-stats\n"
|
||||
" --mem-stats-separate\n"
|
||||
" --parse-only\n"
|
||||
" --show-opcodes\n"
|
||||
" --show-regexp-opcodes\n"
|
||||
" --start-debug-server\n"
|
||||
" --save-snapshot-for-global FILE\n"
|
||||
" --save-snapshot-for-eval FILE\n"
|
||||
" --save-literals-list-format FILE\n"
|
||||
" --save-literals-c-format FILE\n"
|
||||
" --exec-snapshot FILE\n"
|
||||
" --log-level [0-3]\n"
|
||||
" --abort-on-fail\n"
|
||||
" --no-prompt\n"
|
||||
"\n",
|
||||
name);
|
||||
printf ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
" -h, --help\n"
|
||||
" -v, --version\n"
|
||||
" --mem-stats\n"
|
||||
" --mem-stats-separate\n"
|
||||
" --parse-only\n"
|
||||
" --show-opcodes\n"
|
||||
" --show-regexp-opcodes\n"
|
||||
" --start-debug-server\n"
|
||||
" --save-snapshot-for-global FILE\n"
|
||||
" --save-snapshot-for-eval FILE\n"
|
||||
" --save-literals-list-format FILE\n"
|
||||
" --save-literals-c-format FILE\n"
|
||||
" --exec-snapshot FILE\n"
|
||||
" --log-level [0-3]\n"
|
||||
" --abort-on-fail\n"
|
||||
" --no-prompt\n"
|
||||
"\n",
|
||||
name);
|
||||
} /* print_help */
|
||||
|
||||
/**
|
||||
@@ -461,7 +533,7 @@ main (int argc,
|
||||
}
|
||||
else if (!strcmp ("-v", argv[i]) || !strcmp ("--version", argv[i]))
|
||||
{
|
||||
jerry_port_console ("Version: %d.%d%s\n", JERRY_API_MAJOR_VERSION, JERRY_API_MINOR_VERSION, JERRY_COMMIT_HASH);
|
||||
printf ("Version: %d.%d%s\n", JERRY_API_MAJOR_VERSION, JERRY_API_MINOR_VERSION, JERRY_COMMIT_HASH);
|
||||
return JERRY_STANDALONE_EXIT_CODE_OK;
|
||||
}
|
||||
else if (!strcmp ("--mem-stats", argv[i]))
|
||||
@@ -600,6 +672,7 @@ main (int argc,
|
||||
|
||||
register_js_function ("assert", assert_handler);
|
||||
register_js_function ("gc", gc_handler);
|
||||
register_js_function ("print", print_handler);
|
||||
|
||||
jerry_value_t ret_value = jerry_create_undefined ();
|
||||
|
||||
@@ -722,28 +795,12 @@ main (int argc,
|
||||
const char *prompt = !no_prompt ? "jerry> " : "";
|
||||
bool is_done = false;
|
||||
|
||||
jerry_value_t global_object_val = jerry_get_global_object ();
|
||||
jerry_value_t print_func_name_val = jerry_create_string ((jerry_char_t *) "print");
|
||||
jerry_value_t print_function = jerry_get_property (global_object_val, print_func_name_val);
|
||||
|
||||
jerry_release_value (print_func_name_val);
|
||||
|
||||
if (jerry_value_has_error_flag (print_function))
|
||||
{
|
||||
return JERRY_STANDALONE_EXIT_CODE_FAIL;
|
||||
}
|
||||
|
||||
if (!jerry_value_is_function (print_function))
|
||||
{
|
||||
return JERRY_STANDALONE_EXIT_CODE_FAIL;
|
||||
}
|
||||
|
||||
while (!is_done)
|
||||
{
|
||||
uint8_t *source_buffer_tail = buffer;
|
||||
size_t len = 0;
|
||||
|
||||
jerry_port_console ("%s", prompt);
|
||||
printf ("%s", prompt);
|
||||
|
||||
/* Read a line */
|
||||
while (true)
|
||||
@@ -771,10 +828,10 @@ main (int argc,
|
||||
{
|
||||
/* Print return value */
|
||||
const jerry_value_t args[] = { ret_val_eval };
|
||||
jerry_value_t ret_val_print = jerry_call_function (print_function,
|
||||
jerry_create_undefined (),
|
||||
args,
|
||||
1);
|
||||
jerry_value_t ret_val_print = print_handler (jerry_create_undefined (),
|
||||
jerry_create_undefined (),
|
||||
args,
|
||||
1);
|
||||
jerry_release_value (ret_val_print);
|
||||
#ifndef CONFIG_DISABLE_ES2015_PROMISE_BUILTIN
|
||||
jerry_release_value (ret_val_eval);
|
||||
@@ -794,9 +851,6 @@ main (int argc,
|
||||
jerry_release_value (ret_val_eval);
|
||||
}
|
||||
}
|
||||
|
||||
jerry_release_value (global_object_val);
|
||||
jerry_release_value (print_function);
|
||||
}
|
||||
|
||||
int ret_code = JERRY_STANDALONE_EXIT_CODE_OK;
|
||||
|
||||
@@ -59,19 +59,6 @@ jerry_port_default_set_log_level (jerry_log_level_t level) /**< log level */
|
||||
#define JERRY_PORT_DEFAULT_LOG_LEVEL JERRY_LOG_LEVEL_ERROR
|
||||
#endif /* !DISABLE_EXTRA_API */
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Default implementation of jerry_port_log. Prints log message to standard
|
||||
* error with 'vfprintf' if message level is less than or equal to the set log
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "zephyr.h"
|
||||
#include "microkernel/task.h"
|
||||
#include "os/os.h"
|
||||
#include "misc/printk.h"
|
||||
|
||||
static T_QUEUE queue;
|
||||
|
||||
@@ -51,7 +52,7 @@ void jerry_resolve_error (jerry_value_t ret_value)
|
||||
jerry_char_t *err_str_buf = (jerry_char_t *) balloc (err_str_size, NULL);
|
||||
jerry_size_t sz = jerry_string_to_char_buffer (err_str_val, err_str_buf, err_str_size);
|
||||
err_str_buf[sz] = 0;
|
||||
jerry_port_console ("Script Error: unhandled exception: %s\n", err_str_buf);
|
||||
printk ("Script Error: unhandled exception: %s\n", err_str_buf);
|
||||
bfree(err_str_buf);
|
||||
jerry_release_value (err_str_val);
|
||||
}
|
||||
@@ -59,9 +60,9 @@ void jerry_resolve_error (jerry_value_t ret_value)
|
||||
|
||||
void help ()
|
||||
{
|
||||
jerry_port_console ("Usage:\n");
|
||||
jerry_port_console ("js e 'JavaScript Command'\n");
|
||||
jerry_port_console ("eg. js e print ('Hello World');\n");
|
||||
printk ("Usage:\n");
|
||||
printk ("js e 'JavaScript Command'\n");
|
||||
printk ("eg. js e print ('Hello World');\n");
|
||||
}
|
||||
|
||||
void eval_jerry_script (int argc, char *argv[], struct tcmd_handler_ctx *ctx)
|
||||
@@ -79,7 +80,7 @@ void eval_jerry_script (int argc, char *argv[], struct tcmd_handler_ctx *ctx)
|
||||
size_t *str_lens = (size_t *) balloc ((argc - 2) * sizeof(size_t), &err);
|
||||
if (str_lens == NULL || err != E_OS_OK)
|
||||
{
|
||||
jerry_port_console ("%s: allocate memory failed!", __func__);
|
||||
printk ("%s: allocate memory failed!", __func__);
|
||||
TCMD_RSP_ERROR (ctx, NULL);
|
||||
return;
|
||||
}
|
||||
@@ -92,7 +93,7 @@ void eval_jerry_script (int argc, char *argv[], struct tcmd_handler_ctx *ctx)
|
||||
char *buffer = (char *) balloc (str_total_length, &err);
|
||||
if (buffer == NULL || err != E_OS_OK)
|
||||
{
|
||||
jerry_port_console ("%s: allocate memory failed!", __func__);
|
||||
printk ("%s: allocate memory failed!", __func__);
|
||||
TCMD_RSP_ERROR (ctx, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -20,24 +20,6 @@
|
||||
#include <stddef.h>
|
||||
#include "jerryscript-port.h"
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
* Curie BSP implementation
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
char buf[256];
|
||||
int length = 0;
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
length = vsnprintf (buf, 256, format, args);
|
||||
buf[length] = '\0';
|
||||
printk ("%s", buf);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
* Curie BSP implementation
|
||||
|
||||
@@ -20,19 +20,6 @@
|
||||
#include "jerry-core/jerryscript-port.h"
|
||||
int ets_putc (int);
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
ets_vprintf (ets_putc, format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
*/
|
||||
|
||||
@@ -22,19 +22,6 @@
|
||||
|
||||
#include "mbed-hal/us_ticker_api.h"
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
*/
|
||||
@@ -62,7 +49,7 @@ jerry_port_fatal (jerry_fatal_code_t code) /**< fatal code enum item */
|
||||
|
||||
/**
|
||||
* Implementation of jerry_port_get_time_zone.
|
||||
*
|
||||
*
|
||||
* @return true - if success
|
||||
*/
|
||||
bool
|
||||
|
||||
@@ -22,26 +22,6 @@
|
||||
|
||||
#include "us_ticker_api.h"
|
||||
|
||||
#ifndef JSMBED_OVERRIDE_JERRY_PORT_CONSOLE
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
||||
|
||||
if (strlen (format) == 1 && format[0] == 0x0a) /* line feed (\n) */
|
||||
{
|
||||
printf ("\r"); /* add CR for proper display in serial monitors */
|
||||
}
|
||||
} /* jerry_port_console */
|
||||
#endif /* JSMBED_OVERRIDE_JERRY_PORT_CONSOLE */
|
||||
|
||||
#ifndef JSMBED_OVERRIDE_JERRY_PORT_LOG
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
|
||||
@@ -44,16 +44,16 @@
|
||||
static void
|
||||
print_help (char *name)
|
||||
{
|
||||
jerry_port_console ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
" --log-level [0-3]\n"
|
||||
" --mem-stats\n"
|
||||
" --mem-stats-separate\n"
|
||||
" --show-opcodes\n"
|
||||
" --start-debug-server\n"
|
||||
"\n",
|
||||
name);
|
||||
printf ("Usage: %s [OPTION]... [FILE]...\n"
|
||||
"\n"
|
||||
"Options:\n"
|
||||
" --log-level [0-3]\n"
|
||||
" --mem-stats\n"
|
||||
" --mem-stats-separate\n"
|
||||
" --show-opcodes\n"
|
||||
" --start-debug-server\n"
|
||||
"\n",
|
||||
name);
|
||||
} /* print_help */
|
||||
|
||||
/**
|
||||
@@ -449,7 +449,7 @@ int jerry_main (int argc, char *argv[])
|
||||
|
||||
if (files_counter == 0)
|
||||
{
|
||||
jerry_port_console ("No input files, running a hello world demo:\n");
|
||||
printf ("No input files, running a hello world demo:\n");
|
||||
char *source_p = "var a = 3.5; print('Hello world ' + (a + 1.5) + ' times from JerryScript')";
|
||||
|
||||
jerry_run_simple ((jerry_char_t *) source_p, strlen (source_p), flags);
|
||||
@@ -522,19 +522,6 @@ void jerry_port_fatal (jerry_fatal_code_t code)
|
||||
exit (1);
|
||||
} /* jerry_port_fatal */
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
*/
|
||||
|
||||
@@ -29,19 +29,6 @@ void jerry_port_fatal (jerry_fatal_code_t code)
|
||||
exit (code);
|
||||
} /* jerry_port_fatal */
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vprintf (format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
*/
|
||||
@@ -110,4 +97,3 @@ longjmp (jmp_buf buf, int value)
|
||||
(void)(value); // suppress unused param warning
|
||||
__builtin_longjmp (buf, 1);
|
||||
} /* longjmp */
|
||||
|
||||
|
||||
@@ -19,19 +19,6 @@
|
||||
|
||||
#include "jerryscript-port.h"
|
||||
|
||||
/**
|
||||
* Provide console message implementation for the engine.
|
||||
*/
|
||||
void
|
||||
jerry_port_console (const char *format, /**< format string */
|
||||
...) /**< parameters */
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
||||
} /* jerry_port_console */
|
||||
|
||||
|
||||
/**
|
||||
* Provide log message implementation for the engine.
|
||||
|
||||
@@ -356,9 +356,6 @@ main (void)
|
||||
double number_val;
|
||||
char buffer[32];
|
||||
|
||||
is_ok = test_run_simple ("print ('Hello, World!');");
|
||||
TEST_ASSERT (is_ok);
|
||||
|
||||
is_ok = test_run_simple ("throw 'Hello World';");
|
||||
TEST_ASSERT (!is_ok);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user