From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35210) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRRO4-0000Rh-A6 for qemu-devel@nongnu.org; Thu, 04 Feb 2016 16:24:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aRRNz-0006C2-7e for qemu-devel@nongnu.org; Thu, 04 Feb 2016 16:24:24 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:34633) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRRNz-0006BT-2w for qemu-devel@nongnu.org; Thu, 04 Feb 2016 16:24:19 -0500 Received: by mail-qk0-x242.google.com with SMTP id u128so1691781qkh.1 for ; Thu, 04 Feb 2016 13:24:18 -0800 (PST) Sender: Richard Henderson References: <1454597781-18115-1-git-send-email-alex.bennee@linaro.org> <1454597781-18115-2-git-send-email-alex.bennee@linaro.org> From: Richard Henderson Message-ID: <56B3C17A.5060204@twiddle.net> Date: Fri, 5 Feb 2016 08:24:10 +1100 MIME-Version: 1.0 In-Reply-To: <1454597781-18115-2-git-send-email-alex.bennee@linaro.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v5 1/9] tcg: pass down TranslationBlock to tcg_code_gen List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?Q?Alex_Benn=c3=a9e?= , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Peter Crosthwaite , dgilbert@redhat.com, crosthwaitepeter@gmail.com, pbonzini@redhat.com, aurelien@aurel32.net On 02/05/2016 01:56 AM, Alex Bennée wrote: > diff --git a/translate-all.c b/translate-all.c > index ab61fac..dce00d5 100644 > --- a/translate-all.c > +++ b/translate-all.c > @@ -1055,7 +1055,6 @@ TranslationBlock *tb_gen_code(CPUState *cpu, > TranslationBlock *tb; > tb_page_addr_t phys_pc, phys_page2; > target_ulong virt_page2; > - tcg_insn_unit *gen_code_buf; > int gen_code_size, search_size; > #ifdef CONFIG_PROFILER > int64_t ti; > @@ -1078,8 +1077,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, > tcg_ctx.tb_ctx.tb_invalidated_flag = 1; > } > > - gen_code_buf = tcg_ctx.code_gen_ptr; > - tb->tc_ptr = gen_code_buf; > + tb->tc_ptr = tcg_ctx.code_gen_ptr; Why get rid of the gen_code_buf variable? You're forcing the compiler to keep reloading the value from memory. Certainly that's not relevant to passing down TB to tcg_gen_code, and is a separate change that ought to be separately defended. r~ > tb->cs_base = cs_base; > tb->flags = flags; > tb->cflags = cflags; > @@ -1119,11 +1117,11 @@ TranslationBlock *tb_gen_code(CPUState *cpu, > the tcg optimization currently hidden inside tcg_gen_code. All > that should be required is to flush the TBs, allocate a new TB, > re-initialize it per above, and re-do the actual code generation. */ > - gen_code_size = tcg_gen_code(&tcg_ctx, gen_code_buf); > + gen_code_size = tcg_gen_code(&tcg_ctx, tb); > if (unlikely(gen_code_size < 0)) { > goto buffer_overflow; > } > - search_size = encode_search(tb, (void *)gen_code_buf + gen_code_size); > + search_size = encode_search(tb, (void *)tb->tc_ptr + gen_code_size); > if (unlikely(search_size < 0)) { > goto buffer_overflow; > } > @@ -1145,7 +1143,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, > #endif > > tcg_ctx.code_gen_ptr = (void *) > - ROUND_UP((uintptr_t)gen_code_buf + gen_code_size + search_size, > + ROUND_UP((uintptr_t)tb->tc_ptr + gen_code_size + search_size, > CODE_GEN_ALIGN); > > /* check next page if needed */ >