dummy操作,主要为了noescape, 可以通过go compile生成 |
|
#include "textflag.h"
|
|
TEXT ·noescape(SB),NOSPLIT,$0-48
MOVQ d_base+0(FP), AX
MOVQ AX, b_base+24(FP)
MOVQ d_len+8(FP), AX
MOVQ AX, b_len+32(FP)
MOVQ d_cap+16(FP),AX
MOVQ AX, b_cap+40(FP)
RET
|
package noescape
|
|
//此处使用go编译器的指示
//go:noescape
func noescape(d []byte) (b []byte)
|
|
func test() int {
var buf [1024]byte
|
|
|
data := noescape(buf[:])
|
do something in data 这样可以确保buf一定分配在函数test的函数栈上 |
|
return len(data)
}
|