[v6,08/50] tcg: Introduce temp_arg

Message ID 20171016172609.23422-9-richard.henderson@linaro.org
State New
Headers show
Series
  • tcg tb_lock removal
Related show

Commit Message

Richard Henderson Oct. 16, 2017, 5:25 p.m.
From: Richard Henderson <rth@twiddle.net>


Signed-off-by: Richard Henderson <rth@twiddle.net>

---
 tcg/tcg.h | 7 +++++++
 tcg/tcg.c | 4 ++--
 2 files changed, 9 insertions(+), 2 deletions(-)

-- 
2.13.6

Comments

Emilio G. Cota Oct. 17, 2017, 9 p.m. | #1
On Mon, Oct 16, 2017 at 10:25:27 -0700, Richard Henderson wrote:
> From: Richard Henderson <rth@twiddle.net>

> 

> Signed-off-by: Richard Henderson <rth@twiddle.net>


Reviewed-by: Emilio G. Cota <cota@braap.org>


I'd consider combining this patch with the "Export temp_idx" one.

		E.

Patch

diff --git a/tcg/tcg.h b/tcg/tcg.h
index 5fcdec1fc5..1e456d8e5a 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -729,6 +729,13 @@  struct TCGContext {
 extern TCGContext tcg_ctx;
 extern bool parallel_cpus;
 
+static inline TCGArg temp_arg(TCGTemp *ts)
+{
+    ptrdiff_t n = ts - tcg_ctx.temps;
+    tcg_debug_assert(n >= 0 && n < tcg_ctx.nb_temps);
+    return n;
+}
+
 static inline TCGTemp *arg_temp(TCGArg a)
 {
     return a == TCG_CALL_DUMMY_ARG ? NULL : &tcg_ctx.temps[a];
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 915e041bea..31279ab3bb 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1941,7 +1941,7 @@  static bool liveness_pass_2(TCGContext *s, uint8_t *temp_state)
                     TCGOp *lop = tcg_op_insert_before(s, op, lopc, 3);
 
                     lop->args[0] = dir;
-                    lop->args[1] = temp_idx(s, its->mem_base);
+                    lop->args[1] = temp_arg(its->mem_base);
                     lop->args[2] = its->mem_offset;
 
                     /* Loaded, but synced with memory.  */
@@ -2012,7 +2012,7 @@  static bool liveness_pass_2(TCGContext *s, uint8_t *temp_state)
                 TCGOp *sop = tcg_op_insert_after(s, op, sopc, 3);
 
                 sop->args[0] = dir;
-                sop->args[1] = temp_idx(s, its->mem_base);
+                sop->args[1] = temp_arg(its->mem_base);
                 sop->args[2] = its->mem_offset;
 
                 temp_state[arg] = TS_MEM;