From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com [IPv6:2a00:1450:4864:20::234]) by sourceware.org (Postfix) with ESMTPS id 3707C3858417 for ; Fri, 14 Apr 2023 19:37:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3707C3858417 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lj1-x234.google.com with SMTP id a29so20837740ljq.0 for ; Fri, 14 Apr 2023 12:37:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681501055; x=1684093055; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=30roh4icvq9L8mKXAOex0w89Y//hxogxvOG8r3UDD6w=; b=aRGU6Mt09yP302Vu/NqsNc5eRIowpYfow0B3T2YWxYHjE5+dniNqmytOg5u6KWWit8 xSmDea6q4VDvfBvXi10mkblrpATBHq9dI8SePOGNZFUOfaX+jhxmMJEURL/Yll4afMtO scSL8BQVSHasG68/AN7gMuZCiKSpUKgpczs8NDax42oruH+gf4hqz37YY1aeUOiPjYQd bZ85uk4i6kQIUjvF68MglUs2RAeuCRNHtYkLVreRlTyZrvWSWHiGCmnfqkpadzgm2S5k dmaak4ZpSXJye5BY0D9zr3s62L9zI6DrmOAtk+KEu0n9P3DIsbF0oxZPI2ztUZPAXX92 oVCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681501055; x=1684093055; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=30roh4icvq9L8mKXAOex0w89Y//hxogxvOG8r3UDD6w=; b=liMhP6PQxan4TgF7LBaQN/yYdAZPGW+E6LCV7qCOy+SxvaDhGyzYobXJkFLT5bkBOQ BmCuTgmw1rFfvUFJMhkM5ZOyHV3LzQswxv5b65m86h8xe/d79+xNVDn6i0D6SORUWWFm gLV7T2xpSgj83HgxiNHonezq1bfsu7Qou4mKNKgcK7yAeZ2a8dAH4agxfWmeqDODOYx9 LwntSF0jmOxBmnTG0W4pTaxINQ/0g1w8XiEhbpRpF5b2l2nOwxdMcxdpvA1zCo4ySzlL s/+Csab/G7nXjYvDIjMmug/KS28WZR8OutZ9n+S3uBppjRcL78HAU5qtENFPJXQvRgUq X+dw== X-Gm-Message-State: AAQBX9dMQONXCt/bEj4V68pXEbZ4mcHLys+R1PQifNuJnXZCFl81+Wio jPuEgN1jhc2GRIh0qXXiw8fPIci8RXybHQ== X-Google-Smtp-Source: AKy350bWsNrRHsmWbHrpJaGNpyROJ4JaJ+n+zIX3WGSZrdPufmVmh4JX0YSs0th1eGwn/Ccm0BEAkA== X-Received: by 2002:a2e:9811:0:b0:29b:e87:d851 with SMTP id a17-20020a2e9811000000b0029b0e87d851mr2178941ljj.1.1681501055171; Fri, 14 Apr 2023 12:37:35 -0700 (PDT) Received: from localhost.localdomain ([2a02:2168:b344:a600:4435:f106:1598:d2b0]) by smtp.gmail.com with ESMTPSA id v8-20020a2e9608000000b002a8a5afb87csm735730ljh.20.2023.04.14.12.37.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Apr 2023 12:37:34 -0700 (PDT) From: Sergey Bugaev To: libc-alpha@sourceware.org, bug-hurd@gnu.org Cc: Samuel Thibault , Sergey Bugaev Subject: [PATCH 2/5] hurd: Microoptimize sigreturn Date: Fri, 14 Apr 2023 22:36:57 +0300 Message-Id: <20230414193700.542116-2-bugaevc@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230414193700.542116-1-bugaevc@gmail.com> References: <20230414193700.542116-1-bugaevc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Signed-off-by: Sergey Bugaev --- I'll understand if this patch will be rejected, since this is not a hot path. But I just couldn't help myself when I saw what this was being compiled to! Much cleaner now. If you don't like THREAD_GETMEM (THREAD_SELF, _hurd_sigstate), we could have _hurd_self_sigstate_fast () or something. sysdeps/mach/hurd/i386/sigreturn.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sysdeps/mach/hurd/i386/sigreturn.c b/sysdeps/mach/hurd/i386/sigreturn.c index a0fc8891..6ad8a998 100644 --- a/sysdeps/mach/hurd/i386/sigreturn.c +++ b/sysdeps/mach/hurd/i386/sigreturn.c @@ -29,7 +29,12 @@ static void __sigreturn2 (int *usp, struct sigcontext *scp) { mach_port_t reply_port; - struct hurd_sigstate *ss = _hurd_self_sigstate (); + struct hurd_sigstate *ss; + + /* We know the sigstate must be initialized, but the compiler does not. + Help it out a little bit by eliding the check that _hurd_self_sigstate + makes otherwise. */ + ss = THREAD_GETMEM (THREAD_SELF, _hurd_sigstate); _hurd_sigstate_unlock (ss); /* Destroy the MiG reply port used by the signal handler, and restore the @@ -44,7 +49,7 @@ __sigreturn2 (int *usp, struct sigcontext *scp) do. */ reply_port = THREAD_GETMEM (THREAD_SELF, reply_port); THREAD_SETMEM (THREAD_SELF, reply_port, MACH_PORT_DEAD); - if (MACH_PORT_VALID (reply_port)) + if (__glibc_likely (MACH_PORT_VALID (reply_port))) (void) __mach_port_mod_refs (__mach_task_self (), reply_port, MACH_PORT_RIGHT_RECEIVE, -1); THREAD_SETMEM (THREAD_SELF, reply_port, scp->sc_reply_port); @@ -69,6 +74,7 @@ __sigreturn2 (int *usp, struct sigcontext *scp) /* Firewall. */ A (hlt); #undef A + __builtin_unreachable (); } int @@ -77,13 +83,14 @@ __sigreturn (struct sigcontext *scp) struct hurd_sigstate *ss; struct hurd_userlink *link = (void *) &scp[1]; - if (scp == NULL || (scp->sc_mask & _SIG_CANT_MASK)) + if (__glibc_unlikely (scp == NULL || (scp->sc_mask & _SIG_CANT_MASK))) { errno = EINVAL; return -1; } - ss = _hurd_self_sigstate (); + /* Same as above, microoptimize _hurd_self_sigstate. */ + ss = THREAD_GETMEM (THREAD_SELF, _hurd_sigstate); _hurd_sigstate_lock (ss); /* Remove the link on the `active resources' chain added by -- 2.39.2