2 new revisions:
Revision: 9df39c8250
Author: Michael Lippautz <
michael....@gmail.com>
Date: Sat Jun 19 01:30:33 2010
Log: Revert "gogo assembly files: Remove custom header as compiler
generate...
http://code.google.com/p/gogc/source/detail?r=9df39c8250
Revision: e5309ba93a
Author: Andreas Unterweger <
and...@gmx.at>
Date: Sat Jun 19 02:13:43 2010
Log: codegen.go/parser.go: Fix offsets when saving and restoring registers
http://code.google.com/p/gogc/source/detail?r=e5309ba93a
==============================================================================
Revision: 9df39c8250
Author: Michael Lippautz <
michael....@gmail.com>
Date: Sat Jun 19 01:30:33 2010
Log: Revert "gogo assembly files: Remove custom header as compiler
generates same syntax"
This reverts commit 4ca50db33caf983b8346a23e2a3d60be067d511d.
http://code.google.com/p/gogc/source/detail?r=9df39c8250
Modified:
/src/libgogo/convert_amd64.s
/src/libgogo/io_amd64.s
/src/libgogo/item_amd64.s
/src/libgogo/libgogo_amd64.s
/src/libgogo/memmgr_amd64.s
/src/libgogo/string_amd64.s
/src/libgogo/symbol_amd64.s
=======================================
--- /src/libgogo/convert_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/convert_amd64.s Sat Jun 19 01:30:33 2010
@@ -6,39 +6,39 @@
// GoGo conversion functions (ASM)
//
-TEXT ·ToIntFromByte(SB),0,$0-0 //ToIntFromByte: 1 parameter, 1 return value
+TEXT ·ToIntFromByte(SB),$0-16 //ToIntFromByte: 1 parameter, 1 return value
MOVQ $0, AX //Set AX to 0
MOVB 8(SP), AL //Move byte parameter to AL (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move whole AX register with byte parameter to result
(return value after one parameter => SP+2*64bit)
RET
-TEXT ·ToByteFromInt(SB),0,$0-0 //ToByteFromInt: 1 parameter, 1 return value
+TEXT ·ToByteFromInt(SB),$0-16 //ToByteFromInt: 1 parameter, 1 return value
MOVQ $0, 16(SP) //Clear whole return value (return value after one
parameter => SP+2*64bit)
MOVQ 8(SP), AX //Move whole parameter to AX (first parameter => SP+64bit)
MOVB AL, 16(SP) //Move AL (last byte of parameter) to result (return
value after one parameter => SP+2*64bit)
RET
-TEXT ·ToUint64FromBytePtr(SB),0,$0-0 //ToUint64FromBytePtr: 1 parameter, 1
return value
+TEXT ·ToUint64FromBytePtr(SB),$0-16 //ToUint64FromBytePtr: 1 parameter, 1
return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from BX to return value (return value
after one parameter => SP+2*64bit)
RET
-TEXT ·ToUint64FromUint64Ptr(SB),0,$0-0 //ToUint64FromUint64Ptr: 1
parameter, 1 return value
+TEXT ·ToUint64FromUint64Ptr(SB),$0-16 //ToUint64FromUint64Ptr: 1
parameter, 1 return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from AX to return value (return value
after one parameter => SP+2*64bit)
RET
-TEXT ·ToUint64PtrFromUint64(SB),0,$0-0 //ToUint64PtrFromUint64: 1
parameter, 1 return value
+TEXT ·ToUint64PtrFromUint64(SB),$0-16 //ToUint64PtrFromUint64: 1
parameter, 1 return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from AX to return value (return value
after one parameter => SP+2*64bit)
RET
-TEXT ·ToUint64FromStringPtr(SB),0,$0-0 //ToUint64FromStringPtr: 1
parameter, 1 return value
+TEXT ·ToUint64FromStringPtr(SB),$0-16 //ToUint64FromStringPtr: 1
parameter, 1 return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from AX to return value (return value
after one parameter => SP+2*64bit)
RET
-TEXT ·GetStringFromAddress(SB),0,$0-0 //GetStringFromAddress: 1 parameter,
1 return value
+TEXT ·GetStringFromAddress(SB),$0-16 //GetStringFromAddress: 1 parameter,
1 return value
MOVQ 8(SP), AX //Move string address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move string address from AX to return value (return
value after one parameter => SP+2*64bit)
RET
=======================================
--- /src/libgogo/io_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/io_amd64.s Sat Jun 19 01:30:33 2010
@@ -6,7 +6,7 @@
// GoGo I/O functions (ASM)
//
-TEXT ·Write(SB),0,$0-0 //Write: 3 parameters (4), 1 return value
+TEXT ·Write(SB),$0-40 //Write: 3 parameters (4), 1 return value
MOVQ $1, AX //sys_write (3 parameters)
MOVQ 8(SP), DI //fd (first parameter => SP+64bit)
MOVQ 16(SP), SI //text (second parameter => SP+2*64bit)
@@ -21,7 +21,7 @@
MOVQ AX, 40(SP) //First return value of syscall is in AX (return value
after three parameters => SP+5*64bit)
RET
-TEXT ·PrintChar(SB),0,$0-0 //PrintChar: 1 parameter, no return value
+TEXT ·PrintChar(SB),$0-8 //PrintChar: 1 parameter, no return value
MOVQ $1, AX //sys_write (3 parameters)
MOVQ $1, DI //fd (1 = stdout)
LEAQ 8(SP), SI //text (address of second parameter => SP+64bit)
@@ -29,7 +29,7 @@
SYSCALL //Linux syscall
RET
-TEXT ·Read(SB),0,$0-0 //Read: 3 parameters (4), 1 return value
+TEXT ·Read(SB),$0-40 //Read: 3 parameters (4), 1 return value
MOVQ $0, AX //sys_read (3 parameters)
MOVQ 8(SP), DI //fd (first parameter => SP+64bit)
MOVQ 16(SP), SI //buffer (second parameter => SP+2*64bit)
@@ -44,7 +44,7 @@
MOVQ AX, 40(SP) //First return value of syscall is in AX (return value
after three parameters => SP+5*64bit)
RET
-TEXT ·GetChar(SB),0,$0-0 //Read: 1 parameter (2), 1 return value
+TEXT ·GetChar(SB),$0-16 //Read: 1 parameter (2), 1 return value
MOVQ $0, AX //sys_read (3 parameters)
MOVQ 8(SP), DI //fd (first parameter => SP+64bit)
MOVQ $0, 16(SP) //Initialize result with 0
@@ -58,7 +58,7 @@
GETCHAR_SUCCESS:
RET
-TEXT ·FileOpen(SB),0,$0-0 //FileOpen: 2 parameters (3), 1 return value
+TEXT ·FileOpen(SB),$0-32 //FileOpen: 2 parameters (3), 1 return value
MOVQ $2, AX //sys_open (2 parameters)
MOVQ 8(SP), DI //filename (first parameter => SP+64bit)
MOVQ 24(SP), SI //flags (second parameter => SP+3*64bit)
@@ -73,7 +73,7 @@
MOVQ AX, 32(SP) //First return value of syscall is in AX (return value
after three parameters => SP+4*64bit)
RET
-TEXT ·FileOpen2(SB),0,$0-0 //FileOpen2: 3 parameters (4), 1 return value
+TEXT ·FileOpen2(SB),$0-40 //FileOpen2: 3 parameters (4), 1 return value
MOVQ $2, AX //sys_open (3 parameters)
MOVQ 8(SP), DI //filename (first parameter => SP+64bit)
MOVQ 24(SP), SI //flags (second parameter => SP+3*64bit)
@@ -91,7 +91,7 @@
MOVQ AX, 40(SP) //First return value of syscall is in AX (return value
after three parameters => SP+5*64bit)
RET
-TEXT ·FileClose(SB),0,$0-0 //FileClose: 1 parameter, 1 return value
+TEXT ·FileClose(SB),$0-16 //FileClose: 1 parameter, 1 return value
MOVQ $3, AX //sys_close (3 parameters)
MOVQ 8(SP), DI //filename (first parameter => SP+64bit)
MOVQ $0, SI //not used
=======================================
--- /src/libgogo/item_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/item_amd64.s Sat Jun 19 01:30:33 2010
@@ -2,7 +2,7 @@
// Use of this source code is governed by the MIT
// license that can be found in the LICENSE file.
-TEXT ·Uint64ToItemPtr(SB),0,$0-0 //Uint64ToItemPtr: 1 parameter, 1 return
value
+TEXT ·Uint64ToItemPtr(SB),$0-16 //Uint64ToItemPtr: 1 parameter, 1 return
value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from BX to return value (return value
after one parameter => SP+2*64bit)
RET
=======================================
--- /src/libgogo/libgogo_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/libgogo_amd64.s Sat Jun 19 01:30:33 2010
@@ -6,7 +6,7 @@
// GoGo Library functions (ASM)
//
-TEXT ·CopyMem(SB),0,$0-0 //CopyMem: 3 parameters, no return value
+TEXT ·CopyMem(SB),$0-24 //CopyMem: 3 parameters, no return value
MOVQ 8(SP), AX //Move source address to AX (first parameter => SP+64bit)
MOVQ 16(SP), BX //Move destination address to BX (second parameter =>
SP+2*64bit)
MOVQ 24(SP), CX //Move length to CX (third parameter => SP+3*64bit)
@@ -20,7 +20,7 @@
COPYMEM_END:
RET
-TEXT ·Exit(SB),0,$0-0 //Exit: 1 parameter, no return value
+TEXT ·Exit(SB),$0-8 //Exit: 1 parameter, no return value
MOVQ $60, AX //sys_exit (1 parameter)
MOVQ 8(SP), DI //return code (first parameter => SP+1*64bit)
SYSCALL //Linux syscall
=======================================
--- /src/libgogo/memmgr_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/memmgr_amd64.s Sat Jun 19 01:30:33 2010
@@ -6,7 +6,7 @@
// GoGo Memory manager functions (ASM)
//
-TEXT ·Brk(SB),0,$0-0 //Brk: 1 parameter, 1 return value
+TEXT ·Brk(SB),$0-16 //Brk: 1 parameter, 1 return value
MOVQ $12, AX //sys_brk (1 parameter)
MOVQ 8(SP), DI //brk (first parameter => SP+8*64bit)
SYSCALL //Linux syscall
@@ -20,7 +20,7 @@
MOVQ $0, 16(SP) //Return 0 to indicate success (return value after one
parameters => SP+2*64bit)
RET
-TEXT ·GetBrk(SB),0,$0-0 //GetBrk: no parameters, 1 return value
+TEXT ·GetBrk(SB),$0-8 //GetBrk: no parameters, 1 return value
MOVQ $12, AX //sys_brk (1 parameter)
MOVQ $0, DI //brk (first parameter => SP+64bit)
SYSCALL //Linux syscall
@@ -33,7 +33,7 @@
MOVQ AX, 8(SP) //First return value of syscall is in AX (return value
after no parameters => SP+1*64bit)
RET
-TEXT ·TestMem(SB),0,$0-0 //Write: 1 parameter, 1 return value
+TEXT ·TestMem(SB),$0-16 //Write: 1 parameter, 1 return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ $1234567890, (AX) //Move some value to address
MOVQ (AX), BX //Move value back to BX
=======================================
--- /src/libgogo/string_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/string_amd64.s Sat Jun 19 01:30:33 2010
@@ -6,26 +6,26 @@
// GoGo string functions (ASM)
//
-TEXT ·StringLength(SB),0,$0-0 //StringLength: 1 parameter (2), 1 return
value
+TEXT ·StringLength(SB),$0-24 //StringLength: 1 parameter (2), 1 return
value
MOVQ $0, 24(SP) //Set return value to 0
MOVW 16(SP), AX //String length is stored together with the string
(first parameter = SP+64bit -> +64bit = SP+2*64bit)
MOVW AX, 24(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
RET
-TEXT ·StringLength2(SB),0,$0-0 //StringLength2: 1 parameter, 1 return value
+TEXT ·StringLength2(SB),$0-16 //StringLength2: 1 parameter, 1 return value
MOVQ $0, 16(SP) //Set return value to 0
MOVQ 8(SP), AX //Load string address to AX (first parameter = SP+64bit)
MOVW 8(AX), BX //String length is stored together with the string
MOVW BX, 16(SP) //Move length to result with only 32 bits (return value
after one parameter => SP+3*64bit)
RET
-TEXT ·GetStringAddress(SB),0,$0-0 //GetStringAddress: 1 parameter, 1
return value
+TEXT ·GetStringAddress(SB),$0-16 //GetStringAddress: 1 parameter, 1 return
value
MOVQ 8(SP), AX //Move string pointer address to AX (first parameter =>
SP+64bit)
MOVQ (AX), BX //Load effective string address to BX
MOVQ BX, 16(SP) //Move string address from BX to return value (return
value after one parameter => SP+2*64bit)
RET
-TEXT ·SetStringAddressAndLength(SB),0,$0-0 //SetStringAddressAndLength: 3
parameters, no return value
+TEXT ·SetStringAddressAndLength(SB),$0-24 //SetStringAddressAndLength: 3
parameters, no return value
MOVQ 8(SP), AX //Move string address to AX (first parameter => SP+64bit)
MOVQ 16(SP), BX //Move string address to BX (second parameter =>
SP+2*64bit)
MOVQ 24(SP), CX //Move string length to CX (third parameter =>
SP+3*64bit)
=======================================
--- /src/libgogo/symbol_amd64.s Sat Jun 19 01:09:01 2010
+++ /src/libgogo/symbol_amd64.s Sat Jun 19 01:30:33 2010
@@ -2,12 +2,12 @@
// Use of this source code is governed by the MIT
// license that can be found in the LICENSE file.
-TEXT ·Uint64ToObjectDescPtr(SB),0,$0-0 //Uint64ToObjectDescPtr: 1
parameter, 1 return value
+TEXT ·Uint64ToObjectDescPtr(SB),$0-16 //Uint64ToObjectDescPtr: 1
parameter, 1 return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from BX to return value (return value
after one parameter => SP+2*64bit)
RET
-TEXT ·Uint64ToTypeDescPtr(SB),0,$0-0 //Uint64ToTypeDescPtr: 1 parameter, 1
return value
+TEXT ·Uint64ToTypeDescPtr(SB),$0-16 //Uint64ToTypeDescPtr: 1 parameter, 1
return value
MOVQ 8(SP), AX //Move address to AX (first parameter => SP+64bit)
MOVQ AX, 16(SP) //Move address from BX to return value (return value
after one parameter => SP+2*64bit)
RET
==============================================================================
Revision: e5309ba93a
Author: Andreas Unterweger <
and...@gmx.at>
Date: Sat Jun 19 02:13:43 2010
Log: codegen.go/parser.go: Fix offsets when saving and restoring registers
http://code.google.com/p/gogc/source/detail?r=e5309ba93a
Modified:
/src/_gogo_.sog
/src/codegen.go
/src/parser.go
/testing/checksums
/testing/results/_gogo_.sog
=======================================
--- /src/_gogo_.sog Thu Jun 17 03:55:17 2010
+++ /src/_gogo_.sog Sat Jun 19 02:13:43 2010
@@ -254,9 +254,8 @@
DATA data+295(SB)/1, $0
//--- String buffer end at libgogo/memmgr.go:72:38
//--- String buffer start ('\n') at libgogo/memmgr.go:74:23
-DATA data+312(SB)/1, $92
-DATA data+313(SB)/1, $110
-DATA data+314(SB)/1, $0
+DATA data+312(SB)/1, $10
+DATA data+313(SB)/1, $0
//--- String buffer end at libgogo/memmgr.go:74:23
//--- String buffer start ('Failed to write to newly allocated memory
at ') at libgogo/memmgr.go:78:68
DATA data+336(SB)/1, $70
@@ -307,9 +306,8 @@
DATA data+381(SB)/1, $0
//--- String buffer end at libgogo/memmgr.go:78:68
//--- String buffer start ('\n') at libgogo/memmgr.go:80:23
-DATA data+400(SB)/1, $92
-DATA data+401(SB)/1, $110
-DATA data+402(SB)/1, $0
+DATA data+400(SB)/1, $10
+DATA data+401(SB)/1, $0
//--- String buffer end at libgogo/memmgr.go:80:23
//--- String buffer start ('') at libgogo/symbol.go:120:32
DATA data+496(SB)/1, $0
@@ -1048,7 +1046,7 @@
MOVQ R8, data+320(SB)
//--- Assign byte buffer to new string constant end at
libgogo/memmgr.go:74:23
//--- Assign string length to new string constant start at
libgogo/memmgr.go:74:23
- MOVQ $2, data+328(SB)
+ MOVQ $1, data+328(SB)
//--- Assign string length to new string constant end at
libgogo/memmgr.go:74:23
//--- Assign byte buffer to new string constant start at
libgogo/memmgr.go:78:68
LEAQ data+336(SB), R8
@@ -1062,7 +1060,7 @@
MOVQ R8, data+408(SB)
//--- Assign byte buffer to new string constant end at
libgogo/memmgr.go:80:23
//--- Assign string length to new string constant start at
libgogo/memmgr.go:80:23
- MOVQ $2, data+416(SB)
+ MOVQ $1, data+416(SB)
//--- Assign string length to new string constant end at
libgogo/memmgr.go:80:23
//--- Global variable assignment start at libgogo/symbol.go:30:26
//--- Global variable assignment RHS load start at
libgogo/symbol.go:30:26
@@ -1558,6 +1556,8 @@
//--- Assignment start at libgogo/convert.go:61:9
//--- Assignment LHS load start at libgogo/convert.go:61:9
//--- Assignment LHS load end at libgogo/convert.go:61:9
+ //--- Saving registers before function call start at
libgogo/convert.go:61:26
+ //--- Saving registers before function call end at
libgogo/convert.go:61:26
//--- First parameter expression start at libgogo/convert.go:61:26
//--- First parameter expression load start at libgogo/convert.go:61:26
//--- First parameter expression load end at libgogo/convert.go:61:26
@@ -1577,6 +1577,8 @@
//--- ##2##libgogo·StringLength## at libgogo/convert.go:61:26
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/convert.go:61:26
+ //--- Restoring registers after function call start at
libgogo/convert.go:61:26
+ //--- Restoring registers after function call end at
libgogo/convert.go:61:26
//--- ##1##libgogo·StringLength## at libgogo/convert.go:61:26
MOVQ -100016(SP), R8
MOVQ R8, -8(SP)
@@ -1628,6 +1630,8 @@
//--- Assignment start at libgogo/convert.go:64:16
//--- Assignment LHS load start at libgogo/convert.go:64:16
//--- Assignment LHS load end at libgogo/convert.go:64:16
+ //--- Saving registers before function call start at
libgogo/convert.go:64:34
+ //--- Saving registers before function call end at
libgogo/convert.go:64:34
//--- First parameter expression start at libgogo/convert.go:64:34
//--- First parameter expression load start at libgogo/convert.go:64:34
MOVQ 8(SP), R8
@@ -1645,6 +1649,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/convert.go:64:37
ADDQ $48, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/convert.go:64:37
+ //--- Restoring registers after function call start at
libgogo/convert.go:64:37
+ //--- Restoring registers after function call end at
libgogo/convert.go:64:37
MOVQ -40(SP), R8
MOVQ R8, -24(SP)
//--- Assignment end at libgogo/convert.go:64:38
@@ -1716,7 +1722,9 @@
LEAQ -48(SP), R8
ADDQ -24(SP), R8
//--- Assignment LHS load end at libgogo/convert.go:78:18
- PUSHQ R8
+ //--- Saving registers before function call start at
libgogo/convert.go:78:36
+ MOVQ R8, -56(SP)
+ //--- Saving registers before function call end at
libgogo/convert.go:78:36
//--- First parameter expression start at libgogo/convert.go:78:36
//--- First parameter expression load start at libgogo/convert.go:78:36
MOVQ 8(SP), AX
@@ -1732,18 +1740,20 @@
SUBQ R10, R9
ADDQ $48, R9
//--- First parameter expression load end at libgogo/convert.go:78:59
- MOVQ R9, -64(SP)
+ MOVQ R9, -72(SP)
//--- First parameter expression end at libgogo/convert.go:78:59
//--- Stack pointer offset before function call for local variables
start at libgogo/convert.go:78:59
- SUBQ $64, SP
+ SUBQ $72, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/convert.go:78:59
CALL libgogo·ToByteFromInt(SB)
//--- Stack pointer offset after function call for local variables start
at libgogo/convert.go:78:59
- ADDQ $64, SP
+ ADDQ $72, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/convert.go:78:59
- POPQ R8
+ //--- Restoring registers after function call start at
libgogo/convert.go:78:59
+ MOVQ -56(SP), R8
+ //--- Restoring registers after function call end at
libgogo/convert.go:78:59
ANDQ $255, R9
- MOVB -56(SP), R9
+ MOVB -64(SP), R9
MOVB R9, (R8)
//--- Assignment end at libgogo/convert.go:78:60
//--- Assignment start at libgogo/convert.go:79:15
@@ -1817,6 +1827,8 @@
//--- For [post assignment] end at libgogo/convert.go:87:30
JMP FOR_libgogo_convert_87_EXPR_START
FOR_libgogo_convert_87_BODY:
+ //--- Saving registers before function call start at
libgogo/convert.go:88:22
+ //--- Saving registers before function call end at
libgogo/convert.go:88:22
//--- First parameter expression start at libgogo/convert.go:88:22
//--- First parameter expression load start at libgogo/convert.go:88:22
//--- First parameter expression load end at libgogo/convert.go:88:25
@@ -1844,9 +1856,13 @@
//--- ##2##libgogo·CharAppend## at libgogo/convert.go:88:33
ADDQ $48, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/convert.go:88:33
+ //--- Restoring registers after function call start at
libgogo/convert.go:88:33
+ //--- Restoring registers after function call end at
libgogo/convert.go:88:33
JMP FOR_libgogo_convert_87_EXTENDED_BODY
FOR_libgogo_convert_87_END:
//--- For end at libgogo/convert.go:89:6
+ //--- Saving registers before function call start at
libgogo/convert.go:90:18
+ //--- Saving registers before function call end at
libgogo/convert.go:90:18
//--- First parameter expression start at libgogo/convert.go:90:18
//--- First parameter expression load start at libgogo/convert.go:90:18
//--- First parameter expression load end at libgogo/convert.go:90:21
@@ -1871,6 +1887,8 @@
//--- ##2##libgogo·CharAppend## at libgogo/convert.go:90:28
ADDQ $48, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/convert.go:90:28
+ //--- Restoring registers after function call start at
libgogo/convert.go:90:28
+ //--- Restoring registers after function call end at
libgogo/convert.go:90:28
//--- Return value assignment start at libgogo/convert.go:91:12
//--- Return expression load start at libgogo/convert.go:91:12
//--- Return expression load end at libgogo/convert.go:91:16
@@ -1929,6 +1947,8 @@
//--- Assignment start at libgogo/io.go:23:14
//--- Assignment LHS load start at libgogo/io.go:23:14
//--- Assignment LHS load end at libgogo/io.go:23:14
+ //--- Saving registers before function call start at libgogo/io.go:23:31
+ //--- Saving registers before function call end at libgogo/io.go:23:31
//--- First parameter expression start at libgogo/io.go:23:31
//--- First parameter expression load start at libgogo/io.go:23:31
//--- First parameter expression load end at libgogo/io.go:23:31
@@ -1948,10 +1968,14 @@
//--- ##2##libgogo·StringLength## at libgogo/io.go:23:31
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/io.go:23:31
+ //--- Restoring registers after function call start at
libgogo/io.go:23:31
+ //--- Restoring registers after function call end at libgogo/io.go:23:31
//--- ##1##libgogo·StringLength## at libgogo/io.go:23:31
MOVQ -99992(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/io.go:23:32
+ //--- Saving registers before function call start at libgogo/io.go:24:14
+ //--- Saving registers before function call end at libgogo/io.go:24:14
//--- First parameter expression start at libgogo/io.go:24:14
//--- First parameter expression load start at libgogo/io.go:24:14
//--- First parameter expression load end at libgogo/io.go:24:14
@@ -1979,9 +2003,13 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/io.go:24:27
ADDQ $48, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/io.go:24:27
+ //--- Restoring registers after function call start at
libgogo/io.go:24:27
+ //--- Restoring registers after function call end at libgogo/io.go:24:27
RET
TEXT libgogo·PrintString(SB),0,$0-0
+ //--- Saving registers before function call start at libgogo/io.go:31:19
+ //--- Saving registers before function call end at libgogo/io.go:31:19
//--- First parameter expression start at libgogo/io.go:31:19
//--- First parameter expression load start at libgogo/io.go:31:19
//--- First parameter expression load end at libgogo/io.go:31:19
@@ -2002,12 +2030,16 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/io.go:31:24
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/io.go:31:24
+ //--- Restoring registers after function call start at
libgogo/io.go:31:24
+ //--- Restoring registers after function call end at libgogo/io.go:31:24
RET
TEXT libgogo·PrintNumber(SB),0,$0-0
//--- Assignment start at libgogo/io.go:46:11
//--- Assignment LHS load start at libgogo/io.go:46:11
//--- Assignment LHS load end at libgogo/io.go:46:11
+ //--- Saving registers before function call start at libgogo/io.go:46:27
+ //--- Saving registers before function call end at libgogo/io.go:46:27
//--- First parameter expression start at libgogo/io.go:46:27
//--- First parameter expression load start at libgogo/io.go:46:27
//--- First parameter expression load end at libgogo/io.go:46:27
@@ -2021,11 +2053,15 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/io.go:46:27
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/io.go:46:27
+ //--- Restoring registers after function call start at
libgogo/io.go:46:27
+ //--- Restoring registers after function call end at libgogo/io.go:46:27
MOVQ -32(SP), R8
MOVQ -24(SP), R9
MOVQ R8, -16(SP)
MOVQ R9, -8(SP)
//--- Assignment end at libgogo/io.go:46:28
+ //--- Saving registers before function call start at libgogo/io.go:47:21
+ //--- Saving registers before function call end at libgogo/io.go:47:21
//--- First parameter expression start at libgogo/io.go:47:21
//--- First parameter expression load start at libgogo/io.go:47:21
//--- First parameter expression load end at libgogo/io.go:47:21
@@ -2041,6 +2077,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/io.go:47:21
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/io.go:47:21
+ //--- Restoring registers after function call start at
libgogo/io.go:47:21
+ //--- Restoring registers after function call end at libgogo/io.go:47:21
RET
// Copyright 2010 The GoGo Authors. All rights reserved.
@@ -2176,7 +2214,9 @@
MOVQ 8(SP), R8
//--- Addition/subtraction by zero omitted at libgogo/list.go:27:37
//--- Assignment LHS load end at libgogo/list.go:27:37
- PUSHQ R8
+ //--- Saving registers before function call start at
libgogo/list.go:27:61
+ MOVQ R8, -8(SP)
+ //--- Saving registers before function call end at libgogo/list.go:27:61
//--- First parameter expression start at libgogo/list.go:27:61
//--- First parameter expression load start at libgogo/list.go:27:61
MOVQ 8(SP), R9
@@ -2190,18 +2230,20 @@
MOVQ AX, R10
//--- First parameter expression load end at libgogo/list.go:27:99
//--- ##1##libgogo·Alloc## at libgogo/list.go:27:99
- MOVQ R10, -100000(SP)
+ MOVQ R10, -100008(SP)
//--- First parameter expression end at libgogo/list.go:27:99
//--- Stack pointer offset before function call for local variables
start at libgogo/list.go:27:99
//--- ##2##libgogo·Alloc## at libgogo/list.go:27:99
- SUBQ $0, SP
+ SUBQ $8, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/list.go:27:99
CALL libgogo·Alloc(SB)
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:27:99
//--- ##2##libgogo·Alloc## at libgogo/list.go:27:99
- ADDQ $0, SP
+ ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:27:99
- POPQ R8
+ //--- Restoring registers after function call start at
libgogo/list.go:27:99
+ MOVQ -8(SP), R8
+ //--- Restoring registers after function call end at
libgogo/list.go:27:99
//--- ##1##libgogo·Alloc## at libgogo/list.go:27:99
MOVQ -99992(SP), R9
MOVQ R9, (R8)
@@ -2231,6 +2273,8 @@
//--- Assignment start at libgogo/list.go:38:22
//--- Assignment LHS load start at libgogo/list.go:38:22
//--- Assignment LHS load end at libgogo/list.go:38:22
+ //--- Saving registers before function call start at
libgogo/list.go:38:33
+ //--- Saving registers before function call end at libgogo/list.go:38:33
//--- First parameter expression start at libgogo/list.go:38:33
//--- First parameter expression load start at libgogo/list.go:38:33
MOVQ 8(SP), R8
@@ -2259,10 +2303,14 @@
//--- ##2##libgogo·Alloc## at libgogo/list.go:38:62
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:38:62
+ //--- Restoring registers after function call start at
libgogo/list.go:38:62
+ //--- Restoring registers after function call end at
libgogo/list.go:38:62
//--- ##1##libgogo·Alloc## at libgogo/list.go:38:62
MOVQ -100008(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/list.go:38:63
+ //--- Saving registers before function call start at
libgogo/list.go:39:22
+ //--- Saving registers before function call end at libgogo/list.go:39:22
//--- First parameter expression start at libgogo/list.go:39:22
//--- First parameter expression load start at libgogo/list.go:39:22
MOVQ 8(SP), R8
@@ -2303,6 +2351,8 @@
//--- ##2##libgogo·CopyMem## at libgogo/list.go:39:77
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:39:77
+ //--- Restoring registers after function call start at
libgogo/list.go:39:77
+ //--- Restoring registers after function call end at
libgogo/list.go:39:77
//--- Assignment start at libgogo/list.go:40:28
//--- Assignment LHS load start at libgogo/list.go:40:28
MOVQ 8(SP), R8
@@ -2335,6 +2385,8 @@
//--- Assignment start at libgogo/list.go:43:17
//--- Assignment LHS load start at libgogo/list.go:43:17
//--- Assignment LHS load end at libgogo/list.go:43:17
+ //--- Saving registers before function call start at
libgogo/list.go:43:48
+ //--- Saving registers before function call end at libgogo/list.go:43:48
//--- First parameter expression start at libgogo/list.go:43:48
//--- First parameter expression load start at libgogo/list.go:43:48
//--- First parameter expression load end at libgogo/list.go:43:48
@@ -2348,9 +2400,13 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:43:48
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:43:48
+ //--- Restoring registers after function call start at
libgogo/list.go:43:48
+ //--- Restoring registers after function call end at
libgogo/list.go:43:48
MOVQ -24(SP), R8
MOVQ R8, -16(SP)
//--- Assignment end at libgogo/list.go:43:49
+ //--- Saving registers before function call start at
libgogo/list.go:44:23
+ //--- Saving registers before function call end at libgogo/list.go:44:23
//--- First parameter expression start at libgogo/list.go:44:23
//--- First parameter expression load start at libgogo/list.go:44:23
//--- First parameter expression load end at libgogo/list.go:44:23
@@ -2395,6 +2451,8 @@
//--- ##2##libgogo·CopyMem## at libgogo/list.go:44:89
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:44:89
+ //--- Restoring registers after function call start at
libgogo/list.go:44:89
+ //--- Restoring registers after function call end at
libgogo/list.go:44:89
//--- Assignment start at libgogo/list.go:45:22
//--- Assignment LHS load start at libgogo/list.go:45:22
MOVQ 8(SP), R8
@@ -2414,6 +2472,8 @@
//--- Assignment start at libgogo/list.go:58:17
//--- Assignment LHS load start at libgogo/list.go:58:17
//--- Assignment LHS load end at libgogo/list.go:58:17
+ //--- Saving registers before function call start at
libgogo/list.go:58:32
+ //--- Saving registers before function call end at libgogo/list.go:58:32
//--- First parameter expression start at libgogo/list.go:58:32
//--- First parameter expression load start at libgogo/list.go:58:32
//--- First parameter expression load end at libgogo/list.go:58:32
@@ -2437,6 +2497,8 @@
//--- ##2##libgogo·GetItemAt## at libgogo/list.go:58:39
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:58:39
+ //--- Restoring registers after function call start at
libgogo/list.go:58:39
+ //--- Restoring registers after function call end at
libgogo/list.go:58:39
//--- ##1##libgogo·GetItemAt## at libgogo/list.go:58:39
MOVQ -100024(SP), R8
MOVQ R8, -8(SP)
@@ -2444,6 +2506,8 @@
//--- Assignment start at libgogo/list.go:59:20
//--- Assignment LHS load start at libgogo/list.go:59:20
//--- Assignment LHS load end at libgogo/list.go:59:20
+ //--- Saving registers before function call start at
libgogo/list.go:59:31
+ //--- Saving registers before function call end at libgogo/list.go:59:31
//--- First parameter expression start at libgogo/list.go:59:31
//--- First parameter expression load start at libgogo/list.go:59:31
MOVQ 8(SP), R8
@@ -2462,6 +2526,8 @@
//--- ##2##libgogo·Alloc## at libgogo/list.go:59:40
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:59:40
+ //--- Restoring registers after function call start at
libgogo/list.go:59:40
+ //--- Restoring registers after function call end at
libgogo/list.go:59:40
//--- ##1##libgogo·Alloc## at libgogo/list.go:59:40
MOVQ -100032(SP), R8
MOVQ R8, -24(SP)
@@ -2469,6 +2535,8 @@
//--- Assignment start at libgogo/list.go:60:18
//--- Assignment LHS load start at libgogo/list.go:60:18
//--- Assignment LHS load end at libgogo/list.go:60:18
+ //--- Saving registers before function call start at
libgogo/list.go:60:50
+ //--- Saving registers before function call end at libgogo/list.go:60:50
//--- First parameter expression start at libgogo/list.go:60:50
//--- First parameter expression load start at libgogo/list.go:60:50
//--- First parameter expression load end at libgogo/list.go:60:50
@@ -2482,9 +2550,13 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:60:50
ADDQ $56, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:60:50
+ //--- Restoring registers after function call start at
libgogo/list.go:60:50
+ //--- Restoring registers after function call end at
libgogo/list.go:60:50
MOVQ -48(SP), R8
MOVQ R8, -16(SP)
//--- Assignment end at libgogo/list.go:60:51
+ //--- Saving registers before function call start at
libgogo/list.go:61:24
+ //--- Saving registers before function call end at libgogo/list.go:61:24
//--- First parameter expression start at libgogo/list.go:61:24
//--- First parameter expression load start at libgogo/list.go:61:24
//--- First parameter expression load end at libgogo/list.go:61:24
@@ -2517,6 +2589,8 @@
//--- ##2##libgogo·CopyMem## at libgogo/list.go:61:53
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:61:53
+ //--- Restoring registers after function call start at
libgogo/list.go:61:53
+ //--- Restoring registers after function call end at
libgogo/list.go:61:53
//--- For start at libgogo/list.go:62:9
//--- For [initial assignment] start at libgogo/list.go:62:11
//--- Assignment start at libgogo/list.go:62:11
@@ -2554,6 +2628,8 @@
//--- For [post assignment] end at libgogo/list.go:62:55
JMP FOR_libgogo_list_62_EXPR_START
FOR_libgogo_list_62_BODY:
+ //--- Saving registers before function call start at
libgogo/list.go:63:22
+ //--- Saving registers before function call end at libgogo/list.go:63:22
//--- First parameter expression start at libgogo/list.go:63:22
//--- First parameter expression load start at libgogo/list.go:63:22
MOVQ 8(SP), R8
@@ -2607,6 +2683,8 @@
//--- ##2##libgogo·CopyMem## at libgogo/list.go:63:113
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:63:113
+ //--- Restoring registers after function call start at
libgogo/list.go:63:113
+ //--- Restoring registers after function call end at
libgogo/list.go:63:113
JMP FOR_libgogo_list_62_EXTENDED_BODY
FOR_libgogo_list_62_END:
//--- For end at libgogo/list.go:64:6
@@ -2626,6 +2704,8 @@
//--- Assignment start at libgogo/list.go:66:23
//--- Assignment LHS load start at libgogo/list.go:66:23
//--- Assignment LHS load end at libgogo/list.go:66:23
+ //--- Saving registers before function call start at
libgogo/list.go:66:58
+ //--- Saving registers before function call end at libgogo/list.go:66:58
//--- First parameter expression start at libgogo/list.go:66:58
//--- First parameter expression load start at libgogo/list.go:66:58
//--- First parameter expression load end at libgogo/list.go:66:58
@@ -2639,6 +2719,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:66:58
ADDQ $56, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:66:58
+ //--- Restoring registers after function call start at
libgogo/list.go:66:58
+ //--- Restoring registers after function call end at
libgogo/list.go:66:58
MOVQ -48(SP), R8
MOVQ R8, -32(SP)
//--- Assignment end at libgogo/list.go:66:59
@@ -2659,6 +2741,8 @@
JLE IF_libgogo_list_76_1_END
JMP IF_libgogo_list_76_END
IF_libgogo_list_76_1_END:
+ //--- Saving registers before function call start at
libgogo/list.go:77:42
+ //--- Saving registers before function call end at libgogo/list.go:77:42
//--- First parameter expression start at libgogo/list.go:77:42
//--- First parameter expression load start at libgogo/list.go:77:42
//--- First parameter expression load end at libgogo/list.go:77:43
@@ -2674,6 +2758,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:77:43
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:77:43
+ //--- Restoring registers after function call start at
libgogo/list.go:77:43
+ //--- Restoring registers after function call end at
libgogo/list.go:77:43
+ //--- Saving registers before function call start at
libgogo/list.go:78:27
+ //--- Saving registers before function call end at libgogo/list.go:78:27
//--- First parameter expression start at libgogo/list.go:78:27
//--- First parameter expression load start at libgogo/list.go:78:27
//--- First parameter expression load end at libgogo/list.go:78:27
@@ -2687,6 +2775,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:78:27
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:78:27
+ //--- Restoring registers after function call start at
libgogo/list.go:78:27
+ //--- Restoring registers after function call end at
libgogo/list.go:78:27
+ //--- Saving registers before function call start at
libgogo/list.go:79:47
+ //--- Saving registers before function call end at libgogo/list.go:79:47
//--- First parameter expression start at libgogo/list.go:79:47
//--- First parameter expression load start at libgogo/list.go:79:47
//--- First parameter expression load end at libgogo/list.go:79:48
@@ -2702,6 +2794,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:79:48
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:79:48
+ //--- Restoring registers after function call start at
libgogo/list.go:79:48
+ //--- Restoring registers after function call end at
libgogo/list.go:79:48
+ //--- Saving registers before function call start at
libgogo/list.go:80:26
+ //--- Saving registers before function call end at libgogo/list.go:80:26
//--- First parameter expression start at libgogo/list.go:80:26
//--- First parameter expression load start at libgogo/list.go:80:26
MOVQ 8(SP), R8
@@ -2717,6 +2813,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:80:36
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:80:36
+ //--- Restoring registers after function call start at
libgogo/list.go:80:36
+ //--- Restoring registers after function call end at
libgogo/list.go:80:36
+ //--- Saving registers before function call start at
libgogo/list.go:81:49
+ //--- Saving registers before function call end at libgogo/list.go:81:49
//--- First parameter expression start at libgogo/list.go:81:49
//--- First parameter expression load start at libgogo/list.go:81:49
//--- First parameter expression load end at libgogo/list.go:81:50
@@ -2742,12 +2842,16 @@
//--- ##2##libgogo·ExitError## at libgogo/list.go:81:55
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:81:55
+ //--- Restoring registers after function call start at
libgogo/list.go:81:55
+ //--- Restoring registers after function call end at
libgogo/list.go:81:55
IF_libgogo_list_76_END:
IF_libgogo_list_76_ELSE_END:
//--- If end at libgogo/list.go:83:15
//--- Assignment start at libgogo/list.go:83:17
//--- Assignment LHS load start at libgogo/list.go:83:17
//--- Assignment LHS load end at libgogo/list.go:83:17
+ //--- Saving registers before function call start at
libgogo/list.go:83:44
+ //--- Saving registers before function call end at libgogo/list.go:83:44
//--- First parameter expression start at libgogo/list.go:83:44
//--- First parameter expression load start at libgogo/list.go:83:44
MOVQ 8(SP), R8
@@ -2770,6 +2874,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/list.go:83:80
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/list.go:83:80
+ //--- Restoring registers after function call start at
libgogo/list.go:83:80
+ //--- Restoring registers after function call end at
libgogo/list.go:83:80
MOVQ -16(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/list.go:83:81
@@ -2807,6 +2913,8 @@
//--- Assignment start at libgogo/memmgr.go:51:17
//--- Assignment LHS load start at libgogo/memmgr.go:51:17
//--- Assignment LHS load end at libgogo/memmgr.go:51:17
+ //--- Saving registers before function call start at
libgogo/memmgr.go:51:25
+ //--- Saving registers before function call end at
libgogo/memmgr.go:51:25
//--- Stack pointer offset before function call for local variables
start at libgogo/memmgr.go:51:25
SUBQ $8, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/memmgr.go:51:25
@@ -2814,6 +2922,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:51:25
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:51:25
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:51:25
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:51:25
MOVQ -8(SP), R8
MOVQ R8, data+176(SB)
//--- Assignment end at libgogo/memmgr.go:51:26
@@ -2822,6 +2932,8 @@
JE IF_libgogo_memmgr_52_1_END
JMP IF_libgogo_memmgr_52_END
IF_libgogo_memmgr_52_1_END:
+ //--- Saving registers before function call start at
libgogo/memmgr.go:53:36
+ //--- Saving registers before function call end at
libgogo/memmgr.go:53:36
//--- First parameter expression start at libgogo/memmgr.go:53:36
//--- First parameter expression load start at libgogo/memmgr.go:53:36
//--- First parameter expression load end at libgogo/memmgr.go:53:37
@@ -2847,6 +2959,8 @@
//--- ##2##libgogo·ExitError## at libgogo/memmgr.go:53:42
ADDQ $0, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:53:42
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:53:42
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:53:42
IF_libgogo_memmgr_52_END:
IF_libgogo_memmgr_52_ELSE_END:
//--- If end at libgogo/memmgr.go:55:15
@@ -2875,6 +2989,8 @@
MOVQ data+192(SB), R8
MOVQ R8, data+184(SB)
//--- Assignment end at libgogo/memmgr.go:57:24
+ //--- Saving registers before function call start at
libgogo/memmgr.go:58:17
+ //--- Saving registers before function call end at
libgogo/memmgr.go:58:17
//--- Stack pointer offset before function call for local variables
start at libgogo/memmgr.go:58:17
//--- ##2##libgogo·MoreMemory## at libgogo/memmgr.go:58:17
SUBQ $0, SP
@@ -2884,6 +3000,8 @@
//--- ##2##libgogo·MoreMemory## at libgogo/memmgr.go:58:17
ADDQ $0, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:58:17
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:58:17
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:58:17
RET
TEXT libgogo·MoreMemory(SB),0,$0-0
@@ -2899,6 +3017,8 @@
//--- Assignment start at libgogo/memmgr.go:68:13
//--- Assignment LHS load start at libgogo/memmgr.go:68:13
//--- Assignment LHS load end at libgogo/memmgr.go:68:13
+ //--- Saving registers before function call start at
libgogo/memmgr.go:68:25
+ //--- Saving registers before function call end at
libgogo/memmgr.go:68:25
//--- First parameter expression start at libgogo/memmgr.go:68:25
//--- First parameter expression load start at libgogo/memmgr.go:68:25
//--- First parameter expression load end at libgogo/memmgr.go:68:25
@@ -2912,6 +3032,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:68:25
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:68:25
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:68:25
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:68:25
MOVQ -16(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/memmgr.go:68:26
@@ -2920,6 +3042,8 @@
JNE IF_libgogo_memmgr_69_1_END
JMP IF_libgogo_memmgr_69_END
IF_libgogo_memmgr_69_1_END:
+ //--- Saving registers before function call start at
libgogo/memmgr.go:70:51
+ //--- Saving registers before function call end at
libgogo/memmgr.go:70:51
//--- First parameter expression start at libgogo/memmgr.go:70:51
//--- First parameter expression load start at libgogo/memmgr.go:70:51
//--- First parameter expression load end at libgogo/memmgr.go:70:52
@@ -2935,6 +3059,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:70:52
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:70:52
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:70:52
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:70:52
+ //--- Saving registers before function call start at
libgogo/memmgr.go:71:30
+ //--- Saving registers before function call end at
libgogo/memmgr.go:71:30
//--- First parameter expression start at libgogo/memmgr.go:71:30
//--- First parameter expression load start at libgogo/memmgr.go:71:30
//--- First parameter expression load end at libgogo/memmgr.go:71:30
@@ -2948,6 +3076,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:71:30
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:71:30
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:71:30
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:71:30
+ //--- Saving registers before function call start at
libgogo/memmgr.go:72:38
+ //--- Saving registers before function call end at
libgogo/memmgr.go:72:38
//--- First parameter expression start at libgogo/memmgr.go:72:38
//--- First parameter expression load start at libgogo/memmgr.go:72:38
//--- First parameter expression load end at libgogo/memmgr.go:72:39
@@ -2963,6 +3095,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:72:39
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:72:39
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:72:39
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:72:39
+ //--- Saving registers before function call start at
libgogo/memmgr.go:73:27
+ //--- Saving registers before function call end at
libgogo/memmgr.go:73:27
//--- First parameter expression start at libgogo/memmgr.go:73:27
//--- First parameter expression load start at libgogo/memmgr.go:73:27
//--- First parameter expression load end at libgogo/memmgr.go:73:27
@@ -2976,6 +3112,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:73:27
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:73:27
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:73:27
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:73:27
+ //--- Saving registers before function call start at
libgogo/memmgr.go:74:23
+ //--- Saving registers before function call end at
libgogo/memmgr.go:74:23
//--- First parameter expression start at libgogo/memmgr.go:74:23
//--- First parameter expression load start at libgogo/memmgr.go:74:23
//--- First parameter expression load end at libgogo/memmgr.go:74:24
@@ -3001,12 +3141,16 @@
//--- ##2##libgogo·ExitError## at libgogo/memmgr.go:74:29
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:74:29
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:74:29
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:74:29
IF_libgogo_memmgr_69_END:
IF_libgogo_memmgr_69_ELSE_END:
//--- If end at libgogo/memmgr.go:76:11
//--- Assignment start at libgogo/memmgr.go:76:13
//--- Assignment LHS load start at libgogo/memmgr.go:76:13
//--- Assignment LHS load end at libgogo/memmgr.go:76:13
+ //--- Saving registers before function call start at
libgogo/memmgr.go:76:29
+ //--- Saving registers before function call end at
libgogo/memmgr.go:76:29
//--- First parameter expression start at libgogo/memmgr.go:76:29
//--- First parameter expression load start at libgogo/memmgr.go:76:29
MOVQ data+192(SB), R8
@@ -3022,6 +3166,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:76:44
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:76:44
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:76:44
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:76:44
MOVQ -16(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/memmgr.go:76:45
@@ -3030,6 +3176,8 @@
JNE IF_libgogo_memmgr_77_1_END
JMP IF_libgogo_memmgr_77_END
IF_libgogo_memmgr_77_1_END:
+ //--- Saving registers before function call start at
libgogo/memmgr.go:78:68
+ //--- Saving registers before function call end at
libgogo/memmgr.go:78:68
//--- First parameter expression start at libgogo/memmgr.go:78:68
//--- First parameter expression load start at libgogo/memmgr.go:78:68
//--- First parameter expression load end at libgogo/memmgr.go:78:69
@@ -3045,6 +3193,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:78:69
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:78:69
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:78:69
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:78:69
+ //--- Saving registers before function call start at
libgogo/memmgr.go:79:29
+ //--- Saving registers before function call end at
libgogo/memmgr.go:79:29
//--- First parameter expression start at libgogo/memmgr.go:79:29
//--- First parameter expression load start at libgogo/memmgr.go:79:29
MOVQ data+192(SB), R8
@@ -3060,6 +3212,10 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:79:44
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:79:44
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:79:44
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:79:44
+ //--- Saving registers before function call start at
libgogo/memmgr.go:80:23
+ //--- Saving registers before function call end at
libgogo/memmgr.go:80:23
//--- First parameter expression start at libgogo/memmgr.go:80:23
//--- First parameter expression load start at libgogo/memmgr.go:80:23
//--- First parameter expression load end at libgogo/memmgr.go:80:24
@@ -3085,6 +3241,8 @@
//--- ##2##libgogo·ExitError## at libgogo/memmgr.go:80:29
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:80:29
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:80:29
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:80:29
IF_libgogo_memmgr_77_END:
IF_libgogo_memmgr_77_ELSE_END:
//--- If end at libgogo/memmgr.go:82:2
@@ -3099,6 +3257,8 @@
IF_libgogo_memmgr_90_1_END:
JMP IF_libgogo_memmgr_90_END
IF_libgogo_memmgr_90_2_END:
+ //--- Saving registers before function call start at
libgogo/memmgr.go:91:28
+ //--- Saving registers before function call end at
libgogo/memmgr.go:91:28
//--- Stack pointer offset before function call for local variables
start at libgogo/memmgr.go:91:28
SUBQ $8, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/memmgr.go:91:28
@@ -3106,6 +3266,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:91:28
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:91:28
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:91:28
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:91:28
IF_libgogo_memmgr_90_END:
IF_libgogo_memmgr_90_ELSE_END:
//--- If end at libgogo/memmgr.go:93:9
@@ -3119,6 +3281,8 @@
JMP FOR_libgogo_memmgr_93_END
FOR_libgogo_memmgr_93_1_END:
//--- For [expression] end at libgogo/memmgr.go:93:38
+ //--- Saving registers before function call start at
libgogo/memmgr.go:94:21
+ //--- Saving registers before function call end at
libgogo/memmgr.go:94:21
//--- Stack pointer offset before function call for local variables
start at libgogo/memmgr.go:94:21
SUBQ $8, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/memmgr.go:94:21
@@ -3126,6 +3290,8 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/memmgr.go:94:21
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/memmgr.go:94:21
+ //--- Restoring registers after function call start at
libgogo/memmgr.go:94:21
+ //--- Restoring registers after function call end at
libgogo/memmgr.go:94:21
JMP FOR_libgogo_memmgr_93_EXPR_START
FOR_libgogo_memmgr_93_END:
//--- For end at libgogo/memmgr.go:95:6
@@ -3207,6 +3373,8 @@
MOVQ BX, 16(SP) //Return value (0 if successful)
RET
TEXT libgogo·InitializeStringList(SB),0,$0-0
+ //--- Saving registers before function call start at
libgogo/strlist.go:22:22
+ //--- Saving registers before function call end at
libgogo/strlist.go:22:22
//--- First parameter expression start at libgogo/strlist.go:22:22
//--- First parameter expression load start at libgogo/strlist.go:22:22
MOVQ 8(SP), R8
@@ -3226,12 +3394,16 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:22:56
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:22:56
+ //--- Restoring registers after function call start at
libgogo/strlist.go:22:56
+ //--- Restoring registers after function call end at
libgogo/strlist.go:22:56
RET
TEXT libgogo·AddStringItem(SB),0,$0-0
//--- Assignment start at libgogo/strlist.go:31:18
//--- Assignment LHS load start at libgogo/strlist.go:31:18
//--- Assignment LHS load end at libgogo/strlist.go:31:18
+ //--- Saving registers before function call start at
libgogo/strlist.go:31:42
+ //--- Saving registers before function call end at
libgogo/strlist.go:31:42
//--- First parameter expression start at libgogo/strlist.go:31:42
//--- First parameter expression load start at libgogo/strlist.go:31:42
//--- First parameter expression load end at libgogo/strlist.go:31:47
@@ -3245,12 +3417,16 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:31:47
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:31:47
+ //--- Restoring registers after function call start at
libgogo/strlist.go:31:47
+ //--- Restoring registers after function call end at
libgogo/strlist.go:31:47
MOVQ -24(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/strlist.go:31:48
//--- Assignment start at libgogo/strlist.go:32:11
//--- Assignment LHS load start at libgogo/strlist.go:32:11
//--- Assignment LHS load end at libgogo/strlist.go:32:11
+ //--- Saving registers before function call start at
libgogo/strlist.go:32:44
+ //--- Saving registers before function call end at
libgogo/strlist.go:32:44
//--- First parameter expression start at libgogo/strlist.go:32:44
//--- First parameter expression load start at libgogo/strlist.go:32:44
//--- First parameter expression load end at libgogo/strlist.go:32:44
@@ -3264,9 +3440,13 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:32:44
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:32:44
+ //--- Restoring registers after function call start at
libgogo/strlist.go:32:44
+ //--- Restoring registers after function call end at
libgogo/strlist.go:32:44
MOVQ -24(SP), R8
MOVQ R8, -16(SP)
//--- Assignment end at libgogo/strlist.go:32:45
+ //--- Saving registers before function call start at
libgogo/strlist.go:33:15
+ //--- Saving registers before function call end at
libgogo/strlist.go:33:15
//--- First parameter expression start at libgogo/strlist.go:33:15
//--- First parameter expression load start at libgogo/strlist.go:33:15
MOVQ 8(SP), R8
@@ -3287,12 +3467,16 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:33:37
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:33:37
+ //--- Restoring registers after function call start at
libgogo/strlist.go:33:37
+ //--- Restoring registers after function call end at
libgogo/strlist.go:33:37
RET
TEXT libgogo·GetStringItemAt(SB),0,$0-0
//--- Assignment start at libgogo/strlist.go:45:17
//--- Assignment LHS load start at libgogo/strlist.go:45:17
//--- Assignment LHS load end at libgogo/strlist.go:45:17
+ //--- Saving registers before function call start at
libgogo/strlist.go:45:29
+ //--- Saving registers before function call end at
libgogo/strlist.go:45:29
//--- First parameter expression start at libgogo/strlist.go:45:29
//--- First parameter expression load start at libgogo/strlist.go:45:29
MOVQ 8(SP), R8
@@ -3313,12 +3497,16 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:45:53
ADDQ $64, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:45:53
+ //--- Restoring registers after function call start at
libgogo/strlist.go:45:53
+ //--- Restoring registers after function call end at
libgogo/strlist.go:45:53
MOVQ -48(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at libgogo/strlist.go:45:54
//--- Assignment start at libgogo/strlist.go:46:18
//--- Assignment LHS load start at libgogo/strlist.go:46:18
//--- Assignment LHS load end at libgogo/strlist.go:46:18
+ //--- Saving registers before function call start at
libgogo/strlist.go:46:50
+ //--- Saving registers before function call end at
libgogo/strlist.go:46:50
//--- First parameter expression start at libgogo/strlist.go:46:50
//--- First parameter expression load start at libgogo/strlist.go:46:50
//--- First parameter expression load end at libgogo/strlist.go:46:50
@@ -3332,12 +3520,16 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:46:50
ADDQ $56, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:46:50
+ //--- Restoring registers after function call start at
libgogo/strlist.go:46:50
+ //--- Restoring registers after function call end at
libgogo/strlist.go:46:50
MOVQ -48(SP), R8
MOVQ R8, -16(SP)
//--- Assignment end at libgogo/strlist.go:46:51
//--- Assignment start at libgogo/strlist.go:47:12
//--- Assignment LHS load start at libgogo/strlist.go:47:12
//--- Assignment LHS load end at libgogo/strlist.go:47:12
+ //--- Saving registers before function call start at
libgogo/strlist.go:47:36
+ //--- Saving registers before function call end at
libgogo/strlist.go:47:36
//--- First parameter expression start at libgogo/strlist.go:47:36
//--- First parameter expression load start at libgogo/strlist.go:47:36
//--- First parameter expression load end at libgogo/strlist.go:47:47
@@ -3351,9 +3543,13 @@
//--- Stack pointer offset after function call for local variables start
at libgogo/strlist.go:47:47
ADDQ $56, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:47:47
+ //--- Restoring registers after function call start at
libgogo/strlist.go:47:47
+ //--- Restoring registers after function call end at
libgogo/strlist.go:47:47
MOVQ -48(SP), R8
MOVQ R8, -40(SP)
//--- Assignment end at libgogo/strlist.go:47:48
+ //--- Saving registers before function call start at
libgogo/strlist.go:48:24
+ //--- Saving registers before function call end at
libgogo/strlist.go:48:24
//--- First parameter expression start at libgogo/strlist.go:48:24
//--- First parameter expression load start at libgogo/strlist.go:48:24
//--- First parameter expression load end at libgogo/strlist.go:48:24
@@ -3383,6 +3579,8 @@
//--- ##2##libgogo·CopyMem## at libgogo/strlist.go:48:34
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/strlist.go:48:34
+ //--- Restoring registers after function call start at
libgogo/strlist.go:48:34
+ //--- Restoring registers after function call end at
libgogo/strlist.go:48:34
//--- Return value assignment start at libgogo/strlist.go:49:12
//--- Return expression load start at libgogo/strlist.go:49:12
//--- Return expression load end at libgogo/strlist.go:49:24
@@ -3599,12 +3797,14 @@
MOVQ 16(SP), R8
ADDQ $56, R8
//--- Assignment LHS load end at libgogo/symbol.go:99:22
- PUSHQ R8
+ //--- Saving registers before function call start at
libgogo/symbol.go:99:42
+ MOVQ R8, -8(SP)
+ //--- Saving registers before function call end at
libgogo/symbol.go:99:42
//--- First parameter expression start at libgogo/symbol.go:99:42
//--- First parameter expression load start at libgogo/symbol.go:99:42
//--- First parameter expression load end at libgogo/symbol.go:99:42
MOVQ 8(SP), R9
- MOVQ R9, -24(SP)
+ MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:99:42
//--- Subsequent parameter expression start at libgogo/symbol.go:99:42
//--- Subsequent parameter expression load start at
libgogo/symbol.go:99:42
@@ -3612,17 +3812,19 @@
ADDQ $56, R9
//--- Subsequent parameter expression load end at libgogo/symbol.go:99:58
MOVQ (R9), R9
- MOVQ R9, -16(SP)
+ MOVQ R9, -24(SP)
//--- Subsequent parameter expression end at libgogo/symbol.go:99:58
//--- Stack pointer offset before function call for local variables
start at libgogo/symbol.go:99:58
- SUBQ $24, SP
+ SUBQ $32, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/symbol.go:99:58
CALL libgogo·AppendObject(SB)
//--- Stack pointer offset after function call for local variables start
at libgogo/symbol.go:99:58
- ADDQ $24, SP
+ ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/symbol.go:99:58
- POPQ R8
- MOVQ -8(SP), R9
+ //--- Restoring registers after function call start at
libgogo/symbol.go:99:58
+ MOVQ -8(SP), R8
+ //--- Restoring registers after function call end at
libgogo/symbol.go:99:58
+ MOVQ -16(SP), R9
MOVQ R9, (R8)
//--- Assignment end at libgogo/symbol.go:99:59
RET
@@ -3636,6 +3838,8 @@
//--- Assignment start at libgogo/symbol.go:108:14
//--- Assignment LHS load start at libgogo/symbol.go:108:14
//--- Assignment LHS load end at libgogo/symbol.go:108:14
+ //--- Saving registers before function call start at
libgogo/symbol.go:108:28
+ //--- Saving registers before function call end at
libgogo/symbol.go:108:28
//--- First parameter expression start at libgogo/symbol.go:108:28
//--- First parameter expression load start at libgogo/symbol.go:108:28
//--- First parameter expression load end at libgogo/symbol.go:108:28
@@ -3662,6 +3866,8 @@
//--- ##2##libgogo·GetField## at libgogo/symbol.go:108:37
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/symbol.go:108:37
+ //--- Restoring registers after function call start at
libgogo/symbol.go:108:37
+ //--- Restoring registers after function call end at
libgogo/symbol.go:108:37
//--- ##1##libgogo·GetField## at libgogo/symbol.go:108:37
MOVQ -99992(SP), R8
MOVQ R8, -8(SP)
@@ -3695,6 +3901,8 @@
//--- Assignment start at libgogo/symbol.go:120:14
//--- Assignment LHS load start at libgogo/symbol.go:120:14
//--- Assignment LHS load end at libgogo/symbol.go:120:14
+ //--- Saving registers before function call start at
libgogo/symbol.go:120:29
+ //--- Saving registers before function call end at
libgogo/symbol.go:120:29
//--- First parameter expression start at libgogo/symbol.go:120:29
//--- First parameter expression load start at libgogo/symbol.go:120:29
//--- First parameter expression load end at libgogo/symbol.go:120:29
@@ -3733,6 +3941,8 @@
//--- ##2##libgogo·GetObject## at libgogo/symbol.go:120:49
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/symbol.go:120:49
+ //--- Restoring registers after function call start at
libgogo/symbol.go:120:49
+ //--- Restoring registers after function call end at
libgogo/symbol.go:120:49
//--- ##1##libgogo·GetObject## at libgogo/symbol.go:120:49
MOVQ -99968(SP), R8
MOVQ R8, -8(SP)
@@ -3761,12 +3971,14 @@
MOVQ 16(SP), R8
ADDQ $56, R8
//--- Assignment LHS load end at libgogo/symbol.go:129:18
- PUSHQ R8
+ //--- Saving registers before function call start at
libgogo/symbol.go:129:38
+ MOVQ R8, -8(SP)
+ //--- Saving registers before function call end at
libgogo/symbol.go:129:38
//--- First parameter expression start at libgogo/symbol.go:129:38
//--- First parameter expression load start at libgogo/symbol.go:129:38
//--- First parameter expression load end at libgogo/symbol.go:129:38
MOVQ 8(SP), R9
- MOVQ R9, -24(SP)
+ MOVQ R9, -32(SP)
//--- First parameter expression end at libgogo/symbol.go:129:38
//--- Subsequent parameter expression start at libgogo/symbol.go:129:38
//--- Subsequent parameter expression load start at
libgogo/symbol.go:129:38
@@ -3774,17 +3986,19 @@
ADDQ $56, R9
//--- Subsequent parameter expression load end at
libgogo/symbol.go:129:50
MOVQ (R9), R9
- MOVQ R9, -16(SP)
+ MOVQ R9, -24(SP)
//--- Subsequent parameter expression end at libgogo/symbol.go:129:50
//--- Stack pointer offset before function call for local variables
start at libgogo/symbol.go:129:50
- SUBQ $24, SP
+ SUBQ $32, SP
//--- Stack pointer offset before function call for local variables end
at libgogo/symbol.go:129:50
CALL libgogo·AppendObject(SB)
//--- Stack pointer offset after function call for local variables start
at libgogo/symbol.go:129:50
- ADDQ $24, SP
+ ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at libgogo/symbol.go:129:50
- POPQ R8
- MOVQ -8(SP), R9
+ //--- Restoring registers after function call start at
libgogo/symbol.go:129:50
+ MOVQ -8(SP), R8
+ //--- Restoring registers after function call end at
libgogo/symbol.go:129:50
+ MOVQ -16(SP), R9
MOVQ R9, (R8)
//--- Assignment end at libgogo/symbol.go:129:51
//--- Assignment start at libgogo/symbol.go:130:15
@@ -3893,6 +4107,8 @@
//--- Assignment start at libgogo/symbol.go:148:31
//--- Assignment LHS load start at libgogo/symbol.go:148:31
//--- Assignment LHS load end at libgogo/symbol.go:148:31
+ //--- Saving registers before function call start at
libgogo/symbol.go:148:60
+ //--- Saving registers before function call end at
libgogo/symbol.go:148:60
//--- First parameter expression start at libgogo/symbol.go:148:60
//--- First parameter expression load start at libgogo/symbol.go:148:60
//--- First parameter expression load end at libgogo/symbol.go:148:60
@@ -3909,6 +4125,8 @@
***The diff for this file has been truncated for email.***
=======================================
--- /src/codegen.go Tue Jun 15 13:21:07 2010
+++ /src/codegen.go Sat Jun 19 02:13:43 2010
@@ -61,28 +61,51 @@
//
// Saves the currently used registers to the stack
//
-func SaveUsedRegisters() {
+func SaveUsedRegisters(LocalVariableOffset uint64) uint64 {
var i uint64;
+ var counter uint64 = 0;
+ var LHSItem *libgogo.Item;
+
+ GenerateComment("Saving registers before function call start");
for i = 0; i < NumRegisters; i = i + 1 {
if FreeRegisters[i] == 0 {
- PrintInstruction_Reg("PUSH", 8, "R", i + 8, 0, 0, 0, "");
+ LHSItem = libgogo.NewItem();
+ libgogo.SetItem(LHSItem, libgogo.MODE_VAR, uint64_t, 0,
LocalVariableOffset + counter * 8, 0, 0); //Local variable with additional
offset
+ PrintInstruction_Reg_Var("MOV", "R", i + 8, "", 0, LHSItem);
//Save register i + 8
+ counter = counter + 1;
}
}
+ GenerateComment("Saving registers before function call end");
+ return counter * 8; //Number of registers times 64 bit is new offset
}
//
// Restores the currently used registers from the stack
//
-func RestoreUsedRegisters() {
+func RestoreUsedRegisters(LocalVariableOffset uint64, RegisterOffset
uint64) {
var i uint64;
+ var counter uint64 = RegisterOffset / 8;
+ var RHSItem *libgogo.Item;
+
+ GenerateComment("Restoring registers after function call start");
for i = NumRegisters - 1; i >= 0; i = i - 1 { //Reverse order (stack!)
if FreeRegisters[i] == 0 {
- PrintInstruction_Reg("POP", 8, "R", i + 8, 0, 0, 0, "");
- }
- if i == 0 { //Break on i = 0 as i-1 on uint64 yields to underflow
+ if counter == 0 {
+ GenErrorWeak("Internal error: number of registers to
restore does not match (too large)");
+ }
+ RHSItem = libgogo.NewItem();
+ libgogo.SetItem(RHSItem, libgogo.MODE_VAR, uint64_t, 0,
LocalVariableOffset - counter * 8, 0, 0); //Local variable with additional
offset
+ PrintInstruction_Var_Reg("MOV", RHSItem, "R", i + 8, "", 0);
//Restore register i + 8
+ counter = counter - 1;
+ }
+ if i == 0 { //Break on i = 0 as i-1 on uint64 yields an underflow
break;
}
}
+ if counter > 0 {
+ GenErrorWeak("Internal error: number of registers to restore does
not match (too small)");
+ }
+ GenerateComment("Restoring registers after function call end");
}
//
=======================================
--- /src/parser.go Sun Jun 13 12:42:17 2010
+++ /src/parser.go Sat Jun 19 02:13:43 2010
@@ -1049,15 +1049,17 @@
var paramCount uint64 = 0;
var TotalParameterSize uint64;
var TotalLocalVariableSize uint64;
+ var RegisterStackOffset uint64;
var ReturnItem *libgogo.Item;
PrintDebugString("Entering ParseFunctionCall()",1000);
AssertNextToken(TOKEN_LBRAC);
GetNextTokenSafe();
if Compile != 0 {
- SaveUsedRegisters();
TotalParameterSize =
libgogo.GetAlignedObjectListSize(FunctionCalled.Fields); //Get total size
of parameters of function called
TotalLocalVariableSize =
libgogo.GetAlignedObjectListSize(LocalObjects); //Get total size of local
variables of current function
+ RegisterStackOffset = SaveUsedRegisters(TotalLocalVariableSize);
//Save registers...
+ TotalLocalVariableSize = TotalLocalVariableSize +
RegisterStackOffset; //...and correct stack offset for paramters accordingly
}
if
tok.id != TOKEN_RBRAC {
tok.nextToken =
tok.id;
@@ -1072,7 +1074,7 @@
ParameterCheck_More(FunctionCalled, paramCount);
TotalParameterSize =
libgogo.GetAlignedObjectListSize(FunctionCalled.Fields); //Recalculate
sizes as function may have been forward declared
PrintActualFunctionCall(FunctionCalled, TotalLocalVariableSize,
TotalParameterSize);
- RestoreUsedRegisters();
+ RestoreUsedRegisters(TotalLocalVariableSize, RegisterStackOffset);
}
PrintDebugString("Leaving ParseFunctionCall()",1000);
ReturnItem = GetReturnItem(FunctionCalled, TotalLocalVariableSize,
TotalParameterSize);
=======================================
--- /testing/checksums Wed Jun 16 21:59:49 2010
+++ /testing/checksums Sat Jun 19 02:13:43 2010
@@ -17,5 +17,5 @@
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/2010-05-09_struct8_fail.go
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/2010-05-09_struct9.go
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/2010-05-09_symtable_fail.go
-d99214d3aca787c37da4568c34231dff59aa2a0198a8568967c897ffff7d3385
tmp/_gogo_.sog
+13d548f60634a60500920ac7da85d7f2ed70f6beb356ea23d228d8a232d7381c
tmp/_gogo_.sog
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
tmp/test.go
=======================================
--- /testing/results/_gogo_.sog Wed Jun 16 21:59:49 2010
+++ /testing/results/_gogo_.sog Sat Jun 19 02:13:43 2010
@@ -323,6 +323,8 @@
//--- Local variable assignment RHS load end at tests/test.go:64:24
MOVQ $3, -16(SP)
//--- Local variable assignment end at tests/test.go:64:24
+ //--- Saving registers before function call start at tests/test.go:65:10
+ //--- Saving registers before function call end at tests/test.go:65:10
//--- Stack pointer offset before function call for local variables
start at tests/test.go:65:10
SUBQ $24, SP
//--- Stack pointer offset before function call for local variables end
at tests/test.go:65:10
@@ -330,9 +332,13 @@
//--- Stack pointer offset after function call for local variables start
at tests/test.go:65:10
ADDQ $24, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:65:10
+ //--- Restoring registers after function call start at
tests/test.go:65:10
+ //--- Restoring registers after function call end at tests/test.go:65:10
//--- Assignment start at tests/test.go:66:11
//--- Assignment LHS load start at tests/test.go:66:11
//--- Assignment LHS load end at tests/test.go:66:11
+ //--- Saving registers before function call start at tests/test.go:66:19
+ //--- Saving registers before function call end at tests/test.go:66:19
//--- First parameter expression start at tests/test.go:66:19
//--- First parameter expression load start at tests/test.go:66:19
//--- First parameter expression load end at tests/test.go:66:19
@@ -346,12 +352,16 @@
//--- Stack pointer offset after function call for local variables start
at tests/test.go:66:19
ADDQ $32, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:66:19
+ //--- Restoring registers after function call start at
tests/test.go:66:19
+ //--- Restoring registers after function call end at tests/test.go:66:19
MOVQ -24(SP), R8
MOVQ R8, -16(SP)
//--- Assignment end at tests/test.go:66:20
//--- Assignment start at tests/test.go:67:11
//--- Assignment LHS load start at tests/test.go:67:11
//--- Assignment LHS load end at tests/test.go:67:11
+ //--- Saving registers before function call start at tests/test.go:67:20
+ //--- Saving registers before function call end at tests/test.go:67:20
//--- First parameter expression start at tests/test.go:67:20
//--- First parameter expression load start at tests/test.go:67:20
//--- First parameter expression load end at tests/test.go:67:20
@@ -376,6 +386,8 @@
//--- Stack pointer offset after function call for local variables start
at tests/test.go:67:28
ADDQ $48, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:67:28
+ //--- Restoring registers after function call start at
tests/test.go:67:28
+ //--- Restoring registers after function call end at tests/test.go:67:28
MOVQ -24(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at tests/test.go:67:29
@@ -418,6 +430,8 @@
//--- Assignment start at tests/test.go:80:11
//--- Assignment LHS load start at tests/test.go:80:11
//--- Assignment LHS load end at tests/test.go:80:11
+ //--- Saving registers before function call start at tests/test.go:80:18
+ //--- Saving registers before function call end at tests/test.go:80:18
//--- First parameter expression start at tests/test.go:80:18
//--- First parameter expression load start at tests/test.go:80:18
//--- First parameter expression load end at tests/test.go:80:18
@@ -430,12 +444,16 @@
//--- Stack pointer offset after function call for local variables start
at tests/test.go:80:18
ADDQ $56, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:80:18
+ //--- Restoring registers after function call start at
tests/test.go:80:18
+ //--- Restoring registers after function call end at tests/test.go:80:18
MOVQ -48(SP), R8
MOVQ R8, -8(SP)
//--- Assignment end at tests/test.go:80:19
//--- Assignment start at tests/test.go:81:9
//--- Assignment LHS load start at tests/test.go:81:9
//--- Assignment LHS load end at tests/test.go:81:9
+ //--- Saving registers before function call start at tests/test.go:81:16
+ //--- Saving registers before function call end at tests/test.go:81:16
//--- First parameter expression start at tests/test.go:81:16
//--- First parameter expression load start at tests/test.go:81:16
//--- First parameter expression load end at tests/test.go:81:16
@@ -451,6 +469,8 @@
//--- Stack pointer offset after function call for local variables start
at tests/test.go:81:16
ADDQ $72, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:81:16
+ //--- Restoring registers after function call start at
tests/test.go:81:16
+ //--- Restoring registers after function call end at tests/test.go:81:16
MOVQ -56(SP), R8
MOVQ -48(SP), R9
MOVQ R8, -40(SP)
@@ -459,6 +479,8 @@
//--- Assignment start at tests/test.go:82:11
//--- Assignment LHS load start at tests/test.go:82:11
//--- Assignment LHS load end at tests/test.go:82:11
+ //--- Saving registers before function call start at tests/test.go:82:22
+ //--- Saving registers before function call end at tests/test.go:82:22
//--- First parameter expression start at tests/test.go:82:22
//--- First parameter expression load start at tests/test.go:82:22
//--- First parameter expression load end at tests/test.go:82:22
@@ -474,6 +496,8 @@
//--- ##2##main·bazz_fwd## at tests/test.go:82:22
ADDQ $40, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:82:22
+ //--- Restoring registers after function call start at
tests/test.go:82:22
+ //--- Restoring registers after function call end at tests/test.go:82:22
//--- ##1##main·bazz_fwd## at tests/test.go:82:22
MOVQ -100032(SP), R8
MOVQ R8, -8(SP)
@@ -484,6 +508,8 @@
//--- Assignment start at tests/test.go:87:11
//--- Assignment LHS load start at tests/test.go:87:11
//--- Assignment LHS load end at tests/test.go:87:11
+ //--- Saving registers before function call start at tests/test.go:87:22
+ //--- Saving registers before function call end at tests/test.go:87:22
//--- First parameter expression start at tests/test.go:87:22
//--- First parameter expression load start at tests/test.go:87:22
//--- First parameter expression load end at tests/test.go:87:22
@@ -499,6 +525,8 @@
//--- ##2##main·bazz_fwd## at tests/test.go:87:22
ADDQ $8, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:87:22
+ //--- Restoring registers after function call start at
tests/test.go:87:22
+ //--- Restoring registers after function call end at tests/test.go:87:22
//--- ##1##main·bazz_fwd## at tests/test.go:87:22
MOVQ -100000(SP), R8
MOVQ R8, -8(SP)
@@ -519,6 +547,8 @@
//--- Assignment start at tests/test.go:96:9
//--- Assignment LHS load start at tests/test.go:96:9
//--- Assignment LHS load end at tests/test.go:96:9
+ //--- Saving registers before function call start at tests/test.go:96:16
+ //--- Saving registers before function call end at tests/test.go:96:16
//--- First parameter expression start at tests/test.go:96:16
//--- First parameter expression load start at tests/test.go:96:16
//--- First parameter expression load end at tests/test.go:96:16
@@ -548,6 +578,8 @@
//--- ##2##main·maeh## at tests/test.go:96:19
ADDQ $16, SP
//--- Stack pointer offset after function call for local variables end
at tests/test.go:96:19
+ //--- Restoring registers after function call start at
tests/test.go:96:19
+ //--- Restoring registers after function call end at tests/test.go:96:19
//--- ##1##main·maeh## at tests/test.go:96:19
MOVQ -99984(SP), R8
//--- ##1##main·maeh## at tests/test.go:96:19