From: Tom Tromey <tromey@redhat.com>
To: jit@gcc.gnu.org
Cc: gcc-patches@gcc.gnu.org, Tom Tromey <tromey@redhat.com>
Subject: [RFA jit 2/2] introduce scoped_timevar
Date: Wed, 01 Jan 2014 00:00:00 -0000 [thread overview]
Message-ID: <1395154664-29657-3-git-send-email-tromey@redhat.com> (raw)
In-Reply-To: <1395154664-29657-1-git-send-email-tromey@redhat.com>
This introduces a new scoped_timevar class. It pushes a given timevar
in its constructor, and pops it in the destructor, giving a much
simpler way to use timevars in the typical case where they can be
scoped.
---
gcc/ChangeLog.jit | 4 ++++
gcc/jit/ChangeLog.jit | 4 ++++
gcc/jit/internal-api.c | 16 +++++-----------
gcc/timevar.h | 24 +++++++++++++++++++++++-
4 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/gcc/jit/internal-api.c b/gcc/jit/internal-api.c
index 6a4d2ae..8285c64 100644
--- a/gcc/jit/internal-api.c
+++ b/gcc/jit/internal-api.c
@@ -3737,8 +3737,6 @@ compile ()
if (get_bool_option (GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE))
dump_generated_code ();
- timevar_push (TV_ASSEMBLE);
-
/* Gross hacks follow:
We have a .s file; we want a .so file.
We could reuse parts of gcc/gcc.c to do this.
@@ -3746,6 +3744,8 @@ compile ()
*/
/* FIXME: totally faking it for now, not even using pex */
{
+ scoped_timevar assemble_timevar (TV_ASSEMBLE);
+
char cmd[1024];
snprintf (cmd, 1024, "gcc -shared %s -o %s",
m_path_s_file, m_path_so_file);
@@ -3753,20 +3753,16 @@ compile ()
printf ("cmd: %s\n", cmd);
int ret = system (cmd);
if (ret)
- {
- timevar_pop (TV_ASSEMBLE);
- return NULL;
- }
+ return NULL;
}
- timevar_pop (TV_ASSEMBLE);
// TODO: split out assembles vs linker
/* dlopen the .so file. */
{
- const char *error;
+ scoped_timevar load_timevar (TV_LOAD);
- timevar_push (TV_LOAD);
+ const char *error;
/* Clear any existing error. */
dlerror ();
@@ -3779,8 +3775,6 @@ compile ()
result_obj = new result (handle);
else
result_obj = NULL;
-
- timevar_pop (TV_LOAD);
}
return result_obj;
diff --git a/gcc/timevar.h b/gcc/timevar.h
index dc2a8bc..eb8bf0d 100644
--- a/gcc/timevar.h
+++ b/gcc/timevar.h
@@ -1,5 +1,5 @@
/* Timing variables for measuring compiler performance.
- Copyright (C) 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 2000-2014 Free Software Foundation, Inc.
Contributed by Alex Samuel <samuel@codesourcery.com>
This file is part of GCC.
@@ -110,6 +110,28 @@ timevar_pop (timevar_id_t tv)
timevar_pop_1 (tv);
}
+class scoped_timevar
+{
+ public:
+ scoped_timevar (timevar_id_t tv)
+ : m_tv (tv)
+ {
+ timevar_push (m_tv);
+ }
+
+ ~scoped_timevar ()
+ {
+ timevar_push (m_tv);
+ }
+
+ private:
+
+ // Private to disallow copies.
+ scoped_timevar (const scoped_timevar &);
+
+ timevar_id_t m_tv;
+};
+
extern void print_time (const char *, long);
#endif /* ! GCC_TIMEVAR_H */
--
1.8.5.3
next prev parent reply other threads:[~2014-03-18 14:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-01 0:00 [RFA jit 0/2] minor refactorings for reuse Tom Tromey
2014-01-01 0:00 ` Tom Tromey [this message]
2014-01-01 0:00 ` [RFA jit 2/2] introduce scoped_timevar David Malcolm
2014-01-01 0:00 ` [RFA jit 1/2] introduce class toplev Tom Tromey
2014-01-01 0:00 ` David Malcolm
2014-01-01 0:00 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1395154664-29657-3-git-send-email-tromey@redhat.com \
--to=tromey@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jit@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).