aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/spirv/Module.zig
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2023-10-07 15:23:39 +0200
committerRobin Voetter <robin@voetter.nl>2023-10-15 13:59:26 +0200
commit31ad2d72a756b837b153ae63dfc0e6df608033b4 (patch)
tree808bb2ce70edde3ad38a1110fcca6342326a8f05 /src/codegen/spirv/Module.zig
parenta3d77bdba9f8c6c3a88cfdfc009e1fabff22d2eb (diff)
downloadzig-31ad2d72a756b837b153ae63dfc0e6df608033b4.tar.gz
zig-31ad2d72a756b837b153ae63dfc0e6df608033b4.zip
spirv: use CacheString for source_file_names instead of []const u8
Diffstat (limited to 'src/codegen/spirv/Module.zig')
-rw-r--r--src/codegen/spirv/Module.zig11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/codegen/spirv/Module.zig b/src/codegen/spirv/Module.zig
index 2aacc5b748..c16e1a6d72 100644
--- a/src/codegen/spirv/Module.zig
+++ b/src/codegen/spirv/Module.zig
@@ -11,9 +11,6 @@ const std = @import("std");
const Allocator = std.mem.Allocator;
const assert = std.debug.assert;
-const ZigModule = @import("../../Module.zig");
-const ZigDecl = ZigModule.Decl;
-
const spec = @import("spec.zig");
const Word = spec.Word;
const IdRef = spec.IdRef;
@@ -147,7 +144,7 @@ next_result_id: Word,
/// Cache for results of OpString instructions for module file names fed to OpSource.
/// Since OpString is pretty much only used for those, we don't need to keep track of all strings,
/// just the ones for OpLine. Note that OpLine needs the result of OpString, and not that of OpSource.
-source_file_names: std.StringHashMapUnmanaged(IdRef) = .{},
+source_file_names: std.AutoArrayHashMapUnmanaged(CacheString, IdRef) = .{},
/// SPIR-V type- and constant cache. This structure is used to store information about these in a more
/// efficient manner.
@@ -460,9 +457,9 @@ pub fn addFunction(self: *Module, decl_index: Decl.Index, func: Fn) !void {
/// Fetch the result-id of an OpString instruction that encodes the path of the source
/// file of the decl. This function may also emit an OpSource with source-level information regarding
/// the decl.
-pub fn resolveSourceFileName(self: *Module, zig_module: *ZigModule, zig_decl: *ZigDecl) !IdRef {
- const path = zig_decl.getFileScope(zig_module).sub_file_path;
- const result = try self.source_file_names.getOrPut(self.gpa, path);
+pub fn resolveSourceFileName(self: *Module, path: []const u8) !IdRef {
+ const path_ref = try self.resolveString(path);
+ const result = try self.source_file_names.getOrPut(self.gpa, path_ref);
if (!result.found_existing) {
const file_result_id = self.allocId();
result.value_ptr.* = file_result_id;