replace intrinsic ids hash by dense table ids

This commit is contained in:
bQUARKz 2026-03-07 18:40:09 +00:00
parent 939896862c
commit 54045bb898
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8

View File

@ -16,6 +16,7 @@ import p.studio.compiler.pbs.semantics.PbsSemanticsErrors;
import p.studio.compiler.source.diagnostics.DiagnosticSink;
import p.studio.compiler.source.diagnostics.DiagnosticPhase;
import p.studio.compiler.source.identifiers.FileId;
import p.studio.compiler.source.tables.IntrinsicTable;
import p.studio.utilities.structures.ReadOnlyList;
import java.util.ArrayList;
@ -159,6 +160,7 @@ public final class PbsFrontendCompiler {
}
}
final var returnSlotsByCallableAndArity = new HashMap<String, Integer>();
final var intrinsicIdTable = new IntrinsicTable();
for (final var declaredFn : ast.functions()) {
final var key = callableArityKey(declaredFn.name(), declaredFn.parameters().size());
final var retSlots = returnSlotsFor(declaredFn);
@ -221,7 +223,9 @@ public final class PbsFrontendCompiler {
new IRBackendExecutableFunction.IntrinsicCallMetadata(
intrinsic.canonicalName(),
intrinsic.canonicalVersion(),
intrinsicIdFor(intrinsic.canonicalName(), intrinsic.canonicalVersion())),
intrinsicIdTable
.register(intrinsic.canonicalName(), intrinsic.canonicalVersion())
.getId()),
callExpr.span()));
continue;
}
@ -263,12 +267,6 @@ public final class PbsFrontendCompiler {
return ReadOnlyList.wrap(executableFunctions);
}
private int intrinsicIdFor(
final String canonicalName,
final long canonicalVersion) {
return (canonicalName + "#" + canonicalVersion).hashCode();
}
private int returnSlotsFor(final PbsAst.FunctionDecl functionDecl) {
return switch (functionDecl.returnKind()) {
case INFERRED_UNIT, EXPLICIT_UNIT -> 0;