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