implements PR-09.1: remove moduleKey from FE/BE contracts
This commit is contained in:
parent
98adb67bc0
commit
32ab6d7a76
@ -360,7 +360,6 @@ public final class PbsFrontendCompiler {
|
||||
final var callableShapeId = callableShapeId(declaredFn, typeSurfaceTable, callableShapeTable);
|
||||
final var callableId = callableIdTable.register(
|
||||
normalizedModuleId,
|
||||
normalizedModuleKey,
|
||||
declaredCallable.callableName(),
|
||||
declaredFn.parameters().size(),
|
||||
callableShapeSurface(callableShapeId, typeSurfaceTable, callableShapeTable));
|
||||
@ -376,7 +375,6 @@ public final class PbsFrontendCompiler {
|
||||
for (final var importedCallable : importedCallables) {
|
||||
final var callableId = callableIdTable.register(
|
||||
importedCallable.moduleId(),
|
||||
importedCallable.moduleKey(),
|
||||
importedCallable.callableName(),
|
||||
importedCallable.arity(),
|
||||
importedCallable.shapeSurface());
|
||||
@ -425,7 +423,6 @@ public final class PbsFrontendCompiler {
|
||||
instructions.add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@ -451,7 +448,6 @@ public final class PbsFrontendCompiler {
|
||||
executableFunctions.add(new IRBackendExecutableFunction(
|
||||
fileId,
|
||||
normalizedModuleId,
|
||||
normalizedModuleKey,
|
||||
callable.callableName(),
|
||||
functionCallableId,
|
||||
start,
|
||||
@ -670,7 +666,6 @@ public final class PbsFrontendCompiler {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@ -926,7 +921,6 @@ public final class PbsFrontendCompiler {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
|
||||
"",
|
||||
"",
|
||||
new IRBackendExecutableFunction.HostCallMetadata(
|
||||
host.abiModule(),
|
||||
host.abiMethod(),
|
||||
@ -948,7 +942,6 @@ public final class PbsFrontendCompiler {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata(
|
||||
intrinsic.canonicalName(),
|
||||
@ -977,7 +970,6 @@ public final class PbsFrontendCompiler {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
calleeSignature.moduleId(),
|
||||
calleeSignature.moduleKey(),
|
||||
calleeSignature.callableName(),
|
||||
calleeCallableId,
|
||||
null,
|
||||
@ -1127,7 +1119,7 @@ public final class PbsFrontendCompiler {
|
||||
final ExecutableLoweringContext context) {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
jumpKind,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -1145,7 +1137,7 @@ public final class PbsFrontendCompiler {
|
||||
final ExecutableLoweringContext context) {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.LABEL,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -1163,7 +1155,7 @@ public final class PbsFrontendCompiler {
|
||||
final ExecutableLoweringContext context) {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.PUSH_I32,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -1181,7 +1173,7 @@ public final class PbsFrontendCompiler {
|
||||
final ExecutableLoweringContext context) {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.PUSH_CONST,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -1199,7 +1191,7 @@ public final class PbsFrontendCompiler {
|
||||
final ExecutableLoweringContext context) {
|
||||
context.instructions().add(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.GET_LOCAL,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
|
||||
@ -46,7 +46,7 @@ class PbsGoldenArtifactsTest {
|
||||
final var callable = file.callableSignatures().get(i);
|
||||
out.append(i)
|
||||
.append(':')
|
||||
.append(callable.moduleKey())
|
||||
.append(callable.moduleId().isNone() ? "-" : callable.moduleId().getIndex())
|
||||
.append("::")
|
||||
.append(callable.callableName())
|
||||
.append('/')
|
||||
@ -61,7 +61,7 @@ class PbsGoldenArtifactsTest {
|
||||
out.append("fn#")
|
||||
.append(i)
|
||||
.append(':')
|
||||
.append(fn.moduleKey())
|
||||
.append(fn.moduleId().isNone() ? "-" : fn.moduleId().getIndex())
|
||||
.append("::")
|
||||
.append(fn.callableName())
|
||||
.append(" id=")
|
||||
|
||||
@ -211,7 +211,6 @@ class PBSFrontendPhaseServiceTest {
|
||||
|
||||
assertNotNull(callInstruction.calleeModuleId());
|
||||
assertEquals(targetFn.moduleId().getIndex(), callInstruction.calleeModuleId().getIndex());
|
||||
assertEquals(targetFn.moduleKey(), callInstruction.calleeModuleKey());
|
||||
assertTrue(callerFn.moduleId().getIndex() != callInstruction.calleeModuleId().getIndex());
|
||||
}
|
||||
|
||||
@ -916,7 +915,8 @@ class PBSFrontendPhaseServiceTest {
|
||||
.filter(function -> "frame".equals(function.callableName()))
|
||||
.findFirst();
|
||||
final var executableNames = irBackend.getExecutableFunctions().stream()
|
||||
.map(function -> function.callableName() + "@" + function.moduleKey())
|
||||
.map(function -> function.callableName() + "@"
|
||||
+ (function.moduleId().isNone() ? "-" : function.moduleId().getIndex()))
|
||||
.toList();
|
||||
assertTrue(
|
||||
frameExecutableOptional.isPresent(),
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
callables=2
|
||||
0:::b/1|(simple:int)->simple:int
|
||||
1:::a/0|()->simple:int
|
||||
0:-::b/1|(simple:int)->simple:int
|
||||
1:-::a/0|()->simple:int
|
||||
intrinsics=0
|
||||
fn#0:::b id=0
|
||||
fn#0:-::b id=0
|
||||
GET_LOCAL calleeId=- intrinsicId=-
|
||||
RET calleeId=- intrinsicId=-
|
||||
fn#1:::a id=1
|
||||
fn#1:-::a id=1
|
||||
PUSH_I32 calleeId=- intrinsicId=-
|
||||
CALL_FUNC calleeId=0 intrinsicId=-
|
||||
RET calleeId=- intrinsicId=-
|
||||
|
||||
@ -299,8 +299,8 @@ public class LowerToIRVMService {
|
||||
final var entryPointModuleId = backend.getEntryPointModuleId();
|
||||
final var sorted = new ArrayList<>(backend.getExecutableFunctions().asList());
|
||||
sorted.sort((left, right) -> {
|
||||
final var leftModuleKey = moduleSortKey(backend, left.moduleId(), left.moduleKey());
|
||||
final var rightModuleKey = moduleSortKey(backend, right.moduleId(), right.moduleKey());
|
||||
final var leftModuleKey = moduleSortKey(backend, left.moduleId());
|
||||
final var rightModuleKey = moduleSortKey(backend, right.moduleId());
|
||||
final var moduleCmp = leftModuleKey.compareTo(rightModuleKey);
|
||||
if (moduleCmp != 0) {
|
||||
return moduleCmp;
|
||||
@ -367,15 +367,14 @@ public class LowerToIRVMService {
|
||||
|
||||
private String moduleSortKey(
|
||||
final IRBackend backend,
|
||||
final ModuleId moduleId,
|
||||
final String fallbackModuleKey) {
|
||||
final ModuleId moduleId) {
|
||||
if (moduleId != null && !moduleId.isNone()) {
|
||||
final var index = moduleId.getIndex();
|
||||
if (index >= 0 && index < backend.getModulePool().size()) {
|
||||
return canonicalModuleSortKey(backend.getModulePool().get(index));
|
||||
}
|
||||
}
|
||||
return fallbackModuleKey == null ? "" : fallbackModuleKey;
|
||||
return "";
|
||||
}
|
||||
|
||||
private String canonicalModuleSortKey(final ModuleReference reference) {
|
||||
|
||||
@ -45,7 +45,6 @@ class GoldenArtifactsTest {
|
||||
return IRBackend.builder()
|
||||
.executableFunctions(ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app/main",
|
||||
"main",
|
||||
new CallableId(0),
|
||||
0,
|
||||
@ -58,15 +57,12 @@ class GoldenArtifactsTest {
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.HostCallMetadata("gfx", "draw_pixel", 1, 0, 0),
|
||||
null,
|
||||
Span.none()),
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata("input.pad", 1, new IntrinsicId(0)),
|
||||
0,
|
||||
@ -75,7 +71,6 @@ class GoldenArtifactsTest {
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
|
||||
@ -264,7 +264,6 @@ class LowerToIRVMServiceTest {
|
||||
final ReadOnlyList<IRBackendExecutableFunction.Instruction> instructions) {
|
||||
return new IRBackendExecutableFunction(
|
||||
new FileId(0),
|
||||
moduleKey,
|
||||
name,
|
||||
new CallableId(callableId),
|
||||
0,
|
||||
@ -296,7 +295,6 @@ class LowerToIRVMServiceTest {
|
||||
return new IRBackendExecutableFunction(
|
||||
new FileId(0),
|
||||
new ModuleId(moduleId),
|
||||
moduleKey,
|
||||
name,
|
||||
new CallableId(callableId),
|
||||
0,
|
||||
@ -313,7 +311,6 @@ class LowerToIRVMServiceTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none());
|
||||
@ -325,7 +322,7 @@ class LowerToIRVMServiceTest {
|
||||
final int calleeCallableId) {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
moduleKey,
|
||||
ModuleId.none(),
|
||||
name,
|
||||
new CallableId(calleeCallableId),
|
||||
null,
|
||||
@ -341,7 +338,7 @@ class LowerToIRVMServiceTest {
|
||||
final int expectedRetSlots) {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
moduleKey,
|
||||
ModuleId.none(),
|
||||
name,
|
||||
new CallableId(calleeCallableId),
|
||||
null,
|
||||
@ -360,7 +357,6 @@ class LowerToIRVMServiceTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
|
||||
"",
|
||||
"",
|
||||
new IRBackendExecutableFunction.HostCallMetadata(module, name, version, argSlots, retSlots),
|
||||
null,
|
||||
Span.none());
|
||||
@ -373,7 +369,6 @@ class LowerToIRVMServiceTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata(canonicalName, canonicalVersion, new IntrinsicId(intrinsicId)),
|
||||
0,
|
||||
@ -384,7 +379,7 @@ class LowerToIRVMServiceTest {
|
||||
private static IRBackendExecutableFunction.Instruction label(final String label) {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.LABEL,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -399,7 +394,7 @@ class LowerToIRVMServiceTest {
|
||||
private static IRBackendExecutableFunction.Instruction jmp(final String target) {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.JMP,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
|
||||
@ -322,7 +322,6 @@ class OptimizeIRVMEquivalenceHarnessTest {
|
||||
final ReadOnlyList<IRBackendExecutableFunction.Instruction> instructions) {
|
||||
return new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app",
|
||||
name,
|
||||
new CallableId(callableId),
|
||||
0,
|
||||
@ -339,8 +338,6 @@ class OptimizeIRVMEquivalenceHarnessTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Span.none());
|
||||
@ -355,8 +352,6 @@ class OptimizeIRVMEquivalenceHarnessTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.HostCallMetadata(module, name, version, argSlots, retSlots),
|
||||
null,
|
||||
Span.none());
|
||||
@ -371,7 +366,6 @@ class OptimizeIRVMEquivalenceHarnessTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata(canonicalName, canonicalVersion, new IntrinsicId(intrinsicId)),
|
||||
|
||||
@ -188,7 +188,6 @@ class BackendGateIIntegrationTest {
|
||||
final ReadOnlyList<IRBackendExecutableFunction.Instruction> instructions) {
|
||||
return new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app/main",
|
||||
name,
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -205,7 +204,6 @@ class BackendGateIIntegrationTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none());
|
||||
@ -220,7 +218,6 @@ class BackendGateIIntegrationTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
|
||||
"",
|
||||
"",
|
||||
new IRBackendExecutableFunction.HostCallMetadata(module, name, version, argSlots, retSlots),
|
||||
null,
|
||||
Span.none());
|
||||
@ -233,7 +230,6 @@ class BackendGateIIntegrationTest {
|
||||
return new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata(canonicalName, canonicalVersion, new IntrinsicId(intrinsicId)),
|
||||
0,
|
||||
|
||||
@ -28,7 +28,6 @@ class BackendSafetyGateSUTest {
|
||||
final var backend = IRBackend.builder()
|
||||
.executableFunctions(ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -40,7 +39,7 @@ class BackendSafetyGateSUTest {
|
||||
ReadOnlyList.from(
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
"app",
|
||||
p.studio.compiler.source.identifiers.ModuleId.none(),
|
||||
"missing",
|
||||
new CallableId(99),
|
||||
null,
|
||||
@ -51,7 +50,6 @@ class BackendSafetyGateSUTest {
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
@ -113,7 +111,6 @@ class BackendSafetyGateSUTest {
|
||||
final var backend = IRBackend.builder()
|
||||
.executableFunctions(ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -125,7 +122,6 @@ class BackendSafetyGateSUTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
|
||||
@ -38,7 +38,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
ctx.irBackend = IRBackend.builder()
|
||||
.executableFunctions(ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(0),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -50,7 +49,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
@ -71,7 +69,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
ctx.irBackend = IRBackend.builder()
|
||||
.executableFunctions(ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(0),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -83,7 +80,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
@ -104,7 +100,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
ctx.irBackend = IRBackend.builder()
|
||||
.executableFunctions(ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(9),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
10,
|
||||
@ -116,7 +111,7 @@ class LowerToIRVMPipelineStageTest {
|
||||
ReadOnlyList.from(
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
"app",
|
||||
p.studio.compiler.source.identifiers.ModuleId.none(),
|
||||
"missing",
|
||||
new CallableId(99),
|
||||
null,
|
||||
@ -125,7 +120,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
@ -149,7 +143,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
.executableFunctions(ReadOnlyList.from(
|
||||
new IRBackendExecutableFunction(
|
||||
new FileId(0),
|
||||
"app",
|
||||
"callee",
|
||||
new CallableId(2),
|
||||
0,
|
||||
@ -161,14 +154,12 @@ class LowerToIRVMPipelineStageTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
Span.none()),
|
||||
new IRBackendExecutableFunction(
|
||||
new FileId(0),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -180,7 +171,7 @@ class LowerToIRVMPipelineStageTest {
|
||||
ReadOnlyList.from(
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
"app",
|
||||
p.studio.compiler.source.identifiers.ModuleId.none(),
|
||||
"callee",
|
||||
new CallableId(2),
|
||||
null,
|
||||
@ -191,7 +182,6 @@ class LowerToIRVMPipelineStageTest {
|
||||
new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
|
||||
@ -6,17 +6,15 @@ import java.util.Objects;
|
||||
|
||||
public record CallableSignatureRef(
|
||||
ModuleId moduleId,
|
||||
String moduleKey,
|
||||
String callableName,
|
||||
int arity,
|
||||
String typeShape) {
|
||||
|
||||
public CallableSignatureRef(
|
||||
final String moduleKey,
|
||||
final String callableName,
|
||||
final int arity,
|
||||
final String typeShape) {
|
||||
this(ModuleId.none(), moduleKey, callableName, arity, typeShape);
|
||||
this(ModuleId.none(), callableName, arity, typeShape);
|
||||
}
|
||||
|
||||
public CallableSignatureRef {
|
||||
@ -24,7 +22,6 @@ public record CallableSignatureRef(
|
||||
if (!moduleId.isNone()) {
|
||||
moduleId.getIndex();
|
||||
}
|
||||
moduleKey = moduleKey == null ? "" : moduleKey;
|
||||
callableName = Objects.requireNonNull(callableName, "callableName");
|
||||
typeShape = typeShape == null ? "" : typeShape;
|
||||
if (callableName.isBlank()) {
|
||||
|
||||
@ -10,19 +10,17 @@ public class CallableTable extends InternTable<CallableId, CallableSignatureRef>
|
||||
}
|
||||
|
||||
public CallableId register(
|
||||
final String moduleKey,
|
||||
final String callableName,
|
||||
final int arity,
|
||||
final String typeShape) {
|
||||
return register(new CallableSignatureRef(ModuleId.none(), moduleKey, callableName, arity, typeShape));
|
||||
return register(new CallableSignatureRef(ModuleId.none(), callableName, arity, typeShape));
|
||||
}
|
||||
|
||||
public CallableId register(
|
||||
final ModuleId moduleId,
|
||||
final String moduleKey,
|
||||
final String callableName,
|
||||
final int arity,
|
||||
final String typeShape) {
|
||||
return register(new CallableSignatureRef(moduleId, moduleKey, callableName, arity, typeShape));
|
||||
return register(new CallableSignatureRef(moduleId, callableName, arity, typeShape));
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,9 +11,9 @@ class CallableTableTest {
|
||||
void shouldInternEqualCallableSignaturesToSameIdentifier() {
|
||||
final var table = new CallableTable();
|
||||
|
||||
final var first = table.register("app/main", "draw", 2, "(simple:int,simple:int)->unit");
|
||||
final var second = table.register("app/main", "draw", 2, "(simple:int,simple:int)->unit");
|
||||
final var third = table.register("app/main", "draw", 1, "(simple:int)->unit");
|
||||
final var first = table.register("draw", 2, "(simple:int,simple:int)->unit");
|
||||
final var second = table.register("draw", 2, "(simple:int,simple:int)->unit");
|
||||
final var third = table.register("draw", 1, "(simple:int)->unit");
|
||||
|
||||
assertEquals(first, second);
|
||||
assertEquals(2, table.size());
|
||||
@ -22,7 +22,7 @@ class CallableTableTest {
|
||||
|
||||
@Test
|
||||
void shouldRejectInvalidCallableSignatureReferenceContract() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new CallableSignatureRef("app/main", "", 1, "(unit)->unit"));
|
||||
assertThrows(IllegalArgumentException.class, () -> new CallableSignatureRef("app/main", "draw", -1, "(unit)->unit"));
|
||||
assertThrows(IllegalArgumentException.class, () -> new CallableSignatureRef("", 1, "(unit)->unit"));
|
||||
assertThrows(IllegalArgumentException.class, () -> new CallableSignatureRef("draw", -1, "(unit)->unit"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,7 +15,6 @@ import p.studio.utilities.structures.ReadOnlyList;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
@ -108,12 +107,10 @@ public class IRBackend {
|
||||
final var signature = localCallableSignatures.get(i);
|
||||
final var remappedModuleId = remapModuleId(
|
||||
signature.moduleId(),
|
||||
signature.moduleKey(),
|
||||
moduleRemap,
|
||||
"callable signature");
|
||||
remap[i] = callableTable.register(
|
||||
remappedModuleId,
|
||||
signature.moduleKey(),
|
||||
signature.callableName(),
|
||||
signature.arity(),
|
||||
signature.typeShape());
|
||||
@ -129,7 +126,6 @@ public class IRBackend {
|
||||
final var remappedInstructions = new ArrayList<IRBackendExecutableFunction.Instruction>(function.instructions().size());
|
||||
final var remappedFunctionModuleId = remapModuleId(
|
||||
function.moduleId(),
|
||||
function.moduleKey(),
|
||||
moduleRemap,
|
||||
"function");
|
||||
for (final var instruction : function.instructions()) {
|
||||
@ -151,13 +147,11 @@ public class IRBackend {
|
||||
}
|
||||
final var remappedCalleeModuleId = remapModuleId(
|
||||
instruction.calleeModuleId(),
|
||||
instruction.calleeModuleKey(),
|
||||
moduleRemap,
|
||||
"callee");
|
||||
remappedInstructions.add(new IRBackendExecutableFunction.Instruction(
|
||||
instruction.kind(),
|
||||
remappedCalleeModuleId,
|
||||
instruction.calleeModuleKey(),
|
||||
instruction.calleeCallableName(),
|
||||
remappedCallee,
|
||||
instruction.hostCall(),
|
||||
@ -171,7 +165,6 @@ public class IRBackend {
|
||||
return new IRBackendExecutableFunction(
|
||||
function.fileId(),
|
||||
remappedFunctionModuleId,
|
||||
function.moduleKey(),
|
||||
function.callableName(),
|
||||
remapCallableId(function.callableId(), callableRemap, "function"),
|
||||
function.sourceStart(),
|
||||
@ -186,7 +179,6 @@ public class IRBackend {
|
||||
|
||||
private ModuleId remapModuleId(
|
||||
final ModuleId localModuleId,
|
||||
final String moduleKey,
|
||||
final ModuleId[] moduleRemap,
|
||||
final String label) {
|
||||
if (localModuleId != null && !localModuleId.isNone()) {
|
||||
@ -196,33 +188,9 @@ public class IRBackend {
|
||||
}
|
||||
return moduleRemap[localIndex];
|
||||
}
|
||||
final var fallbackReference = moduleReferenceFromKey(moduleKey);
|
||||
if (fallbackReference != null) {
|
||||
return moduleTable.register(fallbackReference);
|
||||
}
|
||||
return ModuleId.none();
|
||||
}
|
||||
|
||||
private ModuleReference moduleReferenceFromKey(final String moduleKey) {
|
||||
if (moduleKey == null || moduleKey.isBlank()) {
|
||||
return null;
|
||||
}
|
||||
final var separator = moduleKey.indexOf(':');
|
||||
if (separator <= 0) {
|
||||
return null;
|
||||
}
|
||||
final var project = moduleKey.substring(0, separator).trim();
|
||||
final var rawPath = moduleKey.substring(separator + 1).trim();
|
||||
if (project.isBlank()) {
|
||||
return null;
|
||||
}
|
||||
if (rawPath.isBlank()) {
|
||||
return new ModuleReference(project, ReadOnlyList.empty());
|
||||
}
|
||||
final var segments = List.of(rawPath.split("/"));
|
||||
return new ModuleReference(project, ReadOnlyList.wrap(segments));
|
||||
}
|
||||
|
||||
private CallableId remapCallableId(
|
||||
final CallableId localCallableId,
|
||||
final CallableId[] callableRemap,
|
||||
|
||||
@ -12,7 +12,6 @@ import java.util.Objects;
|
||||
public record IRBackendExecutableFunction(
|
||||
FileId fileId,
|
||||
ModuleId moduleId,
|
||||
String moduleKey,
|
||||
String callableName,
|
||||
CallableId callableId,
|
||||
int sourceStart,
|
||||
@ -26,7 +25,6 @@ public record IRBackendExecutableFunction(
|
||||
|
||||
public IRBackendExecutableFunction(
|
||||
final FileId fileId,
|
||||
final String moduleKey,
|
||||
final String callableName,
|
||||
final CallableId callableId,
|
||||
final int sourceStart,
|
||||
@ -40,7 +38,6 @@ public record IRBackendExecutableFunction(
|
||||
this(
|
||||
fileId,
|
||||
ModuleId.none(),
|
||||
moduleKey,
|
||||
callableName,
|
||||
callableId,
|
||||
sourceStart,
|
||||
@ -59,7 +56,6 @@ public record IRBackendExecutableFunction(
|
||||
if (!moduleId.isNone()) {
|
||||
moduleId.getIndex();
|
||||
}
|
||||
moduleKey = moduleKey == null ? "" : moduleKey;
|
||||
callableName = Objects.requireNonNull(callableName, "callableName");
|
||||
if (callableName.isBlank()) {
|
||||
throw new IllegalArgumentException("callableName must not be blank");
|
||||
@ -88,7 +84,6 @@ public record IRBackendExecutableFunction(
|
||||
public record Instruction(
|
||||
InstructionKind kind,
|
||||
ModuleId calleeModuleId,
|
||||
String calleeModuleKey,
|
||||
String calleeCallableName,
|
||||
CallableId calleeCallableId,
|
||||
HostCallMetadata hostCall,
|
||||
@ -101,19 +96,17 @@ public record IRBackendExecutableFunction(
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final ModuleId calleeModuleId,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final CallableId calleeCallableId,
|
||||
final HostCallMetadata hostCall,
|
||||
final IntrinsicCallMetadata intrinsicCall,
|
||||
final Span span) {
|
||||
this(kind, calleeModuleId, calleeModuleKey, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
this(kind, calleeModuleId, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final ModuleId calleeModuleId,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final CallableId calleeCallableId,
|
||||
final HostCallMetadata hostCall,
|
||||
@ -121,36 +114,33 @@ public record IRBackendExecutableFunction(
|
||||
final Integer expectedArgSlots,
|
||||
final Integer expectedRetSlots,
|
||||
final Span span) {
|
||||
this(kind, calleeModuleId, calleeModuleKey, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
this(kind, calleeModuleId, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final ModuleId calleeModuleId,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final HostCallMetadata hostCall,
|
||||
final IntrinsicCallMetadata intrinsicCall,
|
||||
final Span span) {
|
||||
this(kind, calleeModuleId, calleeModuleKey, calleeCallableName, null, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
this(kind, calleeModuleId, calleeCallableName, null, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final ModuleId calleeModuleId,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final HostCallMetadata hostCall,
|
||||
final IntrinsicCallMetadata intrinsicCall,
|
||||
final Integer expectedArgSlots,
|
||||
final Integer expectedRetSlots,
|
||||
final Span span) {
|
||||
this(kind, calleeModuleId, calleeModuleKey, calleeCallableName, null, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
this(kind, calleeModuleId, calleeCallableName, null, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final CallableId calleeCallableId,
|
||||
final HostCallMetadata hostCall,
|
||||
@ -160,23 +150,21 @@ public record IRBackendExecutableFunction(
|
||||
final Integer expectedArgSlots,
|
||||
final Integer expectedRetSlots,
|
||||
final Span span) {
|
||||
this(kind, ModuleId.none(), calleeModuleKey, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, label, targetLabel, expectedArgSlots, expectedRetSlots, span);
|
||||
this(kind, ModuleId.none(), calleeCallableName, calleeCallableId, hostCall, intrinsicCall, label, targetLabel, expectedArgSlots, expectedRetSlots, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final CallableId calleeCallableId,
|
||||
final HostCallMetadata hostCall,
|
||||
final IntrinsicCallMetadata intrinsicCall,
|
||||
final Span span) {
|
||||
this(kind, ModuleId.none(), calleeModuleKey, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
this(kind, ModuleId.none(), calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final CallableId calleeCallableId,
|
||||
final HostCallMetadata hostCall,
|
||||
@ -184,29 +172,27 @@ public record IRBackendExecutableFunction(
|
||||
final Integer expectedArgSlots,
|
||||
final Integer expectedRetSlots,
|
||||
final Span span) {
|
||||
this(kind, ModuleId.none(), calleeModuleKey, calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
this(kind, ModuleId.none(), calleeCallableName, calleeCallableId, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final HostCallMetadata hostCall,
|
||||
final IntrinsicCallMetadata intrinsicCall,
|
||||
final Span span) {
|
||||
this(kind, ModuleId.none(), calleeModuleKey, calleeCallableName, null, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
this(kind, ModuleId.none(), calleeCallableName, null, hostCall, intrinsicCall, null, null, null, null, span);
|
||||
}
|
||||
|
||||
public Instruction(
|
||||
final InstructionKind kind,
|
||||
final String calleeModuleKey,
|
||||
final String calleeCallableName,
|
||||
final HostCallMetadata hostCall,
|
||||
final IntrinsicCallMetadata intrinsicCall,
|
||||
final Integer expectedArgSlots,
|
||||
final Integer expectedRetSlots,
|
||||
final Span span) {
|
||||
this(kind, ModuleId.none(), calleeModuleKey, calleeCallableName, null, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
this(kind, ModuleId.none(), calleeCallableName, null, hostCall, intrinsicCall, null, null, expectedArgSlots, expectedRetSlots, span);
|
||||
}
|
||||
|
||||
public Instruction {
|
||||
@ -216,7 +202,6 @@ public record IRBackendExecutableFunction(
|
||||
if (!calleeModuleId.isNone()) {
|
||||
calleeModuleId.getIndex();
|
||||
}
|
||||
calleeModuleKey = calleeModuleKey == null ? "" : calleeModuleKey;
|
||||
calleeCallableName = calleeCallableName == null ? "" : calleeCallableName;
|
||||
label = label == null ? "" : label;
|
||||
targetLabel = targetLabel == null ? "" : targetLabel;
|
||||
|
||||
@ -21,7 +21,7 @@ class IRBackendExecutableContractTest {
|
||||
void callInstructionMustRequireCategorySpecificMetadata() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_HOST,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -29,7 +29,7 @@ class IRBackendExecutableContractTest {
|
||||
|
||||
final var callFunc = new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
"app/main",
|
||||
ModuleId.none(),
|
||||
"foo",
|
||||
new CallableId(7),
|
||||
null,
|
||||
@ -42,7 +42,6 @@ class IRBackendExecutableContractTest {
|
||||
void functionContractMustRejectInvalidSlotAndSpanBounds() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
10,
|
||||
@ -56,7 +55,6 @@ class IRBackendExecutableContractTest {
|
||||
|
||||
final var thrown = assertThrows(IllegalArgumentException.class, () -> new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app",
|
||||
"main",
|
||||
new CallableId(1),
|
||||
0,
|
||||
@ -74,7 +72,7 @@ class IRBackendExecutableContractTest {
|
||||
void instructionContractMustRejectMixedMetadataKinds() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_FUNC,
|
||||
"app/main",
|
||||
ModuleId.none(),
|
||||
"foo",
|
||||
new CallableId(1),
|
||||
new IRBackendExecutableFunction.HostCallMetadata("gfx", "draw", 1, 0, 0),
|
||||
@ -93,7 +91,7 @@ class IRBackendExecutableContractTest {
|
||||
void jumpAndLabelContractMustRequireNames() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.LABEL,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -106,7 +104,7 @@ class IRBackendExecutableContractTest {
|
||||
|
||||
assertThrows(IllegalArgumentException.class, () -> new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.JMP,
|
||||
"",
|
||||
ModuleId.none(),
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
@ -125,7 +123,6 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.empty(),
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app/main",
|
||||
"entry",
|
||||
new CallableId(0),
|
||||
0,
|
||||
@ -137,21 +134,18 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.HALT,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
Span.none())),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new CallableSignatureRef("app/main", "entry", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef("entry", 0, "() -> unit")),
|
||||
ReadOnlyList.empty());
|
||||
final var fileB = new IRBackendFile(
|
||||
new FileId(2),
|
||||
ReadOnlyList.empty(),
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(2),
|
||||
"app/main",
|
||||
"aux",
|
||||
new CallableId(0),
|
||||
11,
|
||||
@ -163,14 +157,12 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
Span.none())),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new CallableSignatureRef("app/main", "aux", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef("aux", 0, "() -> unit")),
|
||||
ReadOnlyList.empty());
|
||||
|
||||
final var aggregator = IRBackend.aggregator();
|
||||
@ -213,7 +205,6 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.empty(),
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
"app/main",
|
||||
"entry",
|
||||
new CallableId(0),
|
||||
0,
|
||||
@ -225,20 +216,18 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata("core.color.pack", 1, new IntrinsicId(0)),
|
||||
Span.none())),
|
||||
Span.none())),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new CallableSignatureRef("app/main", "entry", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef("entry", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new IntrinsicReference("core.color.pack", 1)));
|
||||
final var fileB = new IRBackendFile(
|
||||
new FileId(2),
|
||||
ReadOnlyList.empty(),
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(2),
|
||||
"app/main",
|
||||
"aux",
|
||||
new CallableId(0),
|
||||
11,
|
||||
@ -250,13 +239,12 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.CALL_INTRINSIC,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
new IRBackendExecutableFunction.IntrinsicCallMetadata("core.color.pack", 1, new IntrinsicId(0)),
|
||||
Span.none())),
|
||||
Span.none())),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new CallableSignatureRef("app/main", "aux", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef("aux", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new IntrinsicReference("core.color.pack", 1)));
|
||||
|
||||
final var aggregator = IRBackend.aggregator();
|
||||
@ -280,7 +268,6 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.empty(),
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(7),
|
||||
"app/main",
|
||||
"main",
|
||||
new CallableId(0),
|
||||
10,
|
||||
@ -292,13 +279,12 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
instructionSpan)),
|
||||
functionSpan)),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new CallableSignatureRef("app/main", "main", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef("main", 0, "() -> unit")),
|
||||
ReadOnlyList.empty());
|
||||
|
||||
final var aggregator = IRBackend.aggregator();
|
||||
@ -323,7 +309,6 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(1),
|
||||
new ModuleId(0),
|
||||
"app:mod/a",
|
||||
"entry",
|
||||
new CallableId(0),
|
||||
0,
|
||||
@ -335,14 +320,13 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
Span.none())),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new ModuleReference("app", ReadOnlyList.from("mod", "a"))),
|
||||
ReadOnlyList.from(new CallableSignatureRef(new ModuleId(0), "app:mod/a", "entry", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef(new ModuleId(0), "entry", 0, "() -> unit")),
|
||||
ReadOnlyList.empty());
|
||||
final var fileB = new IRBackendFile(
|
||||
new FileId(2),
|
||||
@ -350,7 +334,6 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction(
|
||||
new FileId(2),
|
||||
new ModuleId(0),
|
||||
"app:mod/b",
|
||||
"aux",
|
||||
new CallableId(0),
|
||||
6,
|
||||
@ -362,14 +345,13 @@ class IRBackendExecutableContractTest {
|
||||
ReadOnlyList.from(new IRBackendExecutableFunction.Instruction(
|
||||
IRBackendExecutableFunction.InstructionKind.RET,
|
||||
"",
|
||||
"",
|
||||
null,
|
||||
null,
|
||||
Span.none())),
|
||||
Span.none())),
|
||||
IRReservedMetadata.empty(),
|
||||
ReadOnlyList.from(new ModuleReference("app", ReadOnlyList.from("mod", "b"))),
|
||||
ReadOnlyList.from(new CallableSignatureRef(new ModuleId(0), "app:mod/b", "aux", 0, "() -> unit")),
|
||||
ReadOnlyList.from(new CallableSignatureRef(new ModuleId(0), "aux", 0, "() -> unit")),
|
||||
ReadOnlyList.empty());
|
||||
|
||||
final var aggregator = IRBackend.aggregator();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user