replace intrinsic ids hash by dense table ids
This commit is contained in:
parent
939896862c
commit
54045bb898
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user