| ... | @@ -654,15 +654,15 @@ fn resolveSymbolsInArchives(wasm: *Wasm) !void { | ... | @@ -654,15 +654,15 @@ fn resolveSymbolsInArchives(wasm: *Wasm) !void { |
| 654 | fn validateFeatures( | 654 | fn validateFeatures( |
| 655 | wasm: *const Wasm, | 655 | wasm: *const Wasm, |
| 656 | arena: Allocator, | 656 | arena: Allocator, |
| 657 | to_emit: *[@typeInfo(std.Target.wasm.Feature).Enum.fields.len]bool, | 657 | to_emit: *[@typeInfo(types.Feature.Tag).Enum.fields.len]bool, |
| 658 | emit_features_count: *u32, | 658 | emit_features_count: *u32, |
| 659 | ) !void { | 659 | ) !void { |
| 660 | const cpu_features = wasm.base.options.target.cpu.features; | 660 | const cpu_features = wasm.base.options.target.cpu.features; |
| 661 | const infer = cpu_features.isEmpty(); // when the user did not define any features, we infer them from linked objects. | 661 | const infer = cpu_features.isEmpty(); // when the user did not define any features, we infer them from linked objects. |
| 662 | var allowed = std.AutoHashMap(std.Target.wasm.Feature, void).init(arena); | 662 | var allowed = std.AutoHashMap(types.Feature.Tag, void).init(arena); |
| 663 | var used = std.AutoArrayHashMap(std.Target.wasm.Feature, []const u8).init(arena); | 663 | var used = std.AutoArrayHashMap(types.Feature.Tag, []const u8).init(arena); |
| 664 | var disallowed = std.AutoHashMap(std.Target.wasm.Feature, []const u8).init(arena); | 664 | var disallowed = std.AutoHashMap(types.Feature.Tag, []const u8).init(arena); |
| 665 | var required = std.AutoHashMap(std.Target.wasm.Feature, []const u8).init(arena); | 665 | var required = std.AutoHashMap(types.Feature.Tag, []const u8).init(arena); |
| 666 | | 666 | |
| 667 | // when false, we fail linking. We only verify this after a loop to catch all invalid features. | 667 | // when false, we fail linking. We only verify this after a loop to catch all invalid features. |
| 668 | var valid_feature_set = true; | 668 | var valid_feature_set = true; |
| ... | @@ -674,7 +674,7 @@ fn validateFeatures( | ... | @@ -674,7 +674,7 @@ fn validateFeatures( |
| 674 | // std.builtin.Type.EnumField | 674 | // std.builtin.Type.EnumField |
| 675 | inline for (@typeInfo(std.Target.wasm.Feature).Enum.fields) |feature_field| { | 675 | inline for (@typeInfo(std.Target.wasm.Feature).Enum.fields) |feature_field| { |
| 676 | if (cpu_features.isEnabled(feature_field.value)) { | 676 | if (cpu_features.isEnabled(feature_field.value)) { |
| 677 | allowed.putAssumeCapacityNoClobber(@intToEnum(std.Target.wasm.Feature, feature_field.value), {}); | 677 | allowed.putAssumeCapacityNoClobber(@intToEnum(types.Feature.Tag, feature_field.value), {}); |
| 678 | } | 678 | } |
| 679 | } | 679 | } |
| 680 | } | 680 | } |
| ... | @@ -730,7 +730,7 @@ fn validateFeatures( | ... | @@ -730,7 +730,7 @@ fn validateFeatures( |
| 730 | | 730 | |
| 731 | // For each linked object, validate the required and disallowed features | 731 | // For each linked object, validate the required and disallowed features |
| 732 | for (wasm.objects.items) |object| { | 732 | for (wasm.objects.items) |object| { |
| 733 | var object_used_features = std.AutoHashMap(std.Target.wasm.Feature, void).init(arena); | 733 | var object_used_features = std.AutoHashMap(types.Feature.Tag, void).init(arena); |
| 734 | try object_used_features.ensureTotalCapacity(@intCast(u32, object.features.len)); | 734 | try object_used_features.ensureTotalCapacity(@intCast(u32, object.features.len)); |
| 735 | for (object.features) |feature| { | 735 | for (object.features) |feature| { |
| 736 | if (feature.prefix == .disallowed) continue; // already defined in 'disallowed' set. | 736 | if (feature.prefix == .disallowed) continue; // already defined in 'disallowed' set. |
| ... | @@ -764,7 +764,7 @@ fn validateFeatures( | ... | @@ -764,7 +764,7 @@ fn validateFeatures( |
| 764 | if (allowed.count() > 0) { | 764 | if (allowed.count() > 0) { |
| 765 | emit_features_count.* = allowed.count(); | 765 | emit_features_count.* = allowed.count(); |
| 766 | for (to_emit) |*feature_enabled, feature_index| { | 766 | for (to_emit) |*feature_enabled, feature_index| { |
| 767 | feature_enabled.* = allowed.contains(@intToEnum(std.Target.wasm.Feature, feature_index)); | 767 | feature_enabled.* = allowed.contains(@intToEnum(types.Feature.Tag, feature_index)); |
| 768 | } | 768 | } |
| 769 | } | 769 | } |
| 770 | } | 770 | } |
| ... | @@ -2277,7 +2277,7 @@ pub fn flushModule(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Nod | ... | @@ -2277,7 +2277,7 @@ pub fn flushModule(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Nod |
| 2277 | } | 2277 | } |
| 2278 | | 2278 | |
| 2279 | var emit_features_count: u32 = 0; | 2279 | var emit_features_count: u32 = 0; |
| 2280 | var enabled_features: [@typeInfo(std.Target.wasm.Feature).Enum.fields.len]bool = undefined; | 2280 | var enabled_features: [@typeInfo(types.Feature.Tag).Enum.fields.len]bool = undefined; |
| 2281 | try wasm.validateFeatures(arena, &enabled_features, &emit_features_count); | 2281 | try wasm.validateFeatures(arena, &enabled_features, &emit_features_count); |
| 2282 | try wasm.resolveSymbolsInArchives(); | 2282 | try wasm.resolveSymbolsInArchives(); |
| 2283 | try wasm.checkUndefinedSymbols(); | 2283 | try wasm.checkUndefinedSymbols(); |