libgo patch committed: Cheaper context switch on x86_64
Ian Lance Taylor
iant@golang.org
Mon Jun 3 20:07:00 GMT 2019
On Mon, Jun 3, 2019 at 9:44 AM Cherry Zhang <cherryyz@google.com> wrote:
>
> On Mon, Jun 3, 2019 at 12:00 PM Jakub Jelinek <jakub@redhat.com> wrote:
>>
>> On Mon, Jun 03, 2019 at 05:51:26PM +0200, Thomas Schwinge wrote:
>> > Hi!
>> >
>> > On Fri, 31 May 2019 10:56:43 -0700, Ian Lance Taylor <iant@golang.org> wrote:
>> > > This libgo patch by Cherry Zhang implements cheaper goroutine context
>> > > switches on x86_64 GNU/Linux. [...]
>> >
>> > > Bootstrapped and tested on x86_64-pc-linux-gnu. Committed to mainline.
>> >
>> > > --- libgo/runtime/go-context.S (nonexistent)
>> > > +++ libgo/runtime/go-context.S (working copy)
>> >
>> > > + andq $~0xfULL, %rdx
>> >
>> > I run into:
>> >
>> > [...]/libgo/runtime/go-context.S: Assembler messages:
>> > [...]/libgo/runtime/go-context.S:60: Error: junk `ULL' after expression
>> > make[4]: *** [runtime/go-context.lo] Error 1
>> >
>> > ... with (admittedly somewhat old) Binutils:
>> >
>> > $ as --version | head -n 2
>> > GNU assembler (GNU Binutils for Ubuntu) 2.22.90.20120924
>> > Copyright 2012 Free Software Foundation, Inc.
>>
>> As andq immediate is just 32-bit, I'd say using $~0xf or $-16 instead of
>> $~0xfULL is the right fix.
>
>
> Sorry for the breakage. Send https://golang.org/cl/180217 dropping the ULL suffix as you suggested.
Thanks. Cherry's patch bootstrapped, tested, and committed, as follows.
Ian
-------------- next part --------------
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 271823)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-4150db0e4613043e38a146a971e5b0dcacad7c2a
+2e623bff8a5855bb6268c69bb04eb37cac8f2dc2
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: libgo/runtime/go-context.S
===================================================================
--- libgo/runtime/go-context.S (revision 271818)
+++ libgo/runtime/go-context.S (working copy)
@@ -57,7 +57,7 @@ __go_makecontext:
addq %rcx, %rdx
// Align the SP, and push a dummy return address.
- andq $~0xfULL, %rdx
+ andq $~0xf, %rdx
subq $8, %rdx
movq $0, (%rdx)
More information about the Gcc-patches
mailing list