spirv: TypeConstantCache
This commit is contained in:
@@ -125,6 +125,8 @@ sections: struct {
|
||||
// OpModuleProcessed - skip for now.
|
||||
/// Annotation instructions (OpDecorate etc).
|
||||
annotations: Section = .{},
|
||||
/// Type and constant declarations that are generated by the TypeConstantCache.
|
||||
types_and_constants: Section = .{},
|
||||
/// Type declarations, constants, global variables
|
||||
/// Below this section, OpLine and OpNoLine is allowed.
|
||||
types_globals_constants: Section = .{},
|
||||
@@ -182,6 +184,7 @@ pub fn deinit(self: *Module) void {
|
||||
self.sections.debug_strings.deinit(self.gpa);
|
||||
self.sections.debug_names.deinit(self.gpa);
|
||||
self.sections.annotations.deinit(self.gpa);
|
||||
self.sections.types_and_constants(self.gpa);
|
||||
self.sections.types_globals_constants.deinit(self.gpa);
|
||||
self.sections.functions.deinit(self.gpa);
|
||||
|
||||
@@ -334,6 +337,7 @@ pub fn flush(self: *Module, file: std.fs.File) !void {
|
||||
self.sections.debug_strings.toWords(),
|
||||
self.sections.debug_names.toWords(),
|
||||
self.sections.annotations.toWords(),
|
||||
self.sections.types_constants.toWords(),
|
||||
self.sections.types_globals_constants.toWords(),
|
||||
globals.toWords(),
|
||||
self.sections.functions.toWords(),
|
||||
@@ -883,3 +887,12 @@ pub fn declareEntryPoint(self: *Module, decl_index: Decl.Index, name: []const u8
|
||||
.name = try self.arena.dupe(u8, name),
|
||||
});
|
||||
}
|
||||
|
||||
pub fn debugName(self: *Module, target: IdResult, comptime fmt: []const u8, args: anytype) !void {
|
||||
const name = try std.fmt.allocPrint(self.gpa, fmt, args);
|
||||
defer self.gpa.free(name);
|
||||
try debug.emit(self.gpa, .OpName, .{
|
||||
.target = result_id,
|
||||
.name = name,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user