diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsFrontendCompiler.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsFrontendCompiler.java index 1f68eeef..b3069cdf 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsFrontendCompiler.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsFrontendCompiler.java @@ -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(); + 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;