aboutsummaryrefslogtreecommitdiff
path: root/stg.proto
diff options
context:
space:
mode:
authorGiuliano Procida <gprocida@google.com>2023-09-08 14:33:48 +0100
committerGiuliano Procida <gprocida@google.com>2023-09-12 09:31:53 +0100
commit7bb30801bfd8df4881202cc0b03fb0e785668f7f (patch)
tree8dd219adea1de225b00f676918e46fea8e5b82a0 /stg.proto
parent2f299880d283b02400a0f37147098246403f242e (diff)
downloadstg-7bb30801bfd8df4881202cc0b03fb0e785668f7f.tar.gz
make Methods be exclusively virtual methods
These are the only kinds of methods that are tied to a class (via a vtable). The others have independent existences as symbols. Model changes: `Method` node * `kind` is removed * `vtable_offset` is now non-optional Format changes: `method` node * `kind` is removed along with all reader / writer support * `vtable_offset` is now non-optional, so an absent field implies a 0 offset * "stable" IDs will differ Note that the format version has not been bumped as there are no known C++ STG ABIs in the wild. PiperOrigin-RevId: 563736222 Change-Id: I37bb5a4e67f3d417492f0273ff5e6b4dff506bb4
Diffstat (limited to 'stg.proto')
-rw-r--r--stg.proto12
1 files changed, 2 insertions, 10 deletions
diff --git a/stg.proto b/stg.proto
index e05684d..0937299 100644
--- a/stg.proto
+++ b/stg.proto
@@ -143,19 +143,11 @@ message BaseClass {
}
message Method {
- enum Kind {
- KIND_UNSPECIFIED = 0;
- NON_VIRTUAL = 1;
- STATIC = 2;
- VIRTUAL = 3;
- }
-
fixed32 id = 1;
string mangled_name = 2;
string name = 3;
- Kind kind = 4;
- optional uint64 vtable_offset = 5;
- fixed32 type_id = 6;
+ uint64 vtable_offset = 4;
+ fixed32 type_id = 5;
}
message Member {