123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright 2019 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.
- package goobj
- // Builtin (compiler-generated) function references appear
- // frequently. We assign special indices for them, so they
- // don't need to be referenced by name.
- // NBuiltin returns the number of listed builtin
- // symbols.
- func NBuiltin() int {
- return len(builtins)
- }
- // BuiltinName returns the name and ABI of the i-th
- // builtin symbol.
- func BuiltinName(i int) (string, int) {
- return builtins[i].name, builtins[i].abi
- }
- // BuiltinIdx returns the index of the builtin with the
- // given name and abi, or -1 if it is not a builtin.
- func BuiltinIdx(name string, abi int) int {
- i, ok := builtinMap[name]
- if !ok {
- return -1
- }
- if builtins[i].abi != abi {
- return -1
- }
- return i
- }
- //go:generate go run mkbuiltin.go
- var builtinMap map[string]int
- func init() {
- builtinMap = make(map[string]int, len(builtins))
- for i, b := range builtins {
- builtinMap[b.name] = i
- }
- }
|