mirror of
https://github.com/golang/go
synced 2024-11-19 23:34:40 -07:00
519474451a
This is a subset of https://golang.org/cl/20022 with only the copyright header lines, so the next CL will be smaller and more reviewable. Go policy has been single space after periods in comments for some time. The copyright header template at: https://golang.org/doc/contribute.html#copyright also uses a single space. Make them all consistent. Change-Id: Icc26c6b8495c3820da6b171ca96a74701b4a01b0 Reviewed-on: https://go-review.googlesource.com/20111 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
50 lines
2.3 KiB
C
50 lines
2.3 KiB
C
// Copyright 2013 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// This file defines the IDs for PCDATA and FUNCDATA instructions
|
|
// in Go binaries. It is included by assembly sources, so it must
|
|
// be written using #defines.
|
|
//
|
|
// The Go compiler also #includes this file, for now.
|
|
//
|
|
// symtab.go also contains a copy of these constants.
|
|
|
|
#define PCDATA_StackMapIndex 0
|
|
|
|
#define FUNCDATA_ArgsPointerMaps 0 /* garbage collector blocks */
|
|
#define FUNCDATA_LocalsPointerMaps 1
|
|
|
|
// Pseudo-assembly statements.
|
|
|
|
// GO_ARGS, GO_RESULTS_INITIALIZED, and NO_LOCAL_POINTERS are macros
|
|
// that communicate to the runtime information about the location and liveness
|
|
// of pointers in an assembly function's arguments, results, and stack frame.
|
|
// This communication is only required in assembly functions that make calls
|
|
// to other functions that might be preempted or grow the stack.
|
|
// NOSPLIT functions that make no calls do not need to use these macros.
|
|
|
|
// GO_ARGS indicates that the Go prototype for this assembly function
|
|
// defines the pointer map for the function's arguments.
|
|
// GO_ARGS should be the first instruction in a function that uses it.
|
|
// It can be omitted if there are no arguments at all.
|
|
// GO_ARGS is inserted implicitly by the linker for any function
|
|
// that also has a Go prototype and therefore is usually not necessary
|
|
// to write explicitly.
|
|
#define GO_ARGS FUNCDATA $FUNCDATA_ArgsPointerMaps, go_args_stackmap(SB)
|
|
|
|
// GO_RESULTS_INITIALIZED indicates that the assembly function
|
|
// has initialized the stack space for its results and that those results
|
|
// should be considered live for the remainder of the function.
|
|
#define GO_RESULTS_INITIALIZED FUNCDATA PCDATA $PCDATA_StackMapIndex, 1
|
|
|
|
// NO_LOCAL_POINTERS indicates that the assembly function stores
|
|
// no pointers to heap objects in its local stack variables.
|
|
#define NO_LOCAL_POINTERS FUNCDATA $FUNCDATA_LocalsPointerMaps, runtime·no_pointers_stackmap(SB)
|
|
|
|
// ArgsSizeUnknown is set in Func.argsize to mark all functions
|
|
// whose argument size is unknown (C vararg functions, and
|
|
// assembly code without an explicit specification).
|
|
// This value is generated by the compiler, assembler, or linker.
|
|
#define ArgsSizeUnknown 0x80000000
|