summaryrefslogtreecommitdiffhomepage
path: root/pkg/refs
diff options
context:
space:
mode:
authorZhaozhong Ni <nzz@google.com>2018-07-27 10:16:27 -0700
committerShentubot <shentubot@google.com>2018-07-27 10:17:21 -0700
commitbe7fcbc5582fe831b5ec63f773d867d7591e27a1 (patch)
tree0b14ffa46eebaeab73a751ac4b3b38e434bbed67 /pkg/refs
parentb8f96a9d0b9868060025e7a89e99e1b30d17fa8b (diff)
stateify: support explicit annotation mode; convert refs and stack packages.
We have been unnecessarily creating too many savable types implicitly. PiperOrigin-RevId: 206334201 Change-Id: Idc5a3a14bfb7ee125c4f2bb2b1c53164e46f29a8
Diffstat (limited to 'pkg/refs')
-rw-r--r--pkg/refs/BUILD20
-rw-r--r--pkg/refs/refcounter.go4
-rw-r--r--pkg/refs/refcounter_state.go1
3 files changed, 7 insertions, 18 deletions
diff --git a/pkg/refs/BUILD b/pkg/refs/BUILD
index 4b7c9345d..3ea877ccf 100644
--- a/pkg/refs/BUILD
+++ b/pkg/refs/BUILD
@@ -1,32 +1,16 @@
package(licenses = ["notice"]) # Apache 2.0
-load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
-load("//tools/go_stateify:defs.bzl", "go_stateify")
-
-go_stateify(
- name = "refs_state",
- srcs = [
- "refcounter.go",
- "refcounter_state.go",
- ],
- out = "refs_state.go",
- package = "refs",
-)
+load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
go_library(
name = "refs",
srcs = [
"refcounter.go",
"refcounter_state.go",
- "refs_state.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/refs",
visibility = ["//:sandbox"],
- deps = [
- "//pkg/ilist",
- "//pkg/log",
- "//pkg/state",
- ],
+ deps = ["//pkg/ilist"],
)
go_test(
diff --git a/pkg/refs/refcounter.go b/pkg/refs/refcounter.go
index 3162001e1..0d44c2499 100644
--- a/pkg/refs/refcounter.go
+++ b/pkg/refs/refcounter.go
@@ -58,6 +58,8 @@ type WeakRefUser interface {
}
// WeakRef is a weak reference.
+//
+// +stateify savable
type WeakRef struct {
ilist.Entry `state:"nosave"`
@@ -177,6 +179,8 @@ func (w *WeakRef) zap() {
//
// N.B. To allow the zero-object to be initialized, the count is offset by
// 1, that is, when refCount is n, there are really n+1 references.
+//
+// +stateify savable
type AtomicRefCount struct {
// refCount is composed of two fields:
//
diff --git a/pkg/refs/refcounter_state.go b/pkg/refs/refcounter_state.go
index 1be67f951..093eae785 100644
--- a/pkg/refs/refcounter_state.go
+++ b/pkg/refs/refcounter_state.go
@@ -14,6 +14,7 @@
package refs
+// +stateify savable
type savedReference struct {
obj interface{}
}