diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-02-07 13:30:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-07 13:30:59 -0500 |
| commit | 9acf06d28ac77a52028697dc01f42fd96c230ca9 (patch) | |
| tree | 6c90921e6437293e84f137adce8364550f43ebb4 /src/value.zig | |
| parent | 3db130ff3d8175adce610f7805a149810cf7989d (diff) | |
| parent | db9500a31401c65327a4fd556f50d74ce75fb858 (diff) | |
| download | zig-9acf06d28ac77a52028697dc01f42fd96c230ca9.tar.gz zig-9acf06d28ac77a52028697dc01f42fd96c230ca9.zip | |
Merge pull request #10803 from ziglang/decl-has-lib-name
stage2: store externs lib name as part of decl
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/value.zig b/src/value.zig index 1a7f51ecd5..cc6827b0cc 100644 --- a/src/value.zig +++ b/src/value.zig @@ -263,9 +263,9 @@ pub const Value = extern union { .int_big_negative, => Payload.BigInt, - .extern_fn, - .decl_ref, - => Payload.Decl, + .extern_fn => Payload.ExternFn, + + .decl_ref => Payload.Decl, .repeated, .eu_payload, @@ -477,7 +477,7 @@ pub const Value = extern union { return Value{ .ptr_otherwise = &new_payload.base }; }, .function => return self.copyPayloadShallow(arena, Payload.Function), - .extern_fn => return self.copyPayloadShallow(arena, Payload.Decl), + .extern_fn => return self.copyPayloadShallow(arena, Payload.ExternFn), .variable => return self.copyPayloadShallow(arena, Payload.Variable), .decl_ref => return self.copyPayloadShallow(arena, Payload.Decl), .decl_ref_mut => return self.copyPayloadShallow(arena, Payload.DeclRefMut), @@ -1842,9 +1842,10 @@ pub const Value = extern union { pub fn pointerDecl(val: Value) ?*Module.Decl { return switch (val.tag()) { .decl_ref_mut => val.castTag(.decl_ref_mut).?.data.decl, - .extern_fn, .decl_ref => val.cast(Payload.Decl).?.data, + .extern_fn => val.castTag(.extern_fn).?.data.owner_decl, .function => val.castTag(.function).?.data.owner_decl, .variable => val.castTag(.variable).?.data.owner_decl, + .decl_ref => val.cast(Payload.Decl).?.data, else => null, }; } @@ -1911,9 +1912,10 @@ pub const Value = extern union { pub fn markReferencedDeclsAlive(val: Value) void { switch (val.tag()) { .decl_ref_mut => return val.castTag(.decl_ref_mut).?.data.decl.markAlive(), - .extern_fn, .decl_ref => return val.cast(Payload.Decl).?.data.markAlive(), + .extern_fn => return val.castTag(.extern_fn).?.data.owner_decl.markAlive(), .function => return val.castTag(.function).?.data.owner_decl.markAlive(), .variable => return val.castTag(.variable).?.data.owner_decl.markAlive(), + .decl_ref => return val.cast(Payload.Decl).?.data.markAlive(), .repeated, .eu_payload, @@ -3301,6 +3303,11 @@ pub const Value = extern union { data: *Module.Fn, }; + pub const ExternFn = struct { + base: Payload, + data: *Module.ExternFn, + }; + pub const Decl = struct { base: Payload, data: *Module.Decl, |
