package pkginit

import "cmd/compile/internal/pkginit"

Index

Constants

const (
	InitNotStarted = iota
	InitDone
	InitPending
)

Static initialization phase. These values are stored in two bits in Node.flags.

Variables

var InstrumentGlobalsMap = make(map[string]ir.Node)

InstrumentGlobalsMap contains only package-local (and unlinknamed from somewhere else) globals. And the key is the object name. For example, in package p, a global foo would be in this map as "foo". Consider range over maps is nondeterministic, make a slice to hold all the values in the InstrumentGlobalsMap and iterate over the InstrumentGlobalsSlice.

var InstrumentGlobalsSlice = make([]ir.Node, 0, 0)

Functions

func GetRedzoneSizeForGlobal

func GetRedzoneSizeForGlobal(size int64) int64

Calculate redzone for globals.

func MakeInit

func MakeInit()

MakeInit creates a synthetic init function to handle any package-scope initialization statements.

TODO(mdempsky): Move into noder, so that the types2-based frontends can use Info.InitOrder instead.

func Task

func Task() *ir.Name

Task makes and returns an initialization record for the package. See runtime/proc.go:initTask for its layout. The 3 tasks for initialization are:

  1. Initialize all of the packages the current package depends on.
  2. Initialize all the variables that have initializers.
  3. Run any init functions.

Types

type InitOrder

type InitOrder struct {
	// contains filtered or unexported fields
}

Source Files

init.go initAsanGlobals.go initorder.go

Version
v1.20.0-rc.1
Published
Dec 7, 2022
Platform
linux/amd64
Imports
12 packages
Last checked
9 seconds ago

Tools for package owners.