[PATCH] translate-all: Remove tb_alloc

Richard Henderson posted 1 patch 4 years, 5 months ago
Test asan passed
Test checkpatch passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191023164645.5518-1-richard.henderson@linaro.org
Maintainers: Richard Henderson <rth@twiddle.net>, Paolo Bonzini <pbonzini@redhat.com>
accel/tcg/translate-all.c | 20 ++------------------
1 file changed, 2 insertions(+), 18 deletions(-)
[PATCH] translate-all: Remove tb_alloc
Posted by Richard Henderson 4 years, 5 months ago
Since 2ac01d6dafab, this function does only two things: assert a
lock is held, and call tcg_tb_alloc.  It is used exactly once,
and its user has already done the assert.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---

I noticed that this function was essentially a stub while
reviewing Clement's tb->orig_tb fix.

Note that the added newline in tb_gen_code both adds the
missing break after the variable declaration block and
also happens to highlight the assert mentioned above.  ;-)


r~

---
 accel/tcg/translate-all.c | 20 ++------------------
 1 file changed, 2 insertions(+), 18 deletions(-)

diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index f9b7ba159d..ae063b53f9 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -1156,23 +1156,6 @@ void tcg_exec_init(unsigned long tb_size)
 #endif
 }
 
-/*
- * Allocate a new translation block. Flush the translation buffer if
- * too many translation blocks or too much generated code.
- */
-static TranslationBlock *tb_alloc(target_ulong pc)
-{
-    TranslationBlock *tb;
-
-    assert_memory_lock();
-
-    tb = tcg_tb_alloc(tcg_ctx);
-    if (unlikely(tb == NULL)) {
-        return NULL;
-    }
-    return tb;
-}
-
 /* call with @p->lock held */
 static inline void invalidate_page_bitmap(PageDesc *p)
 {
@@ -1681,6 +1664,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
     TCGProfile *prof = &tcg_ctx->prof;
     int64_t ti;
 #endif
+
     assert_memory_lock();
 
     phys_pc = get_page_addr_code(env, pc);
@@ -1706,7 +1690,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
     }
 
  buffer_overflow:
-    tb = tb_alloc(pc);
+    tb = tcg_tb_alloc(tcg_ctx);
     if (unlikely(!tb)) {
         /* flush must be done */
         tb_flush(cpu);
-- 
2.17.1


Re: [PATCH] translate-all: Remove tb_alloc
Posted by Philippe Mathieu-Daudé 4 years, 5 months ago
On 10/23/19 6:46 PM, Richard Henderson wrote:
> Since 2ac01d6dafab, this function does only two things: assert a
> lock is held, and call tcg_tb_alloc.  It is used exactly once,
> and its user has already done the assert.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---
> 
> I noticed that this function was essentially a stub while
> reviewing Clement's tb->orig_tb fix.
> 
> Note that the added newline in tb_gen_code both adds the
> missing break after the variable declaration block and
> also happens to highlight the assert mentioned above.  ;-)
> 
> 
> r~
> 
> ---
>   accel/tcg/translate-all.c | 20 ++------------------
>   1 file changed, 2 insertions(+), 18 deletions(-)
> 
> diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
> index f9b7ba159d..ae063b53f9 100644
> --- a/accel/tcg/translate-all.c
> +++ b/accel/tcg/translate-all.c
> @@ -1156,23 +1156,6 @@ void tcg_exec_init(unsigned long tb_size)
>   #endif
>   }
>   
> -/*
> - * Allocate a new translation block. Flush the translation buffer if
> - * too many translation blocks or too much generated code.
> - */
> -static TranslationBlock *tb_alloc(target_ulong pc)
> -{
> -    TranslationBlock *tb;
> -
> -    assert_memory_lock();
> -
> -    tb = tcg_tb_alloc(tcg_ctx);
> -    if (unlikely(tb == NULL)) {
> -        return NULL;
> -    }
> -    return tb;
> -}
> -
>   /* call with @p->lock held */
>   static inline void invalidate_page_bitmap(PageDesc *p)
>   {
> @@ -1681,6 +1664,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
>       TCGProfile *prof = &tcg_ctx->prof;
>       int64_t ti;
>   #endif
> +
>       assert_memory_lock();
>   
>       phys_pc = get_page_addr_code(env, pc);
> @@ -1706,7 +1690,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
>       }
>   
>    buffer_overflow:
> -    tb = tb_alloc(pc);
> +    tb = tcg_tb_alloc(tcg_ctx);
>       if (unlikely(!tb)) {
>           /* flush must be done */
>           tb_flush(cpu);
> 


Re: [PATCH] translate-all: Remove tb_alloc
Posted by Clement Deschamps 4 years, 5 months ago
On 10/23/19 6:46 PM, Richard Henderson wrote:
> Since 2ac01d6dafab, this function does only two things: assert a
> lock is held, and call tcg_tb_alloc.  It is used exactly once,
> and its user has already done the assert.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---

Reviewed-by: Clement Deschamps <clement.deschamps@greensocs.com>

> 
> I noticed that this function was essentially a stub while
> reviewing Clement's tb->orig_tb fix.
> 
> Note that the added newline in tb_gen_code both adds the
> missing break after the variable declaration block and
> also happens to highlight the assert mentioned above.  ;-)
> 
> 
> r~
> 
> ---
>   accel/tcg/translate-all.c | 20 ++------------------
>   1 file changed, 2 insertions(+), 18 deletions(-)
> 
> diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
> index f9b7ba159d..ae063b53f9 100644
> --- a/accel/tcg/translate-all.c
> +++ b/accel/tcg/translate-all.c
> @@ -1156,23 +1156,6 @@ void tcg_exec_init(unsigned long tb_size)
>   #endif
>   }
>   
> -/*
> - * Allocate a new translation block. Flush the translation buffer if
> - * too many translation blocks or too much generated code.
> - */
> -static TranslationBlock *tb_alloc(target_ulong pc)
> -{
> -    TranslationBlock *tb;
> -
> -    assert_memory_lock();
> -
> -    tb = tcg_tb_alloc(tcg_ctx);
> -    if (unlikely(tb == NULL)) {
> -        return NULL;
> -    }
> -    return tb;
> -}
> -
>   /* call with @p->lock held */
>   static inline void invalidate_page_bitmap(PageDesc *p)
>   {
> @@ -1681,6 +1664,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
>       TCGProfile *prof = &tcg_ctx->prof;
>       int64_t ti;
>   #endif
> +
>       assert_memory_lock();
>   
>       phys_pc = get_page_addr_code(env, pc);
> @@ -1706,7 +1690,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
>       }
>   
>    buffer_overflow:
> -    tb = tb_alloc(pc);
> +    tb = tcg_tb_alloc(tcg_ctx);
>       if (unlikely(!tb)) {
>           /* flush must be done */
>           tb_flush(cpu);
>