Share exact coordinate selection across retained graph, projection and call-boundary values. Index inverse operand occurrences for values without requiring defining operations; preserve PHI slots, unknown spaces, partial scope and evidence. Verify 250 OpenSSH SSA versions and 369 uses through both real MCP adapters. An equivalent retained-source task takes six core reads instead of 244; model costs and native speedups remain unproved. Pass 78 shared tests and actual catalog checks. Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com> Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
237 lines
6.5 KiB
JavaScript
237 lines
6.5 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { methods } from "./api.mjs";
|
|
import { freezeFacts } from "./fact-reads.mjs";
|
|
import {
|
|
indexOperationFacts,
|
|
createOperationViews,
|
|
} from "./native-operation-views.mjs";
|
|
|
|
const location = (space, offset = "0x38", size_bytes = 8) => ({
|
|
space,
|
|
offset,
|
|
size_bytes,
|
|
});
|
|
const value = (id, definition, extra = {}) => ({
|
|
id,
|
|
definition,
|
|
...location("register"),
|
|
is_constant: false,
|
|
is_input: definition === null,
|
|
is_annotation: false,
|
|
type_name: "",
|
|
...extra,
|
|
});
|
|
const slot = (input_index, value_id, predecessor = null) => ({
|
|
input_index,
|
|
value_id,
|
|
phi_predecessor: predecessor,
|
|
phi_predecessor_edge: predecessor === null ? null : `${predecessor}:0`,
|
|
});
|
|
function model(
|
|
coverage = { scope: "retained graph", memory_alias_dependencies: "unknown" },
|
|
) {
|
|
const values = [
|
|
value("v1", null),
|
|
value("v2", null, { space: "const", is_input: false, is_constant: true }),
|
|
value("v3", "0x10:0"),
|
|
value("v4", "0x11:0", location("unique", "0x9")),
|
|
value("v5", null, { space: null }),
|
|
value("v6", null, { size_bytes: 4 }),
|
|
];
|
|
const op = (id, opcode, inputs, output = null) => ({
|
|
id,
|
|
address: id.split(":")[0],
|
|
block: 0,
|
|
opcode,
|
|
inputs,
|
|
output,
|
|
statement: "unparseable display",
|
|
is_dead: false,
|
|
});
|
|
const operations = [
|
|
op("0x10:0", "CPUI_INT_ADD", [slot(0, "v1"), slot(1, "v1")], "v3"),
|
|
op(
|
|
"0x11:0",
|
|
"CPUI_MULTIEQUAL",
|
|
[slot(0, "v3", 8), slot(1, "v3", 9), slot(2, "v2", 10)],
|
|
"v4",
|
|
),
|
|
op("0x12:0", "CPUI_CALLOTHER", [
|
|
slot(0, "v5"),
|
|
slot(1, "v6"),
|
|
slot(2, "v2"),
|
|
slot(3, "v4"),
|
|
slot(4, null),
|
|
]),
|
|
];
|
|
freezeFacts({ values, operations });
|
|
return createOperationViews(
|
|
indexOperationFacts(operations, values, []),
|
|
coverage,
|
|
);
|
|
}
|
|
|
|
test("exact location batches preserve width, space, value versions and paging order", () => {
|
|
const m = model();
|
|
const locations = [
|
|
location("register", "0x38", 4),
|
|
location("register"),
|
|
location("register"),
|
|
];
|
|
const result = m.values({ locations });
|
|
assert.deepEqual(
|
|
result.items.map((v) => v.id),
|
|
["v6", "v1", "v3"],
|
|
);
|
|
assert.equal(result.total, 3);
|
|
assert.equal(result.location_coverage.unknown_space_count, 1);
|
|
assert.deepEqual(result.unretained_locations, []);
|
|
const page = m.values({ locations, offset: 1, limit: 1, fields: [] });
|
|
assert.deepEqual(page.items, [{ id: "v1" }]);
|
|
assert.equal(page.total, 3);
|
|
assert.equal(page.next_offset, 2);
|
|
assert.deepEqual(
|
|
m.values({ locations: [location("const")] }).items.map((v) => v.id),
|
|
["v2"],
|
|
);
|
|
});
|
|
|
|
test("location filters intersect IDs/input flags; unknown spaces are not known absent locations", () => {
|
|
const m = model();
|
|
const unknown = location("ram");
|
|
const result = m.values({
|
|
ids: ["v3", "v1", "vdead", "v6"],
|
|
locations: [location("register"), unknown],
|
|
is_input: true,
|
|
});
|
|
assert.deepEqual(
|
|
result.items.map((v) => v.id),
|
|
["v1"],
|
|
);
|
|
assert.deepEqual(result.missing, ["vdead"]);
|
|
assert.deepEqual(result.unretained_locations, [unknown]);
|
|
assert.equal(result.location_coverage.unknown_space_count, 1);
|
|
assert.equal(m.values({ ids: ["v5"] }).items[0].space, null);
|
|
const empty = () => m.values({ locations: [], ids: ["v1"] });
|
|
assert.equal(empty().total, 0);
|
|
assert.equal(empty().location_coverage.unknown_space_count, null);
|
|
assert.equal(
|
|
m.values({ locations: [location("register")], ids: [] }).total,
|
|
0,
|
|
);
|
|
});
|
|
|
|
test("value uses include repeated function-input/constant occurrences and exact PHI slots", () => {
|
|
const m = model();
|
|
const inputs = m.operationRelations({
|
|
kind: "value_uses",
|
|
seeds: ["v1", "vdead", "v1"],
|
|
});
|
|
assert.deepEqual(
|
|
inputs.items,
|
|
[0, 1].map((input_index) => ({
|
|
operation: "0x10:0",
|
|
input_index,
|
|
value_id: "v1",
|
|
definition: null,
|
|
phi_predecessor: null,
|
|
phi_predecessor_edge: null,
|
|
})),
|
|
);
|
|
assert.deepEqual(inputs.unretained_seeds, ["vdead"]);
|
|
assert.deepEqual(
|
|
m
|
|
.operationRelations({ kind: "value_uses", seeds: ["v2"] })
|
|
.items.map((r) => [r.operation, r.input_index]),
|
|
[
|
|
["0x11:0", 2],
|
|
["0x12:0", 2],
|
|
],
|
|
);
|
|
const uses = m.operationRelations({
|
|
kind: "value_uses",
|
|
seeds: ["v3", "v1"],
|
|
offset: 1,
|
|
limit: 2,
|
|
});
|
|
assert.equal(uses.total, 4);
|
|
assert.equal(uses.next_offset, 3);
|
|
assert.equal(uses.items[0].phi_predecessor_edge, "9:0");
|
|
assert.equal(uses.items[0].input_index, 1);
|
|
assert.equal(uses.items[1].definition, null);
|
|
assert.equal(uses.items[1].value_id, "v1");
|
|
assert.deepEqual(
|
|
uses.items[0],
|
|
m.operationRelations({
|
|
kind: "operands",
|
|
seeds: ["0x11:0"],
|
|
input_indices: [1],
|
|
}).items[0],
|
|
);
|
|
});
|
|
|
|
test("reverse indexes preserve partial-use coverage and immutable source facts", () => {
|
|
const m = model({
|
|
scope: "bounded projection",
|
|
uses_scope: "selected-operations-only",
|
|
memory_alias_dependencies: "unknown",
|
|
});
|
|
const result = m.operationRelations({ kind: "value_uses", seeds: ["v3"] });
|
|
assert.equal(result.relation_coverage.scope, "selected-operations-only");
|
|
assert.throws(() => {
|
|
result.items[0].value_id = "vdead";
|
|
}, TypeError);
|
|
assert.throws(() => {
|
|
m.values({ locations: [location("register")] }).items[0].offset = "0x99";
|
|
}, TypeError);
|
|
assert.equal(
|
|
m.operationRelations({ kind: "value_uses", seeds: ["v3"] }).total,
|
|
2,
|
|
);
|
|
});
|
|
|
|
test("named contracts distinguish location coordinates, value seeds and operand slot filters", () => {
|
|
const good = { snapshot: "snap_test", locations: [location("ram")] };
|
|
assert.equal(methods.values.input.safeParse(good).success, true);
|
|
for (const coordinate of [
|
|
location(null),
|
|
location("ram", "0x00"),
|
|
location("ram", "0x38", 0),
|
|
])
|
|
assert.equal(
|
|
methods.values.input.safeParse({ ...good, locations: [coordinate] })
|
|
.success,
|
|
false,
|
|
);
|
|
assert.equal(
|
|
methods.values.input.safeParse({ ...good, locations: [] }).success,
|
|
true,
|
|
);
|
|
assert.equal(
|
|
methods.relations.input.safeParse({
|
|
snapshot: "snap_test",
|
|
kind: "value_uses",
|
|
seeds: ["v1"],
|
|
}).success,
|
|
true,
|
|
);
|
|
assert.equal(
|
|
methods.relations.input.safeParse({
|
|
snapshot: "snap_test",
|
|
kind: "value_uses",
|
|
seeds: [1],
|
|
}).success,
|
|
false,
|
|
);
|
|
assert.equal(
|
|
methods.relations.input.safeParse({
|
|
snapshot: "snap_test",
|
|
kind: "value_uses",
|
|
seeds: ["v1"],
|
|
input_indices: [0],
|
|
}).success,
|
|
false,
|
|
);
|
|
});
|