[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] [PATCH] embedded: Allow to disable the line number
From: |
Paolo Bonzini |
Subject: |
Re: [Help-smalltalk] [PATCH] embedded: Allow to disable the line number bytecode |
Date: |
Sat, 18 May 2013 12:34:46 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 |
Il 17/05/2013 14:31, Holger Hans Peter Freyther ha scritto:
> This is more noticable on smaller devices. Allow to disable the
> line number bytecode. This changes the runtime of Bench.st for
> 4 iterations from 26s to 19s.
Just a couple of nits below. Please fix them and commit!
> ---
> gst-tool.c | 7 ++++++-
> libgst/byte.c | 8 ++++++--
> libgst/files.h | 5 +++++
> libgst/gst.h | 3 ++-
> libgst/gstpub.c | 1 +
> libgst/interp.c | 5 +++++
> main.c | 6 ++++++
> 7 files changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/gst-tool.c b/gst-tool.c
> index 9cbadce..552c214 100644
> --- a/gst-tool.c
> +++ b/gst-tool.c
> @@ -138,7 +138,7 @@ const struct tool tools[] = {
> "gst-remote", "scripts/Remote.st",
> "-h|--help --version --daemon --server -p|--port: -f|--file: -e|--eval: \
> -l|--login: --package: --start: --stop: --pid --kill --snapshot:: \
> - -I|--image-file: --kernel-directory: -v|-V|--verbose",
> + -I|--image-file: --kernel-directory: -v|-V|--verbose --no-line-numbers",
> NULL, true
> },
> {
> @@ -293,6 +293,11 @@ parse_option (int short_opt, const char *long_opt, const
> char *arg)
> #endif
> }
>
> + if (long_opt && !strcmp (long_opt, "no-line-numbers"))
> + {
> + gst_set_var(GST_NO_LINE_NUMBERS, true);
> + }
Extra braces.
> +
> if (long_opt && !strcmp (long_opt, "version"))
> usage = 1;
>
> diff --git a/libgst/byte.c b/libgst/byte.c
> index 6eed361..50ff07c 100644
> --- a/libgst/byte.c
> +++ b/libgst/byte.c
> @@ -59,6 +59,8 @@
> /* Where the compiled bytecodes go. */
> bc_vector _gst_cur_bytecodes;
>
> +mst_Boolean _gst_omit_line_numbers = 0;
> +
> /* Reallocate an array of bytecodes, leaving space for DELTA more
> bytes. */
> static void realloc_bytecodes (bc_vector bytecodes,
> @@ -127,7 +129,8 @@ _gst_line_number (int n, int flags)
> assert (n > 0);
> if (flags & LN_ABSOLUTE)
> {
> - compile_byte (LINE_NUMBER_BYTECODE, n);
> + if (!_gst_omit_line_numbers)
> + compile_byte (LINE_NUMBER_BYTECODE, n);
> _gst_compiler_state->prev_line = n;
> }
> _gst_compiler_state->line_offset = n - 1;
> @@ -158,7 +161,8 @@ _gst_compile_byte (gst_uchar byte, int arg)
> {
> if (next_line_number != -1)
> {
> - compile_byte (LINE_NUMBER_BYTECODE, next_line_number);
> + if (!_gst_omit_line_numbers)
> + compile_byte (LINE_NUMBER_BYTECODE, next_line_number);
> next_line_number = -1;
> }
>
> diff --git a/libgst/files.h b/libgst/files.h
> index 2983c32..68f5f68 100644
> --- a/libgst/files.h
> +++ b/libgst/files.h
> @@ -142,4 +142,9 @@ extern char *_gst_find_file (const char *fileName,
> enum gst_file_dir dir)
> ATTRIBUTE_HIDDEN;
>
> +/* Omit line numbers in the generated bytecode. */
> +extern mst_Boolean _gst_omit_line_numbers
> + ATTRIBUTE_HIDDEN;
> +
> +
> #endif /* GST_LIB_H */
> diff --git a/libgst/gst.h b/libgst/gst.h
> index 5b95023..da81618 100644
> --- a/libgst/gst.h
> +++ b/libgst/gst.h
> @@ -222,7 +222,8 @@ enum gst_var_index {
> GST_GC_MESSAGE,
> GST_VERBOSITY,
> GST_MAKE_CORE_FILE,
> - GST_REGRESSION_TESTING
> + GST_REGRESSION_TESTING,
> + GST_NO_LINE_NUMBERS
> };
>
> enum gst_init_flags {
> diff --git a/libgst/gstpub.c b/libgst/gstpub.c
> index 2ebdfe2..29c4d19 100644
> --- a/libgst/gstpub.c
> +++ b/libgst/gstpub.c
> @@ -609,3 +609,4 @@ gst_set_event_loop_handlers(mst_Boolean (*poll) (int ms),
> {
> return _gst_set_event_loop_handlers(poll, dispatch);
> }
> +
Spurious diff.
f
> diff --git a/libgst/interp.c b/libgst/interp.c
> index 3b74614..0ec2def 100644
> --- a/libgst/interp.c
> +++ b/libgst/interp.c
> @@ -2160,6 +2160,8 @@ _gst_get_var (enum gst_var_index index)
> return (_gst_make_core_file);
> case GST_REGRESSION_TESTING:
> return (_gst_regression_testing);
> + case GST_NO_LINE_NUMBERS:
> + return (_gst_omit_line_numbers);
> default:
> return (-1);
> }
> @@ -2195,6 +2197,9 @@ _gst_set_var (enum gst_var_index index, int value)
> case GST_REGRESSION_TESTING:
> _gst_regression_testing = true;
> break;
> + case GST_NO_LINE_NUMBERS:
> + _gst_omit_line_numbers = value;
> + break;
> default:
> return (-1);
> }
> diff --git a/main.c b/main.c
> index 9c6bc60..f28aad3 100644
> --- a/main.c
> +++ b/main.c
> @@ -92,6 +92,7 @@ static const char help_text[] =
> "\n --kernel-directory DIR\t Look for kernel files in directory DIR."
> "\n --no-user-files\t\t Don't read user customization files.\n"
> "\n -\t\t\t\t Read input from standard input explicitly."
> + "\n --no-line-numbers\t\t Do not generate line numbers in the
> bytecode."
> "\n"
> "\nFiles are loaded one after the other. After the last one is loaded,"
> "\nSmalltalk will exit. If no files are specified, Smalltalk reads from"
> @@ -122,6 +123,7 @@ static const char copyright_and_legal_stuff_text[] =
> #define OPT_NO_USER 3
> #define OPT_EMACS_MODE 4
> #define OPT_MAYBE_REBUILD 5
> +#define OPT_NO_LINE_NUMBERS 6
>
> #define OPTIONS "-acDEf:ghiI:K:lL:QqrSvV"
>
> @@ -147,6 +149,7 @@ static const struct option long_options[] = {
> {"snapshot", 0, 0, 'S'},
> {"version", 0, 0, 'v'},
> {"verbose", 0, 0, 'V'},
> + {"no-line-numbers", 0, 0, OPT_NO_LINE_NUMBERS},
> {NULL, 0, 0, 0}
> };
>
> @@ -299,6 +302,9 @@ parse_args (int argc,
> loaded_files[n_loaded_files].kernel_path = false;
> loaded_files[n_loaded_files++].file_name = optarg;
> break;
> + case OPT_NO_LINE_NUMBERS:
> + gst_set_var(GST_NO_LINE_NUMBERS, true);
> + break;
>
> default:
> /* Fall through and show help message */
>
[Help-smalltalk] [PATCH 4/4] embedded: Allow to disable the profiling support in the interpreter, Holger Hans Peter Freyther, 2013/05/05
Re: [Help-smalltalk] [PATCH 1/4] embedded: Use more registers on ARM as there are plenty and reduce the alignment, Paolo Bonzini, 2013/05/11