| ... | @@ -107,23 +107,17 @@ pub fn deinit(self: *ZigObject, allocator: Allocator) void { | ... | @@ -107,23 +107,17 @@ pub fn deinit(self: *ZigObject, allocator: Allocator) void { |
| 107 | } | 107 | } |
| 108 | self.relocs.deinit(allocator); | 108 | self.relocs.deinit(allocator); |
| 109 | | 109 | |
| 110 | { | 110 | for (self.navs.values()) |*meta| { |
| 111 | var it = self.navs.iterator(); | 111 | meta.exports.deinit(allocator); |
| 112 | while (it.next()) |entry| { | | |
| 113 | entry.value_ptr.exports.deinit(allocator); | | |
| 114 | } | | |
| 115 | self.navs.deinit(allocator); | | |
| 116 | } | 112 | } |
| | 113 | self.navs.deinit(allocator); |
| 117 | | 114 | |
| 118 | self.lazy_syms.deinit(allocator); | 115 | self.lazy_syms.deinit(allocator); |
| 119 | | 116 | |
| 120 | { | 117 | for (self.uavs.values()) |*meta| { |
| 121 | var it = self.uavs.iterator(); | 118 | meta.exports.deinit(allocator); |
| 122 | while (it.next()) |entry| { | | |
| 123 | entry.value_ptr.exports.deinit(allocator); | | |
| 124 | } | | |
| 125 | self.uavs.deinit(allocator); | | |
| 126 | } | 119 | } |
| | 120 | self.uavs.deinit(allocator); |
| 127 | | 121 | |
| 128 | for (self.tls_variables.values()) |*tlv| { | 122 | for (self.tls_variables.values()) |*tlv| { |
| 129 | tlv.deinit(allocator); | 123 | tlv.deinit(allocator); |
| ... | @@ -1721,8 +1715,8 @@ const TlsVariable = struct { | ... | @@ -1721,8 +1715,8 @@ const TlsVariable = struct { |
| 1721 | }; | 1715 | }; |
| 1722 | | 1716 | |
| 1723 | const AtomList = std.ArrayListUnmanaged(Atom.Index); | 1717 | const AtomList = std.ArrayListUnmanaged(Atom.Index); |
| 1724 | const NavTable = std.AutoHashMapUnmanaged(InternPool.Nav.Index, AvMetadata); | 1718 | const NavTable = std.AutoArrayHashMapUnmanaged(InternPool.Nav.Index, AvMetadata); |
| 1725 | const UavTable = std.AutoHashMapUnmanaged(InternPool.Index, AvMetadata); | 1719 | const UavTable = std.AutoArrayHashMapUnmanaged(InternPool.Index, AvMetadata); |
| 1726 | const LazySymbolTable = std.AutoArrayHashMapUnmanaged(InternPool.Index, LazySymbolMetadata); | 1720 | const LazySymbolTable = std.AutoArrayHashMapUnmanaged(InternPool.Index, LazySymbolMetadata); |
| 1727 | const TlsTable = std.AutoArrayHashMapUnmanaged(Atom.Index, TlsVariable); | 1721 | const TlsTable = std.AutoArrayHashMapUnmanaged(Atom.Index, TlsVariable); |
| 1728 | | 1722 | |
| ... | @@ -1874,9 +1868,9 @@ pub const OffsetTable = struct { | ... | @@ -1874,9 +1868,9 @@ pub const OffsetTable = struct { |
| 1874 | | 1868 | |
| 1875 | const x86_64 = struct { | 1869 | const x86_64 = struct { |
| 1876 | fn writeEntry(source_addr: i64, target_addr: i64, buf: *[max_jump_seq_len]u8) ![]u8 { | 1870 | fn writeEntry(source_addr: i64, target_addr: i64, buf: *[max_jump_seq_len]u8) ![]u8 { |
| 1877 | const disp = @as(i64, @intCast(target_addr)) - source_addr - 4; | 1871 | const disp = @as(i64, @intCast(target_addr)) - source_addr - 5; |
| 1878 | var bytes = [_]u8{ | 1872 | var bytes = [_]u8{ |
| 1879 | 0xe8, 0x00, 0x00, 0x00, 0x00, // jmp rel32 | 1873 | 0xe9, 0x00, 0x00, 0x00, 0x00, // jmp rel32 |
| 1880 | }; | 1874 | }; |
| 1881 | assert(bytes.len == entrySize(.x86_64)); | 1875 | assert(bytes.len == entrySize(.x86_64)); |
| 1882 | mem.writeInt(i32, bytes[1..][0..4], @intCast(disp), .little); | 1876 | mem.writeInt(i32, bytes[1..][0..4], @intCast(disp), .little); |