1 | // Copyright 2022 The Go Authors. All rights reserved. |
---|---|
2 | // Use of this source code is governed by a BSD-style |
3 | // license that can be found in the LICENSE file. |
4 | |
5 | // Package pkgbits implements low-level coding abstractions for |
6 | // Unified IR's export data format. |
7 | // |
8 | // At a low-level, a package is a collection of bitstream elements. |
9 | // Each element has a "kind" and a dense, non-negative index. |
10 | // Elements can be randomly accessed given their kind and index. |
11 | // |
12 | // Individual elements are sequences of variable-length values (e.g., |
13 | // integers, booleans, strings, go/constant values, cross-references |
14 | // to other elements). Package pkgbits provides APIs for encoding and |
15 | // decoding these low-level values, but the details of mapping |
16 | // higher-level Go constructs into elements is left to higher-level |
17 | // abstractions. |
18 | // |
19 | // Elements may cross-reference each other with "relocations." For |
20 | // example, an element representing a pointer type has a relocation |
21 | // referring to the element type. |
22 | // |
23 | // Go constructs may be composed as a constellation of multiple |
24 | // elements. For example, a declared function may have one element to |
25 | // describe the object (e.g., its name, type, position), and a |
26 | // separate element to describe its function body. This allows readers |
27 | // some flexibility in efficiently seeking or re-reading data (e.g., |
28 | // inlining requires re-reading the function body for each inlined |
29 | // call, without needing to re-read the object-level details). |
30 | // |
31 | // This is a copy of internal/pkgbits in the Go implementation. |
32 | package pkgbits |
33 |
Members